,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"
From PIP:
python -m pip install --upgrade fmdpy
From github:
python -m pip install git+https://github.com/Liupold/fmdpy
fmdpy -u
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
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
It can download playlist from spotify given the following is set in config file.
[API_KEYS]
spotify_client_id =
spotify_client_secret =
It can also add lyrics from lyricsgenius into the meta data given the following is set in config file.
[API_KEYS]
lyricsgenius =
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/
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] |
player_cmd = ['vlc', '$audio']