2ee3f82744
* Fixed encryption Before the fix the whole last block encrypted were appended to the encrypted output. This caused a wrong checksum calculation and resulted in a wrong tag prepended to the packet, which the Mumble server discarded most of the times (in some lucky cases the remaining length. To fix this I took inspiration from: https://github.com/ianling/mumpy/blob/dev/mumpy/mumblecrypto.py * Added a default decryption plain_length * Renamed send_udp to the existing send_packet_udp * Removed error-prone length parameter |
||
---|---|---|
examples | ||
pymumble_py3 | ||
.drone.yml | ||
.gitignore | ||
API.md | ||
LICENSE | ||
README.md | ||
requirements.txt | ||
setup.py | ||
TODO |
PYMUMBLE python library
Description
This library acts as a mumble client, connecting to a murmur server, exchanging states and audio.
The wiki/API explanation is HERE.
Installing/Getting started
Requirements
libopus
is a mandatory OS library. Please refer to your package manager to install it.
With pip
pip install pymumble
- You need to
import pymumble_py3 as pymumble
into your code.
Deployment script is available here
With git
git clone https://github.com/azlux/pymumble.git
pip3 install -r requirements.txt
- You need to
import pymumble.pymumble_py3 as pymumble
into your code. - It's will be the same if you use a git sub-module
CHANGELOG
The changelog is available on the release note.
Applications list using pymumble
For client application examples, you can check this list :
- Botamusique
- MumbleRadioPlayer (archived)
- Abot
- MumbleRecbot (deprecated)
Features
Currently implemented:
- Compatible with Mumble 1.3 and normally until 1.2.2
- Support OPUS. Speex is not supported
- Receive and send audio, get users and channels status
- Set properties for users (mute, comments, etc.) and go to a specific channel
- Kick and ban users
- Callback mechanism to react on server events
- Manage the blobs (images, long comments, etc.)
- Can send text messages to user and channel
- Ping statistics
- Audio targets (whisper, etc.)
- Read ACL groups
What is missing:
I don't need these features, so if you want one, open an issue and I will work on it.
- UDP media. Currently it works only in TCP tunneling mode (the standard fallback of Mumble when UDP is not working)
- Some server management features (user creation, editing ACLs, etc.)
- Positioning is not managed, but it should be easy to add
- Probably a lot of other small features
- WONTFIX The Python 2 version is available in the master branch. It's working! But since we have moved on to Python 3, the Python 2 version will not receive future improvements.
Architecture
The library is based on the Mumble object, which a thread. When started, it will try to connect to the server and start exchanging the connection messages. This thread implements a loop which takes care of the pings, sends commands to the server, checks for incoming messages including audio, and checks for audio to be sent out. The rate of this loop is controlled by how long it will wait for an incoming message before continuing.
You can check if the thread is alive with mumble_object.is_alive()
.
The Mumble thread will stop if it disconnects from the server.
This can be useful if you need to restart the thread when using a supervisor.
Thanks
- @raylu for making
pymumble
speak into channels - @schlarpc for fixes on buffer
- @Robert904 for the inital pymumble implementation
This library is a fork of a fork of a fork (initial from https://github.com/Robert904/pymumble).
But we will try to make pymumble
better.
So I consider this fork (the @Azlux one) the current live fork of pymumble
.