diff --git a/README.md b/README.md index 01529a5..94f4e1b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # YouTube Music To Spotify -Converts a youtube music playlist to spotify playlist. +Transfer youtube music playlist to spotify playlist. + +![ytm2spt](media/app_ui.png) - [x] Support public playlists - [x] Support private playlists @@ -25,6 +27,38 @@ Converts a youtube music playlist to spotify playlist. 4. Copy the "User ID" from your Spotify account: https://www.spotify.com/in-en/account/profile/ ![Spotify username](media/spotify_username.png) + +## Installation + +Download the latest version from the [releases page](https://github.com/abhishekmj303/ytm2spt/releases/latest). + +> [!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. + + +### Spotify Settings + +When you run the executable, you will be prompted to enter your Spotify credentials. + +![Spotify Settings](media/spotify_ui.png) + +### Youtube Settings + +If you click on "Private Playlist", you will be prompted to enter get your Youtube OAuth credentials if not already set. + +![Youtube Settings](media/youtube_ui.png) + + +> [!TIP]
+> If you find this project useful or interesting, please consider giving it a 🌟star! It helps others discover it too! + +--- + + +## CLI + ### Setting Environment Variables Linux and Mac 1. Rename the file `.env.sample` to `.env` @@ -64,7 +98,7 @@ ytmusicapi oauth ```sh $ source .env -$ python src/main.py -h +$ python ytm2spt.py -h usage: main.py [-h] -yt YOUTUBE_URL_OR_ID [-sp SPOTIFY_URL_OR_ID | -spname SPOTIFY_PLAYLIST_NAME] [-ytauth YOUTUBE_OAUTH_JSON] @@ -93,29 +127,26 @@ Sample Playlist: Pop Certified ([YouTube Music](https://music.youtube.com/playli ```sh # Pass any link containing a youtube playlist ID # Sets same name as youtube playlist -$ python src/main.py -yt "https://music.youtube.com/playlist?list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" +$ 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 src/main.py -yt "CLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -spname "Pop Certified" +$ 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 src/main.py -yt "https://music.youtube.com/playlist?list=PLz96m0PSfi9p8ABcEcUlSMVmz7sN-IEFu" -ytauth "oauth.json" +$ 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 src/main.py -yt "CLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -sp "https://open.spotify.com/playlist/6DyIxXHMwuEMbsfPTIr9C8" -l 10 -d +$ 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 src/main.py -yt "https://www.youtube.com/watch?v=RlPNh_PBZb4&list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -n +$ python ytm2spt.py -yt "https://www.youtube.com/watch?v=RlPNh_PBZb4&list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" -n ``` -> [!TIP]
-> If you find this project useful or interesting, please consider giving it a 🌟star! It helps others discover it too! - > [!NOTE]
> Forked from @edgarh22's [Youtube-to-Spotify-Archiver](https://github.com/edgarh92/Youtube-to-Spotify-Archiver). diff --git a/media/app_ui.png b/media/app_ui.png new file mode 100644 index 0000000..f08ccd3 Binary files /dev/null and b/media/app_ui.png differ diff --git a/media/spotify_ui.png b/media/spotify_ui.png new file mode 100644 index 0000000..961c3bd Binary files /dev/null and b/media/spotify_ui.png differ diff --git a/media/youtube_ui.png b/media/youtube_ui.png new file mode 100644 index 0000000..edefee9 Binary files /dev/null and b/media/youtube_ui.png differ diff --git a/ytm2spt.py b/ytm2spt.py index 167c8e8..924f940 100644 --- a/ytm2spt.py +++ b/ytm2spt.py @@ -127,12 +127,12 @@ def __init__(self, parent=None): self.message_label.setWordWrap(True) self.message_label.setTextInteractionFlags(Qt.TextSelectableByMouse) if os.path.exists(YTOAUTH_PATH): - self.message_label.setText("OAuth token saved in " + YTOAUTH_PATH) + self.message_label.setText("OAuth token saved at " + YTOAUTH_PATH) layout.addWidget(self.message_label) def get_oauth_token(self): setup_oauth(filepath=YTOAUTH_PATH, open_browser=True) - self.message_label.setText("OAuth token saved to " + YTOAUTH_PATH) + self.message_label.setText("OAuth token saved at " + YTOAUTH_PATH) # Qt sleep 3 seconds QtCore.QTimer.singleShot(3000, self.close)