Spotify에서 YTMusic으로 이동하기 위한 도구
이것은 Spotify에서 YTMusic으로 "좋아요"를 누른 노래와 재생 목록을 복사하기 위한 스크립트 세트입니다. CLI 도구와 GUI(Yoween에서 구현, 이전에는 spotify_to_ytmusic_gui라고 함)를 모두 제공합니다.
이 프로젝트에 아낌없는 재정적 기여를 해주신 @RadicalArti와 Meet Vora에게 감사드립니다.
작동하는 것으로 알려진 Python 3.10 이상의 최신 버전이 필요합니다. 3.8-3.10도 작동할 수 있습니다.
https://www.python.org/downloads/windows/에서 Windows용 Python을 다운로드하세요.
choco를 사용하여 설치할 수도 있습니다: choco install python
달리다:
brew install python
brew install python-tk
다음을 수행하여 인증서를 설치하십시오.
Macintosh HD > 응용 프로그램 > Python 폴더 > "Install Certificates.command" 파일을 두 번 클릭합니다.
아마도 이미 설치되어 있을 것입니다. 설치하려면 선택한 패키지 관리자에게 문의하세요.
이 패키지는 pip에서 제공되므로 다음을 사용하여 설치할 수 있습니다.
pip install spotify2ytmusic
또는:
python3 -m pip install spotify2ytmusic
(권장하지 않음)
pip 대신 또 다른 옵션은 이 저장소를 복제하고 소스에서 직접 실행하는 것입니다. 그러나 "ytmusicapi" 패키지가 설치되어 있어야 하므로 최소한 pip를 사용하여 설치하는 것이 좋습니다.
소스에서 직접 실행하려면:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
그런 다음 실행하려는 명령 앞에 python3 -m spotify2ytmusic
을 붙일 수 있습니다. 예를 들면 다음과 같습니다.
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
PIP를 통해 설치한 경우 다음을 실행할 수 있습니다: s2yt_gui
그렇지 않고 소스에서 실행하는 경우:
Windows: python -m spotify2ytmusic gui
또는 Linux: python3 -m spotify2ytmusic gui
login
버튼을 클릭하세요.또는
콘솔에서 ytmusicapi oauth
실행하세요.
또는
s2yt_ytoauth
실행
또는
python -m spotify2ytmusic ytoauth
실행
이렇게 하면 URL이 제공되고 해당 URL을 방문하여 애플리케이션을 승인합니다. 가져오기가 완료되면 이 앱에 대한 승인을 제거할 수 있습니다.
그러면 "oauth.json" 파일이 작성됩니다. 앱이 승인되는 동안 이 파일을 비밀로 유지하세요. 이 파일에는 로그인된 세션 토큰이 포함되어 있습니다.
ytmusicapi는 이 소프트웨어의 종속성이므로 "pip 설치"의 일부로 설치되어야 합니다.
Backup
버튼을 클릭하고 완료될 때까지 기다렸다가 다음 탭으로 전환합니다.또는 아래의 모든 단계를 수행하세요.
Spotify 백업을 다운로드하세요.
spotify-backup.py
실행하면 Spotify 계정에 대한 액세스를 승인하는 데 도움이 됩니다.
실행: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
이렇게 하면 재생 목록과 좋아요 표시한 노래가 "playlists.json" 파일에 저장됩니다.
아래에서 언급한 것처럼 원래 프로그램은 '잘못된' 순서로 노래를 추가합니다. 그것은 제가 좋아하지 않는 기능이므로 이를 뒤집을 수 있는 스크립트를 만들었습니다. 믿을만한 것 같지만 이상한 점을 발견하면 이슈를 열어주세요. 만약을 대비해 원본 파일의 백업을 생성합니다.
예: python3 .reverse_playlist.py ./playlists.json -r
import
버튼을 클릭하고 완료되어 다음 탭으로 전환될 때까지 기다리세요.Spotify가 좋아하는 노래를 살펴보고 YTMusic에서 좋아요를 누르세요. Spotify의 노래를 표시한 다음 YTMusic에서 좋아하는 노래를 표시합니다. 내 노래를 직접 확인한 결과 YTMusic 노래를 Spotify와 일치시키는 작업이 잘 수행되는 것 같습니다. 지금까지 나는 몇 백 곡의 노래에서 단 한 번의 실패도 본 적이 없지만 좀 더 난해한 제목에는 문제가 있을 수 있습니다.
list
버튼을 클릭하고 완료되어 다음 탭으로 전환될 때까지 기다리세요.Spotify와 YTMusic 모두에 있는 재생 목록이 나열되므로 개별적으로 복사할 수 있습니다.
모든 재생 목록을 복사하거나 개별 재생 목록을 추가로 복사할 수 있습니다. 모든 재생목록을 복사하면 Spotify 재생목록 이름이 YTMusic의 대상 재생목록 이름으로 사용됩니다.
copy
버튼을 클릭하고 복사가 완료되어 다음 탭으로 전환될 때까지 기다립니다.참고 : 좋아요 표시한 재생목록은 복사되지 않습니다. (그렇게 하려면 위를 참조하세요.)
목록 출력에서 Spotify 재생 목록 및 YTMusic 재생 목록의 "재생 목록 ID"(첫 번째 열)를 찾습니다.
copy
버튼을 클릭하십시오.복사 재생목록은 YTMusic 재생목록의 이름을 사용하며 "+"로 YTMusic 재생목록을 시작하는 경우 재생목록이 존재하지 않는 경우 재생목록을 생성합니다.
실패한 경우 "copy_playlist" 또는 "load_liked"를 다시 실행하는 것은 안전해야 하며 재생 목록의 항목이 중복되지 않습니다.
ytmusicapi oauth
또는 s2yt_ytoauth
또는 python -m spotify2ytmusic ytoauth
이렇게 하면 URL이 제공되고 해당 URL을 방문하여 애플리케이션을 승인합니다. 가져오기가 완료되면 이 앱에 대한 승인을 제거할 수 있습니다.
그러면 "oauth.json" 파일이 작성됩니다. 앱이 승인되는 동안 이 파일을 비밀로 유지하세요. 이 파일에는 로그인된 세션 토큰이 포함되어 있습니다.
ytmusicapi는 이 소프트웨어의 종속성이므로 "pip 설치"의 일부로 설치되어야 합니다.
Spotify 백업을 다운로드하세요.
spotify-backup.py
실행하면 Spotify 계정에 대한 액세스를 승인하는 데 도움이 됩니다.
실행: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
이렇게 하면 재생 목록과 좋아요 표시한 노래가 "playlists.json" 파일에 저장됩니다.
실행: s2yt_load_liked
Spotify가 좋아하는 노래를 살펴보고 YTMusic에서 좋아요를 누르세요. Spotify의 노래를 표시한 다음 YTMusic에서 좋아하는 노래를 표시합니다. 내 노래를 직접 확인한 결과 YTMusic 노래를 Spotify와 일치시키는 작업이 잘 수행되는 것 같습니다. 지금까지 수천 곡의 노래에서 단 한 번의 실패도 본 적이 없지만 좀 더 난해한 제목에는 문제가 있을 수 있습니다.
실행: s2yt_load_liked_albums
Spotify는 "좋아요 노래" 재생 목록 외부에 좋아요를 누른 앨범을 저장합니다. 좋아요를 누른 앨범을 YTMusic 좋아요 노래로 로드하는 명령입니다.
s2yt_list_playlists
실행
Spotify와 YTMusic 모두에 있는 재생 목록이 나열됩니다. 개별적으로 복사해야 합니다.
모든 재생 목록을 복사하거나 개별 재생 목록을 추가로 복사할 수 있습니다. 모든 재생목록을 복사하면 Spotify 재생목록 이름이 YTMusic의 대상 재생목록 이름으로 사용됩니다. 모든 재생 목록을 복사하려면 다음을 실행하세요.
s2yt_copy_all_playlists
참고 : 좋아요 표시한 재생목록은 복사되지 않습니다. (그렇게 하려면 위를 참조하세요.)
위 목록 출력에서 Spotify 재생 목록과 YTMusic 재생 목록의 "재생 목록 ID"(첫 번째 열)를 찾은 후 다음을 실행합니다.
s2yt_copy_playlist
재생 목록을 생성해야 하는 경우 다음을 실행할 수 있습니다.
s2yt_create_playlist "
또는 복사 재생목록은 YTMusic 재생목록의 이름을 사용할 수 있으며 "+"로 YTMusic 재생목록을 시작하는 경우 재생목록이 존재하지 않는 경우 재생목록을 생성합니다.
s2yt_copy_playlist
예를 들어:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
실패한 경우 "copy_playlist" 또는 "load_liked"를 다시 실행하는 것은 안전해야 하며 재생 목록의 항목이 중복되지 않습니다.
이는 주로 디버깅용이지만 YTMusic에서 트랙을 검색하는 명령이 있습니다.
s2yt_search --artist
이 기능은 먼저 YTMusic에서 지정된 아티스트 이름으로 앨범을 검색합니다.
그런 다음 처음 세 개의 앨범 결과를 반복하고 지정된 트랙 이름과 정확히 동일한 이름을 가진 트랙을 찾으려고 시도합니다. 일치하는 항목을 찾으면 트랙 정보를 반환합니다.
함수가 앨범에서 트랙을 찾을 수 없으면 지정된 트랙 이름과 아티스트 이름으로 노래를 검색합니다.
yt_search_algo 매개변수에 따라 다음 작업 중 하나를 수행합니다.
yt_search_algo가 0이면 단순히 첫 번째 노래 결과를 반환합니다.
yt_search_algo가 1이면 노래 결과를 반복하여 트랙 이름, 아티스트 이름 및 앨범 이름과 정확히 일치하는 첫 번째 노래를 반환합니다. 일치하는 항목을 찾을 수 없으면 ValueError가 발생합니다.
yt_search_algo가 2이면 퍼지 일치를 수행합니다. 노래 제목에서 괄호 안에 있는 모든 항목을 제거하고 트랙 이름, 아티스트 이름 및 앨범 이름과 일치하는지 확인합니다. 일치하는 항목을 찾을 수 없으면 트랙 이름과 아티스트 이름이 포함된 비디오를 검색합니다. 여전히 일치하는 항목을 찾을 수 없으면 ValueError가 발생합니다.
함수가 위의 방법 중 하나를 사용하여 트랙을 찾을 수 없으면 ValueError가 발생합니다.
아니요, Linux/Windows/MacOS에서 실행됩니다.
"spotify2ytmusic에 대해 일치하는 배포판을 찾을 수 없습니다"라는 메시지가 나타납니다.
이는 Issue #39에서 보고되었으며 Python 버전이 일치하지 않는 것 같습니다. MacOS 사용자는 특정 버전의 Python을 설치한 다음 일치하는 PIP 버전을 사용해야 했습니다.
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
조회 알고리즘은 어떻게 작동하나요?
Spotify 트랙 정보가 주어지면 YTMusic에서 같은 아티스트의 앨범을 검색한 다음 처음 3개의 히트 곡을 보고 정확히 같은 이름의 트랙을 찾습니다. 정확한 트랙을 찾을 수 없는 경우 동일한 아티스트의 트랙 이름에 대한 노래를 검색하고 첫 번째 히트곡을 반환합니다.
아이디어는 앨범과 아티스트를 찾은 다음 정확한 트랙 일치를 찾는 것이 노래와 아티스트를 검색하고 YTMusic 알고리즘에 의존하여 문제를 파악하는 것보다 더 정확할 가능성이 높다는 것입니다. 특히 짧은 트랙의 경우 더욱 그렇습니다. "Survival by Yes"와 같은 모순된 히트작이 많이 있습니다.
"오류: (재시도 중) 서버에서 HTTP 400을 반환했습니다: 잘못된 요청"이 반복되면서 복사본이 실패했습니다.
트랙 사이에 3초 휴면을 수행하려면 "--track-sleep=3" 인수를 사용하여 실행해 보세요. 이 작업은 훨씬 더 오래 걸리지만 더 빠른 속도가 실패한 경우 성공할 수 있습니다.
크리에이티브 커먼즈 제로 v1.0 유니버설
Spotify-backup.py는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 https://github.com/caseychu/spotify-backup을 참조하세요.