tox分布式通信的python接口
dendrotox的Python项目详细描述
dendrotox是一个python模块,旨在使python代码能够 与Tox分布式通信交互 网络,包括与人交流的脚本 或其他脚本。它使用2015年版的 ToxCore 以及ratox用于与 毒性网络和megaparsex 用于分析。
尤其是,dendrotox与 fifo tox客户端ratox。 dendrotox还提供发送和接收消息的功能, 解析输入、发送文件、请求确认、提供 信息,如IP地址和天气信息,并运行 任意命令,包括启动反向ssh的功能 连接并重新启动脚本。
毒性
tox是一个点对点即时消息和视频呼叫协议 具有端到端加密。
下面是一个典型的毒物识别码,一个接触者可以给另一个接触者 联系以便连接:
56A1ADE4B65B86BCD51CC73E2CD4E542179F47959FE3E0E21B4B0ACDADE5185520B3E6FC5D64 <--------------------------------------------------------------><------><--> ^ ^ ^ | | | | | | PUBLIC KEY NOSPAM CHECKSUM
tox id是一个公钥(64个字符),nospam值(8 字符)和以十六进制连接的校验和(4个字符) 格式。结果是一个76个字符的字符串。
公钥由nacl(网络和加密)生成 库)crypto_box_keypair函数。它是32字节(64个十六进制 字符)。nospam值是生成的伪随机数 附加到公钥。发送的连接请求没有正确的 忽略nospam值。nospam值可以随时更改 在不影响公钥的情况下,停止对当前 身份证,为了对付垃圾邮件。校验和是 公钥和nospam值。它用于快速验证 毒性标识的完整性。
因为tox没有中央服务器,所以有必要知道 在客户端完全连接之前已经在网络中。 列出了一些节点here。
设置
sudo apt install \ autoconf \ autotools-dev \ automake \ build-essential \ checkinstall \ check \ cmake \ festival \ git \ libtool \ libsodium-dev \ sox \ yasm
mkdir ~/Tox
cd ~/Tox
安装ffmpeg。
sudo apt install lame libmp3lame-dev wget http://ffmpeg.org/releases/ffmpeg-3.3.2.tar.bz2 tar -xvf ffmpeg-3.3.2.tar.bz2 cd ffmpeg-3.3.2 ./configure --enable-libmp3lame make -j$(nproc) sudo make install cd .. rm ffmpeg-3.3.2.tar.bz2 rm -rf ffmpeg-3.3.2
设置Festival, eSpeak,pico tts和 deep_throat用于演讲 能力。
sudo apt install \ festival \ espeak \ libttspico0 \ libttspico-utils \ libttspico-data sudo pip install deep_throat
安装钠密码库。
git clone https://github.com/jedisct1/libsodium.git cd libsodium git checkout tags/1.0.3 ./autogen.sh ./configure make check sudo checkinstall --install --pkgname libsodium --pkgversion 1.0.0 --nodoc sudo ldconfig cd ..
安装libvpx编解码器。
git clone https://chromium.googlesource.com/webm/libvpx cd libvpx git checkout tags/v1.4.0 ./configure --enable-shared --disable-static make -j$(nproc) sudo make install cd ..
安装毒药芯。
wget --content-disposition https://codeload.github.com/irungentoo/toxcore/tar.gz/api_old_version tar -xvf toxcore-api_old_version.tar.gz cd toxcore-api_old_version autoreconf --install --force mkdir _build cd _build ../configure make -j$(nproc) sudo make install sudo ldconfig cd ../..
安装ratox。
git clone https://github.com/wdbm/ratox.git cd ratox make -j$(nproc) sudo make install
安装Dendrotox。
sudo pip install dentrodox
首次启动ratox时,它将创建tox配置文件 文件.ratox.tox在工作目录中存储tox配置文件 细节。运行时,文件id包含tox id。
示例
dendrotox以以下方式导入和启动:
importdendrotoxdendrotox.start_messaging()print("Tox ID: "+dendrotox.self_ID())
发送消息
消息可以通过以下方式发送给联系人,其中 使用包含其tox id:
的字符串指定dendrotox.send_message(contact=contact,text="oohai")
一条消息可以通过以下方式发送给多个联系人,其中 contacts被指定为包含contacts'tox的字符串列表 身份证。
dendrotox.send_message(contacts=[contact_1,contact_2],text="sup")
可以按以下方式向所有联系人发送消息。
dendrotox.send_message(contacts="all",text="yo yo yo")
接收消息
可以在 以下方式:
messages=dendrotox.received_messages()print(messages[0].sender())
message=dendrotox.last_received_message()print(message)
发送声音呼叫
有声电话可以通过几种方式发送给联系人。一种方法是 发送声音文件:
dendrotox.send_call(contact=contact,filepath="alert.wav")
另一种方法是使用合成语音:
dendrotox.send_call_synthesized_speech(contact=contact,text="This is an alert.")
另一种方法是使用麦克风:
dendrotox.send_call(contact=contact,record=True)
使用麦克风发送声音呼叫可以具有录制持续时间 规范以确保流程不会挂起:
dendrotox.send_call(contact=contact,record=True,duration_record=30)
接收声音呼叫
可以通过几种方式从联系人接收声音呼叫。一种方法是 使用扬声器:
dendrotox.receive_call(contact=contact)
如果未指定联系人,则第一个联系人标识为呼叫 用于接收呼叫:
dendrotox.receive_call()
另一种方法是接收声音文件:
dendrotox.receive_call(filepath="call.wav")
见模块代码和示例bot代码,用于更高级的使用,包括 调用、消息解析、确认和运行命令。
Detrotox_alert.py
脚本dendrotox_alert.py是一个命令行脚本,可以是 用于向联系人发送消息。它试图与任何 在尝试向其发送消息之前指定的联系人。如果没有 已指定联系人,它将尝试向所有已知联系人发送消息 联络。
dendrotox_alert.py --text="alert"
未来
正在考虑的是用于接听电话的语音短信。