Skip to content
/ fmdpy Public

music downloader written in python. (Uses jiosaavn API)

License

Notifications You must be signed in to change notification settings

Liupold/fmdpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FMDPY

PIP-PYVERSION license PIP-VERSION PIP-STATUS Codacy Badge

CI-STATUS CD-STATUS

Downloads


 ,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

example.gif