tox分布式通信的python接口

dendrotox的Python项目详细描述


dendrotox是一个python模块,旨在使python代码能够 与Tox分布式通信交互 网络,包括与人交流的脚本 或其他脚本。它使用2015年版的 ToxCore 以及ratox用于与 毒性网络和megaparsex 用于分析。

尤其是,dendrotox与 fifo tox客户端ratoxdendrotox还提供发送和接收消息的功能, 解析输入、发送文件、请求确认、提供 信息,如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

设置FestivaleSpeak,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"

未来

正在考虑的是用于接听电话的语音短信。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法设置@Async方法   在Java中设置链表   未设置id时遇到java StaleObjectStateException   java如何保存程序的状态并加载它?   java映射类和schemaderived类之间有什么区别?   控制器类中的java全局变量在最新会话打开时被覆盖   java Hystrix和连接池   java Sonar在我不关闭ignite对象时引发拦截器问题   java无法在Junit TestCase中为控制器设置Mockito值   java保证异步传递消息   java如何高亮显示按钮,直到为微调器提供有效值?   java在Android中使用ImageView控件创建错误   JMX垃圾收集和系统之间的java差异。gc()?   java在尝试向标记添加信息窗口时卡住了?   java JavaFX检测与后台的冲突   java将光标放在按钮上时更改按钮的位置   java Maven。如何从paren pom继承配置文件。xml?   带空格的Java填充字符串   java将两个对象设置为相等,并找到其布尔结果