9.6 KiB
🎵 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
🎵 Импорт плейлиста из Яндекс Музыки
Для импорта плейлиста из Яндекс Музыки:
- Откройте нужный плейлист на music.yandex.ru
- Нажмите на три точки (⋮) в верхней части плейлиста
- Выберите «Поделиться» → «HTML-код»
- Скопируйте ссылку из открывшегося окна
- Запустите:
python main.py -i yandex - Вставьте скопированный HTML-код
После этого в текущей папке появится файл <название_плейлиста>.txt с треками.
🎵 Импорт плейлиста из Spotify
Для импорта плейлиста из Spotify:
- Открой https://open.spotify.com/ в браузере
- Нажми F12 (откроются DevTools)
- Перейди во вкладку Network
- Останови запись (кнопка ⏹️) и очисти историю (кнопка 🚫)
- Перед открытием плейлиста нажми запись (кнопка ⏺️)
- Перейди на интересующий плейлист
- Дождись полной загрузки и отключи запись
- Найди элементы с названием query в начале списка (или прокликай первые 10–15 запросов)
- Нажми на один из элементов query
- Перейди во вкладку Response — если видишь длинный JSON, это нужный запрос
- ПКМ по элементу → Copy → Copy response
- Создай файл с расширением
.jsonи сохрани в него скопированный ответ - Запусти:
python main.py -i spotify - Укажи путь к созданному JSON-файлу
После этого в текущей папке появится файл <случайное_имя>.txt с треками.
📀 Поиск и импорт альбома
Для поиска и импорта альбома:
- Запустите:
python main.py -a - Введите артиста и название альбома в формате:
артист название - Альбом будет найден в iTunes или Яндекс Музыке
- В текущей папке появится файл
<название_альбома>.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