Fmdpy
music downloader written in python. (Uses jiosaavn API)
Install / Use
/learn @Liupold/FmdpyREADME
FMDPY
,dPYb, 8I
IP'`Yb 8I
I8 8I 8I
I8 8' 8I
I8 dP ,ggg,,ggg,,ggg, ,gggg,8I gg,gggg, gg gg
I8dP ,8" "8P" "8P" "8, dP" "Y8I I8P" "Yb I8 8I
I8P I8 8I 8I 8I i8' ,8I I8' ,8i I8, ,8I
,d8b,_ ,dP 8I 8I Yb,,d8, ,d8b,,I8 _ ,d8' ,d8b, ,d8I
PI8"8888P' 8I 8I `Y8P"Y8888P"`Y8PI8 YY88888PP""Y88P"888
I8 `8, I8 ,d8I'
I8 `8, I8 ,dP'8I
I8 8I I8 ,8" 8I
I8 8I I8 I8 8I
I8, ,8' I8 `8, ,8I
"Y8P' I8 `Y8P"
INSTALL
From PIP:
python -m pip install --upgrade fmdpy
From github:
python -m pip install git+https://github.com/Liupold/fmdpy
UPDATE
fmdpy -u
USAGE
Usage: fmdpy [OPTIONS] [SEARCH]...
FMDPY.
Download music with metadata
For multiple download you can use something like:
"fmdpy: 1, 2, 3, 5:8", (This will download 1, 2, 3, 5, 6, 7, 8)
"fmdpy: 1.p, 2.p", (This will play (stream) 1, 2) (using player_cmd)
"fmdpy: 5.p", (This will find lyric of 5)
"fmdpy: 3.a", (This will go to album which 3 belongs to)
"fmdpy: <SEARCH/URL>", (This will search songs based on <SEARCH/URL>).
Streaming, downloading can also be mixed. If done so downloading will be
done prior to streaming.
-f native: save to native container [Default](ffmpeg not req.) (-b is
ignored)
Options:
-c, --count INTEGER Max Number of results
-f, --fmt TEXT Format of the audio file.
-b, --bitrate INTEGER Bitrate in kb, (250 is default)
-m, --multiple INTEGER number of concurrent downloads.
-d, --directory PATH Specify the folder.
-F, --filename TEXT filename format.
-l, --lyrics Add lyrics
-g, --gen generate the config file.
-u, --update Update: (for pip only)
-v, --version display version
--help Show this message and exit
CONFIG
The default location of config file is ~/.fmdpy.ini and can be set
using env var FMDPY_CONFIG_FILE
The sample file is available in repo. example.ini
This is by no means necessary for the operation.
To generate the config file use fmdpy -g
SPOTIFY support
It can download playlist from spotify given the following is set in config file.
[API_KEYS]
spotify_client_id =
spotify_client_secret =
Lyrics from lyrics genius
It can also add lyrics from lyricsgenius into the meta data given the following is set in config file.
[API_KEYS]
lyricsgenius =
Filename and directory
file name are directory format can be specified using special characters (version 0.6+)
the following must be set.
| Strings | Replaced By |
|----------|---------------------------------------|
| $name | The Name of the song. |
| $album | The Name of the album. |
| $artist| The Name of the artist. |
| $year | Year the song was published. |
If the specified directory is absent it will be created recursively.
Directory Example:
default_directory = /home/<YOUR USERNAME>/Music/$artist/$album/
Streaming
For Streaming (version: 0.5+) is required and
[STREAM]
player_cmd =
(The default player_cmd uses mpv)
in player_cmd The following strings will be replaced:
| Strings | Replaced By |
|----------|---------------------------------------|
| $audio | The URL of the music file. |
| $cover | The URL of the cover art file. (JPEG) |
| $title | SONG_NAME [ARTIST_NAME] |
vlc example
player_cmd = ['vlc', '$audio']
EXAMPLE

Related Skills
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.7kCommit, push, and open a PR
