{"id":13660753,"url":"https://github.com/azlux/pymumble","last_synced_at":"2025-04-24T23:30:41.508Z","repository":{"id":45978709,"uuid":"61753491","full_name":"azlux/pymumble","owner":"azlux","description":"Mumble client implementation in Python","archived":false,"fork":true,"pushed_at":"2024-05-14T14:39:21.000Z","size":2053,"stargazers_count":132,"open_issues_count":26,"forks_count":65,"subscribers_count":11,"default_branch":"pymumble_py3","last_synced_at":"2025-04-18T02:22:25.336Z","etag":null,"topics":["library","mumble","voice"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Robert904/pymumble","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/azlux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-22T21:43:43.000Z","updated_at":"2025-03-09T10:39:00.000Z","dependencies_parsed_at":"2023-02-15T19:10:44.330Z","dependency_job_id":null,"html_url":"https://github.com/azlux/pymumble","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azlux%2Fpymumble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azlux%2Fpymumble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azlux%2Fpymumble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azlux%2Fpymumble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/azlux","download_url":"https://codeload.github.com/azlux/pymumble/tar.gz/refs/heads/pymumble_py3","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250727441,"owners_count":21477316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["library","mumble","voice"],"created_at":"2024-08-02T05:01:25.354Z","updated_at":"2025-04-24T23:30:41.266Z","avatar_url":"https://github.com/azlux.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Important Announcement\r\nHello everyone,\r\nI don't know what to do with this project.\r\n\r\nFirst, let's look at the problems and possible solutions:\r\n1. I don't use mumble anymore, working on a bot you don't use leads to a lack of testing and motivation.\r\n2. I don't code like I used to, my hobbies have changed, I maintain stuff I still use, but no real coding anymore.\r\n3. pymumble isn't asynchronous. Many workarounds/patches were used to avoid freezing. Even now the latency increase with connexion time because of this.\r\n\r\nEven if the asyncio needs a complete rewrite, I'm looking for maintainers.\r\n\r\nMumble teams is working on a mumble librairy, I hope it will replace this projet.\r\nUntil that time, I don't archive this project.\r\n\r\nIt was really fun, thank you all for your support!\r\n\r\nSee you in space, cowboy.\r\n\r\n-- Azlux\r\n\r\n-----\r\n\r\n# PYMUMBLE python library\r\n\r\n## Description\r\nThis library acts as a mumble client, connecting to a murmur server, exchanging states and audio.\r\n\r\n[![Build Status](https://ci.azlux.fr/api/badges/azlux/pymumble/status.svg)](https://ci.azlux.fr/azlux/pymumble)\r\n\r\nThe wiki/API explanation is [HERE](https://github.com/azlux/pymumble/blob/pymumble_py3/API.md).\r\n\r\n## Installing/Getting started\r\n\r\n### Requirements\r\n\r\n**`libopus` is a mandatory OS library when sending and receiving audio**. Please refer to your package manager to install it.\r\n\r\n### With pip\r\n\r\n- `pip install pymumble`\r\n- You need to `import pymumble_py3 as pymumble` into your code.\r\n\r\n[![PyPI version](https://badge.fury.io/py/pymumble.svg)](https://badge.fury.io/py/pymumble)   Deployment script is available [here](https://packages.azlux.fr/scripts/pymumble.txt)\r\n\r\n### With git\r\n\r\n- `git clone https://github.com/azlux/pymumble.git`\r\n- `pip3 install -r requirements.txt`\r\n- You need to `import pymumble.pymumble_py3 as pymumble` into your code.\r\n- It's will be the same if you use a git sub-module\r\n\r\n## CHANGELOG\r\n\r\nThe changelog is available on the release note.\r\n\r\n## Applications list using `pymumble`\r\n\r\nFor client application examples, you can check this list :\r\n- [Botamusique](https://github.com/azlux/botamusique)\r\n- [MumbleRadioPlayer](https://github.com/azlux/MumbleRadioPlayer) (archived)\r\n- [Abot](https://github.com/ranomier/pymumble-abot)\r\n- [MumbleRecbot](https://github.com/Robert904/mumblerecbot) (deprecated)\r\n\r\n## Features\r\n\r\n### Currently implemented:\r\n- Compatible with Mumble 1.3 and normally until 1.2.2\r\n- Support OPUS. Speex is not supported\r\n- Receive and send audio, get users and channels status\r\n- Set properties for users (mute, comments, etc.) and go to a specific channel\r\n- Kick and ban users\r\n- Callback mechanism to react on server events\r\n- Manage the blobs (images, long comments, etc.)\r\n- Can send text messages to user and channel\r\n- Ping statistics\r\n- Audio targets (whisper, etc.)\r\n- Read ACL groups\r\n\r\n### What is missing:\r\n\r\n\u003e  I don't need these features, so if you want one, open an issue and I will work on it.\r\n\r\n- UDP media. Currently it works only in TCP tunneling mode (the standard fallback of Mumble when UDP is not working)\r\n- Some server management features (user creation, editing ACLs, etc.)\r\n- Positioning is not managed, but it should be easy to add\r\n- Probably a lot of other small features\r\n- **WONTFIX** The **Python 2** version is available in the [master branch](https://github.com/azlux/pymumble/tree/master). It's working! But since we have moved on to Python 3, the Python 2 version will not receive future improvements.\r\n\r\n## Architecture\r\n\r\nThe library is based on the Mumble object, which a thread. When started, it will try\r\nto connect to the server and start exchanging the connection messages.\r\nThis thread implements a loop which takes care of the pings, sends commands to the server,\r\nchecks for incoming messages including audio, and checks for audio to be sent out.\r\nThe rate of this loop is controlled by how long it will wait for an incoming message before continuing.\r\n\r\nYou can check if the thread is alive with `mumble_object.is_alive()`.\r\nThe Mumble thread will stop if it disconnects from the server.\r\nThis can be useful if you need to restart the thread when using a supervisor.\r\n\r\n\r\n## Thanks\r\n\r\n- [@raylu](https://github.com/raylu) for making `pymumble` speak into channels\r\n- [@schlarpc](https://github.com/schlarpc) for fixes on buffer\r\n- [@Robert904](https://github.com/Robert904) for the inital pymumble implementation\r\n\r\nThis library is a fork of a fork of a fork (initial from https://github.com/Robert904/pymumble).\r\nBut we will try to make `pymumble` better.\r\nSo I consider this fork (the [@Azlux](https://github.com/azlux/pymumble) one) the current live fork of `pymumble`.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazlux%2Fpymumble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazlux%2Fpymumble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazlux%2Fpymumble/lists"}