Files
music_loader/README.md
T

208 lines
9.6 KiB
Markdown
Raw Normal View History

2026-05-15 04:03:13 +06:00
# 🎵 Music Loader
2026-05-14 22:01:11 +00:00
2026-05-15 04:03:13 +06:00
Загрузчик музыки из онлайн-источников с поддержкой интерактивного поиска, пакетной загрузки и импорта плейлистов.
## 📋 Возможности
- 🔍 **Интерактивный поиск** — выбор трека из списка найденных результатов
- 📜 **Пакетная загрузка** — скачивание треков из плейлиста (файл `.txt`)
- 🌐 **Несколько источников** — поддержка hitmo и youtube
- 🎨 **Обложки треков** — автоматическое добавление обложек из Яндекс Музыки и iTunes
- 📥 **Импорт плейлистов** — загрузка списков треков из плейлистов Яндекс Музыки и Spotify
- 📀 **Поиск альбомов** — поиск и экспорт альбомов в плейлист из iTunes и Яндекс Музыки
- ⏱️ **Автоматическая задержка** — пауза между загрузками для избежания блокировок
- 📁 **Гибкое хранение** — настройка папки для сохранения файлов
## 🚀 Требования
- Python 3.13+
- Библиотеки:
```bash
pip install requests beautifulsoup4 tqdm mutagen pillow yandex_music yt_dlp
```
## 📖 Использование
### Базовый синтаксис
```bash
python main.py [опции]
```
### Опции
| Опция | Описание |
|-------|----------|
| `-h`, `--help` | Показать справку |
| `-a`, `--album` | Импортировать альбом (itunes, yandex) |
| `-i`, `--import_playlist` | Импортировать плейлист (yandex, spotify) |
| `-p`, `--playlist` | Путь к файлу плейлиста (`.txt`) |
| `-s`, `--source` | Источник: `hitmo`, `youtube` (по умолчанию: `hitmo`) |
### Примеры
**Интерактивный режим** (поиск и выбор трека):
```bash
python main.py
python main.py -s youtube
```
**Пакетная загрузка** (из плейлиста):
```bash
python main.py -p playlist.txt
python main.py -s youtube -p playlist.txt
```
**Импорт плейлиста**:
```bash
python main.py -i yandex
python main.py -i spotify
```
**Поиск альбома**:
```bash
python main.py -a
```
## 🎵 Импорт плейлиста из Яндекс Музыки
Для импорта плейлиста из Яндекс Музыки:
1. Откройте нужный плейлист на [music.yandex.ru](https://music.yandex.ru)
2. Нажмите на **три точки** (⋮) в верхней части плейлиста
3. Выберите **«Поделиться»** → **«HTML-код»**
4. Скопируйте ссылку из открывшегося окна
5. Запустите:
```bash
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. ПКМ по элементу → **Copy** → **Copy response**
12. Создай файл с расширением `.json` и сохрани в него скопированный ответ
13. Запусти:
```bash
python main.py -i spotify
```
14. Укажи путь к созданному JSON-файлу
После этого в текущей папке появится файл `<случайное_имя>.txt` с треками.
## 📀 Поиск и импорт альбома
Для поиска и импорта альбома:
1. Запустите:
```bash
python main.py -a
```
2. Введите артиста и название альбома в формате: `артист название`
3. Альбом будет найден в iTunes или Яндекс Музыке
4. В текущей папке появится файл `<название_альбома>.txt` с треками
## 📝 Формат плейлиста
Создайте текстовый файл (например, `playlist.txt`) в формате:
```
артист название_трека
еще артист еще трек
booker джанк
```
Каждая строка — отдельный запрос на поиск и загрузку.
## ⏱️ Задержка между загрузками
При использовании плейлиста между скачиваниями треков автоматически добавляется задержка, указанная в `settings.json` (по умолчанию: **1 секунда**) для предотвращения временной блокировки со стороны сайта.
## ⚙️ Настройки
Создайте файл `settings.json` в корне проекта:
```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