Перенос понравившихся треков, плейлистов и подкастов из Yandex.Музыка в YouTube Music.
Большое спасибо @kirillqa17
| Фича | Эта версия |
|---|---|
| Интерактивное меню | Да |
| Раздельный экспорт/импорт | Да |
| Автоматическая авторизация YouTube | Да (через Playwright) |
| Browser authentication | Да |
| Многопоточность | Да (до 5x быстрее) |
| Выбор режима импорта | Быстрый / С сохранением порядка |
| Сохранение прогресса между этапами | Да |
- Интерактивное меню — не нужно запоминать флаги командной строки
- Раздельный экспорт/импорт — можно сначала экспортировать треки, плейлисты и подкасты из Яндекса, а потом отдельно импортировать в YouTube (решает проблему таймаута сессии при большом количестве треков)
- Автоматическая авторизация — программа открывает браузер и сама перехватывает нужные данные для авторизации
- Многопоточность — параллельная обработка треков ускоряет экспорт и импорт до 5 раз
- Выбор режима импорта — быстрый параллельный режим или режим с сохранением порядка треков, плейлистов и подкастов
- Browser authentication — работает стабильнее чем OAuth, не требует создания проекта в Google Cloud
git clone https://github.com/kirillqa17/yandex2ytmusic.git
cd yandex2ytmusic
pip install -r requirements.txt
playwright install chromiumpython main.pyПоявится интерактивное меню:
=== Yandex Music → YouTube Music ===
Что хочешь сделать?
1. Полный перенос (экспорт из Яндекса + импорт в YouTube)
2. Только экспорт из Яндекс Музыки
3. Только импорт в YouTube Music (из файла)
4. Настроить авторизацию YouTube Music
Выбор (1-4):
При импорте можно выбрать режим:
Режим импорта:
1. Быстрый (параллельный, порядок не сохраняется)
2. С сохранением порядка (медленнее)
- Перейди на oauth.yandex.ru/authorize
- Войди в аккаунт Яндекс
- Скопируй токен из URL (параметр
access_token)
Или используй инструкцию из документации yandex-music.
python main.py
# Выбери: 2. Только экспорт из Яндекс Музыки
# Введи токенТреки, плейлисты и подкасты сохранятся в файл tracks.json. Многопоточная обработка ускоряет процесс в ~5 раз.
python main.py
# Выбери: 4. Настроить авторизацию YouTube Music- Выбери вариант "1. Автоматически из браузера"
- Откроется браузер — войди в аккаунт Google если нужно
- Дождись загрузки YouTube Music
- Браузер закроется автоматически после перехвата данных
Программа автоматически перехватит нужные headers и создаст файл browser.json.
- Открой music.youtube.com (войди в аккаунт)
- Открой DevTools (F12)
- Перейди на вкладку Network (Сеть)
- В фильтре введи
browse - Кликни на любую страницу в YouTube Music
- Найди POST запрос к
browse?...и кликни на него - Скопируй Request Headers:
- Firefox: правый клик → Copy Value → Copy Request Headers
- Chrome: правый клик → Copy → Copy request headers
- Вставь в терминал и нажми Ctrl+D
python main.py
# Выбери: 3. Только импорт в YouTube Music (из файла)
# Выбери режим: 1 (быстрый) или 2 (с сохранением порядка)Программа загрузит треки, плейлисты и подкасты из tracks.json и добавит их в лайки YouTube Music.
| Режим | Скорость | Порядок треков |
|---|---|---|
| Быстрый | ~5x быстрее | Случайный |
| С сохранением порядка | Обычная | Как в Яндекс Музыке |
В обоих режимах поиск выполняется параллельно (быстро). Разница только в добавлении лайков.
Если у тебя много треков (500+), рекомендуется разделить процесс:
- Экспорт (вариант 2) — занимает время, но не зависит от YouTube
- Настройка авторизации (вариант 4) — делай непосредственно перед импортом
- Импорт (вариант 3) — делай сразу после настройки авторизации
Это решает проблему таймаута сессии YouTube при долгом экспорте из Яндекса.
{
"playlists": [
{
"title": "My favorite songs",
"description": "Check out this playlist!",
"tracks": [
{
"artist": "Queen",
"name": "Bohemian Rhapsody"
}
]
}
],
"liked_podcasts": [
{
"label": "Sample Podcast Label",
"name": "Sample Podcast"
}
],
"liked_tracks": [
{
"artist": "Queen",
"name": "Bohemian Rhapsody"
}
],
"not_found": [],
"errors": []
}playlists— все плейлисты из Яндекс Музыкиliked_podcasts— все подкасты из Яндекс Музыкиliked_tracks— все треки из Яндекс Музыкиnot_found— треки, которые не найдены в YouTube Musicerrors— треки, при импорте которых произошла ошибка
Сессия YouTube истекла. Повтори шаг 3 (настройка авторизации).
Используй Browser authentication вместо OAuth. Он работает стабильнее.
- Убедись, что установлен Playwright:
pip install playwright && playwright install chromium - Попробуй ручной способ (вариант 2)
- yandex-music — API Яндекс Музыки
- ytmusicapi — API YouTube Music
- playwright — автоматизация браузера для авторизации
- tqdm — прогресс-бар
MIT