Files

9.6 KiB
Raw Permalink Blame History

🎵 Music Loader

Загрузчик музыки из онлайн-источников с поддержкой интерактивного поиска, пакетной загрузки и импорта плейлистов.

📋 Возможности

  • 🔍 Интерактивный поиск — выбор трека из списка найденных результатов
  • 📜 Пакетная загрузка — скачивание треков из плейлиста (файл .txt)
  • 🌐 Несколько источников — поддержка hitmo и youtube
  • 🎨 Обложки треков — автоматическое добавление обложек из Яндекс Музыки и iTunes
  • 📥 Импорт плейлистов — загрузка списков треков из плейлистов Яндекс Музыки и Spotify
  • 📀 Поиск альбомов — поиск и экспорт альбомов в плейлист из iTunes и Яндекс Музыки
  • ⏱️ Автоматическая задержка — пауза между загрузками для избежания блокировок
  • 📁 Гибкое хранение — настройка папки для сохранения файлов

🚀 Требования

  • Python 3.13+
  • Библиотеки:
    pip install requests beautifulsoup4 tqdm mutagen pillow yandex_music yt_dlp
    

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

Базовый синтаксис

python main.py [опции]

Опции

Опция Описание
-h, --help Показать справку
-a, --album Импортировать альбом (itunes, yandex)
-i, --import_playlist Импортировать плейлист (yandex, spotify)
-p, --playlist Путь к файлу плейлиста (.txt)
-s, --source Источник: hitmo, youtube (по умолчанию: hitmo)

Примеры

Интерактивный режим (поиск и выбор трека):

python main.py
python main.py -s youtube

Пакетная загрузка (из плейлиста):

python main.py -p playlist.txt
python main.py -s youtube -p playlist.txt

Импорт плейлиста:

python main.py -i yandex
python main.py -i spotify

Поиск альбома:

python main.py -a

🎵 Импорт плейлиста из Яндекс Музыки

Для импорта плейлиста из Яндекс Музыки:

  1. Откройте нужный плейлист на music.yandex.ru
  2. Нажмите на три точки (⋮) в верхней части плейлиста
  3. Выберите «Поделиться»«HTML-код»
  4. Скопируйте ссылку из открывшегося окна
  5. Запустите:
    python main.py -i yandex
    
  6. Вставьте скопированный HTML-код

После этого в текущей папке появится файл <название_плейлиста>.txt с треками.

🎵 Импорт плейлиста из Spotify

Для импорта плейлиста из Spotify:

  1. Открой https://open.spotify.com/ в браузере
  2. Нажми F12 (откроются DevTools)
  3. Перейди во вкладку Network
  4. Останови запись (кнопка ⏹️) и очисти историю (кнопка 🚫)
  5. Перед открытием плейлиста нажми запись (кнопка ⏺️)
  6. Перейди на интересующий плейлист
  7. Дождись полной загрузки и отключи запись
  8. Найди элементы с названием query в начале списка (или прокликай первые 10–15 запросов)
  9. Нажми на один из элементов query
  10. Перейди во вкладку Response — если видишь длинный JSON, это нужный запрос
  11. ПКМ по элементу → CopyCopy response
  12. Создай файл с расширением .json и сохрани в него скопированный ответ
  13. Запусти:
    python main.py -i spotify
    
  14. Укажи путь к созданному JSON-файлу

После этого в текущей папке появится файл <случайное_имя>.txt с треками.

📀 Поиск и импорт альбома

Для поиска и импорта альбома:

  1. Запустите:
    python main.py -a
    
  2. Введите артиста и название альбома в формате: артист название
  3. Альбом будет найден в iTunes или Яндекс Музыке
  4. В текущей папке появится файл <название_альбома>.txt с треками

📝 Формат плейлиста

Создайте текстовый файл (например, playlist.txt) в формате:

артист название_трека
еще артист еще трек
booker джанк

Каждая строка — отдельный запрос на поиск и загрузку.

⏱️ Задержка между загрузками

При использовании плейлиста между скачиваниями треков автоматически добавляется задержка, указанная в settings.json (по умолчанию: 1 секунда) для предотвращения временной блокировки со стороны сайта.

⚙️ Настройки

Создайте файл settings.json в корне проекта:

{
    "delay": 1,
    "save to": "downloads/",
    "cover": true,
    "source": "hitmo",
    "proxy": "http://ip:port"
}
Параметр Описание
delay Задержка между запросами (сек)
save to Папка для сохранения треков
cover Автоматическая установка обложек
source Источник по умолчанию (hitmo или youtube)
proxy Прокси для YouTube (требуется для работы в РФ)

🌐 Источники

Источник Описание
hitmo (ru, eu) Основной источник
youtube Вспомогательный источник (требуется прокси для работы в РФ)

🎨 Обложки и метаданные

Сервис Обложки Альбомы Плейлисты
Яндекс Музыка
iTunes
Spotify

📂 Структура проекта

music_loader/
├── main.py
├── core/
│   ├── album.py        # Поиск альбома, экспортирование в плейлист
│   ├── cover.py        # Поиск, скачивание и установка обложек
│   ├── hitmo.py        # Парсинг сайта, поиск и скачивание треков
│   ├── import_playlist.py # Импорт плейлистов из Яндекс и Spotify
│   └── youtube.py      # Поиск и скачивание треков с YouTube
├── settings.json
├── LICENSE
├── README.md
└── .gitignore

Дисклеймер | Disclaimer

Данный проект предназначен исключительно для личного и образовательного использования.

Программа использует сторонние источники данных для поиска треков, обложек и метаданных. В отдельных случаях возможны неточности в результатах поиска, особенно при работе с плейлистами.

Пользователь несет полную ответственность за соблюдение авторских прав и условий использования контента при загрузке или использовании материалов, полученных с помощью данного проекта.

Автор проекта не связан с сервисами, используемыми программой, и не несет ответственности за возможные ограничения, блокировки или иные действия со стороны сторонних сервисов.

This project is intended for personal and educational use only.

The software uses third-party sources to search for tracks, artwork, and metadata. In some cases, inaccuracies may occur in search results, especially when processing playlists.

Users are solely responsible for complying with copyright laws and the terms of service of the platforms when downloading or using content obtained through this project.

The project author is not affiliated with the services used by the software and is not responsible for any restrictions, bans, or other actions imposed by third-party platforms.

сделано: s13bby