Mopidy extension for streaming Quran from mp3quran.net
Project description
Mopidy-Mp3Quran
Mopidy extension for streaming Quran recitations and radio stations from Mp3Quran.
Features
- Browse and stream Quran recitations from 100+ reciters
- Listen to Quran radio stations
- Search reciters by name or recitation style (Riwaya)
- Configurable language, cache TTL, and request timeout
- Caching to reduce API calls
Installation
From PyPI:
pip install Mopidy-Mp3Quran
From source:
git clone https://github.com/aymanbagabas/mopidy-mp3quran.git
cd mopidy-mp3quran && pip install .
Configuration
By default, this extension is enabled. Modify the Mopidy configuration file to customize:
[mp3quran]
enabled = true
language = english
cache_ttl = 3600
timeout = 10
Configuration options:
- language - API language (default:
English). Controls the language of reciter and surah names. Accepts both the full name (e.g.English,arabic) and the locale code (e.g.eng,ar), case-insensitive.
Supported languages:
| Locale | Language | Native |
|---|---|---|
ar |
Arabic | العربية |
eng |
English | English |
fr |
French | Français |
ru |
Russian | Русский |
de |
German | Deutsch |
es |
Spanish | Español |
tr |
Turkish | Türkçe |
cn |
Chinese | 中文 |
th |
Thai | ไทย |
ur |
Urdu | اردو |
bn |
Bengali | বাংলা |
bs |
Bosnian | Bosanski |
ug |
Uyghur | ئۇيغۇرچە |
fa |
Persian | فارسی |
tg |
Tajik (Cyrillic) | тоҷикӣ |
ml |
Malayalam | മലയാളം |
tl |
Tagalog | Tagalog |
id |
Indonesian | Indonesia |
pt |
Portuguese | Português |
ha |
Hausa | Hausa |
sw |
Swahili | Kiswahili |
- cache_ttl - Cache time-to-live in seconds (default:
3600). Set to0to disable caching. - timeout - HTTP request timeout in seconds (default:
10).
Usage
Browse the library tree:
- Mp3Quran (root) — top-level entry
- Languages — switch to a different language
- Reciters — list of all available reciters
- Radios — list of all radio stations
- Select a reciter to see their recitation versions (Moshaf, e.g. Hafs, Warsh)
- Select a moshaf to see its available surahs
- Select a surah to play it
Use search to find reciters or radio stations by name.
Development
git clone https://github.com/aymanbagabas/mopidy-mp3quran.git
cd mopidy-mp3quran
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Run the test suite:
pytest
Docker
Run with Docker Compose (includes Mopidy + Snapcast server):
docker compose up
This starts a single container with Mopidy and Snapcast server. Mopidy outputs audio to a named pipe that Snapcast reads from.
| Port | Service |
|---|---|
| 6600 | Mopidy MPD |
| 6680 | Mopidy HTTP |
| 1704 | Snapcast stream |
| 1705 | Snapcast control |
| 1780 | Snapcast HTTP/Web UI |
Configuration files are in docker/mopidy.conf and docker/snapserver.conf.
Project resources
Changelog
v0.2.1 (2026-04-28)
- Support fuzzy search for reciters, surahs, radios, and moshafs
v0.2.0 (2026-04-26)
- Migrate to mp3quran.net v3 REST API
- Support multiple moshaf (recitation versions) per reciter
- Add riwayat (narration types) support
- Language config now accepts both full names and locale codes (case-insensitive)
- Migrate to
pyproject.tomlwithsrclayout - Migrate to Mopidy 4.x API (search on LibraryProvider)
- Fix proxy configuration bug (config key)
- Fix search dropping reciter results
- Add unit test suite (102 tests)
- Remove dead
parse_uri()function - Migrate to Python 3
- Add error handling for all API calls
- Add caching with configurable TTL
- Add search functionality
- Add configuration options (language, cache_ttl, timeout)
- Add type hints and docstrings
- Improve error handling in URI parsing and lookup
v0.1.0 (2018-03-05)
- Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mopidy_mp3quran-0.2.1.tar.gz.
File metadata
- Download URL: mopidy_mp3quran-0.2.1.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdef4ce492b2729a7bee0af5ce7dab726fa064f83cc14e9fc44c874196609a10
|
|
| MD5 |
6830ae4c781e10981b835864ae9c0331
|
|
| BLAKE2b-256 |
939ef995776187282c7808b4d0a268f99377e9f41354fb9c3e9db9c387a86a54
|
Provenance
The following attestation bundles were made for mopidy_mp3quran-0.2.1.tar.gz:
Publisher:
release.yml on aymanbagabas/mopidy-mp3quran
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mopidy_mp3quran-0.2.1.tar.gz -
Subject digest:
cdef4ce492b2729a7bee0af5ce7dab726fa064f83cc14e9fc44c874196609a10 - Sigstore transparency entry: 1396931810
- Sigstore integration time:
-
Permalink:
aymanbagabas/mopidy-mp3quran@fff5c09141829da4ee23aa73b548661bcc17d466 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/aymanbagabas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fff5c09141829da4ee23aa73b548661bcc17d466 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mopidy_mp3quran-0.2.1-py3-none-any.whl.
File metadata
- Download URL: mopidy_mp3quran-0.2.1-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf196a5731ea5f553d41dc86fc9f0a90fe0236cbe56cc7f4d3e6ad5d4ff58ff7
|
|
| MD5 |
9bb1d3e1abfd589634b0208f2c554fef
|
|
| BLAKE2b-256 |
4f477450be5c4dcf75b5019bc7f03f241f67c1c1068afef21a7c808189abe8f9
|
Provenance
The following attestation bundles were made for mopidy_mp3quran-0.2.1-py3-none-any.whl:
Publisher:
release.yml on aymanbagabas/mopidy-mp3quran
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mopidy_mp3quran-0.2.1-py3-none-any.whl -
Subject digest:
bf196a5731ea5f553d41dc86fc9f0a90fe0236cbe56cc7f4d3e6ad5d4ff58ff7 - Sigstore transparency entry: 1396931830
- Sigstore integration time:
-
Permalink:
aymanbagabas/mopidy-mp3quran@fff5c09141829da4ee23aa73b548661bcc17d466 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/aymanbagabas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fff5c09141829da4ee23aa73b548661bcc17d466 -
Trigger Event:
push
-
Statement type: