Инструменты для перехода со Spotify на YTMusic
Это набор скриптов для копирования «понравившихся» песен и плейлистов из Spotify в YTMusic. Он предоставляет как инструменты CLI, так и графический интерфейс (реализованный Yoween, ранее называвшийся Spotify_to_ytmusic_gui).
Спасибо @RadicalArti и Meet Vora за щедрый финансовый вклад в этот проект.
Вам понадобится более свежая версия Python 3.10 и выше, которые, как известно, работают, 3.8-3.10 могут работать.
Загрузите Python для Windows по адресу: https://www.python.org/downloads/windows/.
Вы также можете использовать 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 install».
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.
copy
.Копируемый плейлист примет имя плейлиста YTMusic и создаст плейлист, если он не существует, если вы начнете плейлист YTMusic со знака «+»:
Повторный запуск «copy_playlist» или «load_liked» в случае сбоя должен быть безопасным, поскольку он не будет дублировать записи в списке воспроизведения.
ytmusicapi oauth
или s2yt_ytoauth
или python -m spotify2ytmusic ytoauth
Это даст вам URL-адрес, посетите этот URL-адрес и авторизуйте приложение. Когда вы закончите импорт, вы можете удалить авторизацию для этого приложения.
Это запишет файл «oauth.json». Держите этот файл в секрете, пока приложение авторизовано. Этот файл содержит токен сеанса входа в систему.
ytmusicapi является зависимостью этого программного обеспечения и должен быть установлен как часть «pip install».
Загрузите 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, а затем запустите:
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 не найдено подходящего дистрибутива».
Об этом сообщалось в выпуске № 39, и это похоже на несоответствие между версиями Python. Пользователям MacOS необходимо было установить определенную версию Python, а затем использовать соответствующую версию PIP:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
Как работает алгоритм поиска?
Учитывая информацию о треке Spotify, он ищет альбом того же исполнителя на YTMusic, затем просматривает первые три хита в поисках трека с точно таким же названием. Если он не может найти именно этот трек, он выполняет поиск песен по названию трека того же исполнителя и просто возвращает первое попадание.
Идея состоит в том, что поиск альбома и исполнителя, а затем поиск точного соответствия треку будет более точным, чем поиск песни и исполнителя и использование алгоритма YTMusic для выяснения ситуации, особенно для коротких треков, которые могут быть потеряны. много противоречивых хитов, таких как «Survival by Yes».
Моя копия выходит из строя с повторным сообщением «ОШИБКА: (Повторная попытка) Сервер вернул HTTP 400: неверный запрос».
Попробуйте запустить с аргументом «--track-sleep=3», чтобы сделать 3-секундный сон между треками. Это займет гораздо больше времени, но может оказаться успешным там, где более высокие темпы не помогли.
Creative Commons Zero v1.0 Универсальный
Spotify-backup.py доступен под лицензией MIT. См. https://github.com/caseychu/spotify-backup для получения дополнительной информации.