An open-source app for effortlessly transferring playlists from YouTube Music to Spotify.
Why?
By setting up a Developer account and creating your own credentials (like keys), you are ensuring that the app connects to your account in a safe way without sharing your login details with anyone. It gives you full control over what the app can access and helps keep your Spotify account secure.
http://localhost:8888/callback
Download the latest version from the releases page.
[!NOTE]
Windows: Windows Defender may interrupt the app from running. Click on more info and allow the program to run.Linux: You need to run the app from terminal, if you want the to know the progress of the transfer.
Using pip or pipx:
If you have Python installed, you can install the app using pipx (recommended) or pip.
pipx install ytm2spt
or
pip install ytm2spt
After installation, you can run the app using the command ytm2spt
.
When you run the executable, you will be prompted to enter your Spotify credentials.
If you click on "Private Playlist", you will be prompted to enter get your Youtube OAuth credentials if not already set.
[!TIP]
If you find this project useful or interesting, please consider giving it a 🌟star! It helps others discover it too!
Python3 is required to run the app. You can download it from python.org for Windows.
pip install .
python ytm2spt.py
.env.sample
to .env
source .env
env.bat
file by adding your credentials in these lines
set SPOTIFY_USER_ID=<your_user_id>
set SPOTIFY_CLIENT_ID=<your_client_id>
set SPOTIFY_CLIENT_SECRET=<your_client_secret>
env.bat
[!NOTE]
If the environment variables are not set, you may need to restart your terminal or IDE.
pip install -r requirements.txt
Run the following command to login to your Youtube account and save the credentials to ytmusicapi-oauth.json
ytmusicapi-oauth
$ source .env
$ ytm2spt -h
usage: ytm2spt [-h] -yt YOUTUBE_URL_OR_ID
[-sp SPOTIFY_URL_OR_ID | -spname SPOTIFY_PLAYLIST_NAME]
[-ytauth YOUTUBE_OAUTH_JSON]
[-n | -d] [-l LIMIT]
options:
-h, --help show this help message and exit
-yt YOUTUBE_URL_OR_ID, --youtube-url-or-id YOUTUBE_URL_OR_ID
Youtube Playlist URL or ID
-sp SPOTIFY_URL_OR_ID, --spotify-url-or-id SPOTIFY_URL_OR_ID
Spotify Playlist URL or ID
-spname SPOTIFY_PLAYLIST_NAME, --spotify-playlist-name SPOTIFY_PLAYLIST_NAME
Spotify Playlist Name (Default: Youtube Playlist Name)
-ytauth YOUTUBE_OAUTH_JSON, --youtube-oauth-json YOUTUBE_OAUTH_JSON
Youtube OAuth JSON filepath (run 'ytmusicapi-oauth')
-n, --create-new Force create a new playlist
-d, --dryrun Do not add to Spotify
-l LIMIT, --limit LIMIT
Limit the number of songs to fetch
$ ytmusicapi-oauth -h
usage: ytmusicapi-oauth [-h] [-b] [file]
positional arguments:
file file path to store the json (Default: ytmusic-oauth.json)
options:
-h, --help show this help message and exit
-b, --open-browser open browser for OAuth login (Default: True)
Sample Playlist: Pop Certified (YouTube Music to Spotify)
# Pass any link containing a youtube playlist ID
# Sets same name as youtube playlist
$ python ytm2spt.py -yt "https://music.youtube.com/playlist?list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU"
# Pass just the youtube playlist ID
# Set a custom name for the playlist
$ python ytm2spt.py -yt "CLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -spname "Pop Certified"
# Pass link of a private youtube playlist
# Provide the path to the oauth.json file
$ python ytm2spt.py -yt "https://music.youtube.com/playlist?list=PLz96m0PSfi9p8ABcEcUlSMVmz7sN-IEFu" -ytauth "oauth.json"
# Pass an existing spotify playlist URL or ID
# Limit the number of songs to fetch
# Dry run mode
$ python ytm2spt.py -yt "CLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -sp "https://open.spotify.com/playlist/6DyIxXHMwuEMbsfPTIr9C8" -l 10 -d
# Pass even the URL of video playing from playlist
# Force create a new playlist
$ python ytm2spt.py -yt "https://www.youtube.com/watch?v=RlPNh_PBZb4&list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -n
Note: This is only required if you want to build the executable yourself. This is not necessary if you just need to run the app directly using Python.
Requirements:
patchelf
(Linux only)python3-devel
or similar package in your OSpip install -r requirements-dev.txt
nuitka ytm2spt.py
[!NOTE]
Forked from @edgarh22's Youtube-to-Spotify-Archiver.