ytm-yld is a command-line utility able to get your all-time favourite songs from YouTube Music Your Likes playlist.
Features:
Instructions per version may differ, so if you are looking for instructions on previous versions, look into a specific version tag or commit accordingly.
If you have Python installed you can install the dependencies from requirements.txt
and run main.py
, with the same directory tree. (9.0.0+)
The latest release and its notes can be found here.
OS | Download | Size | SHA256 |
---|---|---|---|
Windows | https://github.com/pepershukov/ytm-yld/releases/download/v9.0.1/ytm-yld_win.exe | 11MB (11590006) | F5640004B95B217B8FDC39BBAF3B8BEED0892D04942ABB58C0C02D0AF19DC6C2 |
Windows 8+ x64
The requirements download are listed in the requirements.txt
in addition to Python pip packages needed with this project.
They are only necessary if you are to download music. For other parts of the app, you don't need them.
YouTube.com cookie is not needed anymore as ytmusicapi
handles OAuth. (9.0.0+)
usage: ytm-yld [-h] [--version] [--update] [--config [file]] [--headers [file]] [--yt-dlp [file]]
[--ffmpeg [folder]] [--output [folder]] [--mode [... ...]] [--json [file]] [--no-title [id,id]]
[--no-artist [id,id]] [--no-album [id,id]] [--no-cover [id,id]] [--no-lyrics [id,id]]
options:
-h, --help show this help message and exit
--version, -v show program's version number and exit
--update, -u check for update and exit
General options:
--config [file] absolute path to config file containing sector 'ytm-yld'
--headers [file] absolute path to file of YT headers
--yt-dlp [file] absolute path to yt-dlp bin
--ffmpeg [folder] absolute path to folder of ffmpeg and ffprobe bin
--output [folder] absolute path to folder where you want your music synced/download/playlist-to-text file
--mode [... ...] mode (t|d|s|m|j) to request for the application to complete
--json [file] absolute path to existing JSON playlist metadata file instead of downloading
Music options:
For these, it can act as a global parameter for all songs if no specific IDs are passed.
--no-title [id,id] whether to include the title of the songs or not
--no-artist [id,id] whether to include the artist of the songs or not
--no-album [id,id] whether to include the album name of the songs or not
--no-cover [id,id] whether to include the album art/cover of the songs or not
--no-lyrics [id,id] whether to include the lyrics of the songs or not
Make sure that the files within the output folder don't have names like ones used by this app, as they could be deleted.
If you choose not to pass the arguments, you will have to enter the paths upon the application input request.
(1.1.0+) If the paths turn out to be invalid or non-existant, ~the application will throw out an error~ (6.0.0+) the application will ask for them recursively until success.
On first run, without the --headers
arg, you will be asked to login. After that, the header is saved to the output
folder and the headers can be used again until their expiry.
You will be asked upon starting the application to select the mode of your choice.
There are currently five modes:
t
)
d
)
s
) (2.0.0+)
j
) (3.0.0+)
m
) (4.0.0+)
You can pass the config file under the --config
argument.
.ini
-like formatytm-yld
Here is an example of a full config file:
[ytm-yld]
ffmpeg = absolute/path/to/ffmpeg
yt-dlp = absolute/path/to/yt_dlp.exe
headers = absolute/path/to/headers.json
output = absolute/path/to/output
mode = tdsjm
json = absolute/path/to/songs.json
# These options have two ways
# 1. Selecting 'true' - choosing it globally for all songs
# 2. Selecting IDs in a list - MUST put DOUBLE SPEECH-MARKS!!
no-title = ["1-iKwZKc7Ok"]
no-artist = ["1-iKwZKc7Ok", "FXovf5dsRTw"]
no-album = true
no-cover = TRUE
no-lyrics = True