Skip to content

gosha20777/yandex2ytmusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yandex2ytmusic

Перенос понравившихся треков, плейлистов и подкастов из 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 chromium

Использование

python main.py

Появится интерактивное меню:

=== Yandex Music → YouTube Music ===

Что хочешь сделать?
  1. Полный перенос (экспорт из Яндекса + импорт в YouTube)
  2. Только экспорт из Яндекс Музыки
  3. Только импорт в YouTube Music (из файла)
  4. Настроить авторизацию YouTube Music

Выбор (1-4):

При импорте можно выбрать режим:

Режим импорта:
  1. Быстрый (параллельный, порядок не сохраняется)
  2. С сохранением порядка (медленнее)

Подробная инструкция

Шаг 1: Получить токен Yandex Music

  1. Перейди на oauth.yandex.ru/authorize
  2. Войди в аккаунт Яндекс
  3. Скопируй токен из URL (параметр access_token)

Или используй инструкцию из документации yandex-music.

Шаг 2: Экспорт из Яндекс Музыки

python main.py
# Выбери: 2. Только экспорт из Яндекс Музыки
# Введи токен

Треки, плейлисты и подкасты сохранятся в файл tracks.json. Многопоточная обработка ускоряет процесс в ~5 раз.

Шаг 3: Настроить авторизацию YouTube Music

python main.py
# Выбери: 4. Настроить авторизацию YouTube Music

Вариант 1: Автоматически через браузер (рекомендуется)

  1. Выбери вариант "1. Автоматически из браузера"
  2. Откроется браузер — войди в аккаунт Google если нужно
  3. Дождись загрузки YouTube Music
  4. Браузер закроется автоматически после перехвата данных

Программа автоматически перехватит нужные headers и создаст файл browser.json.

Вариант 2: Вручную (если автоматический не работает)

  1. Открой music.youtube.com (войди в аккаунт)
  2. Открой DevTools (F12)
  3. Перейди на вкладку Network (Сеть)
  4. В фильтре введи browse
  5. Кликни на любую страницу в YouTube Music
  6. Найди POST запрос к browse?... и кликни на него
  7. Скопируй Request Headers:
    • Firefox: правый клик → Copy Value → Copy Request Headers
    • Chrome: правый клик → Copy → Copy request headers
  8. Вставь в терминал и нажми Ctrl+D

Шаг 4: Импорт в YouTube Music

python main.py
# Выбери: 3. Только импорт в YouTube Music (из файла)
# Выбери режим: 1 (быстрый) или 2 (с сохранением порядка)

Программа загрузит треки, плейлисты и подкасты из tracks.json и добавит их в лайки YouTube Music.

Режимы импорта

Режим Скорость Порядок треков
Быстрый ~5x быстрее Случайный
С сохранением порядка Обычная Как в Яндекс Музыке

В обоих режимах поиск выполняется параллельно (быстро). Разница только в добавлении лайков.

Рекомендуемый порядок для большой библиотеки

Если у тебя много треков (500+), рекомендуется разделить процесс:

  1. Экспорт (вариант 2) — занимает время, но не зависит от YouTube
  2. Настройка авторизации (вариант 4) — делай непосредственно перед импортом
  3. Импорт (вариант 3) — делай сразу после настройки авторизации

Это решает проблему таймаута сессии YouTube при долгом экспорте из Яндекса.

Структура файла tracks.json

{
  "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 Music
  • errors — треки, при импорте которых произошла ошибка

Решение проблем

Ошибка 401 Unauthorized

Сессия YouTube истекла. Повтори шаг 3 (настройка авторизации).

Ошибка 400 Bad Request с OAuth

Используй Browser authentication вместо OAuth. Он работает стабильнее.

Автоматическая авторизация не работает

  • Убедись, что установлен Playwright: pip install playwright && playwright install chromium
  • Попробуй ручной способ (вариант 2)

Зависимости

  • yandex-music — API Яндекс Музыки
  • ytmusicapi — API YouTube Music
  • playwright — автоматизация браузера для авторизации
  • tqdm — прогресс-бар

Лицензия

MIT

About

Transfer playlists from yandex.music to youtube music

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages