feat: download tracks with full ID3 metadata
- Add downloads.py: "Artist - Title.mp3" naming, no-overwrite dedupe, configurable download_dir, progress and per-item callbacks. - Save maximum metadata via tags.py (ID3v2.3, mutagen): artists, album and album artist, track/disc, year/date, raw genre, label, duration, explicit flag, cover 600x600, plain and synced lyrics (MTS then LRCLIB), track URLs and Yandex/MTS ids. - TUI/Qt: download current track and queue from the menu, "d" key in lists, folder picker in settings; CLI download gains -d/--dir and --no-tags. - Add mutagen to requirements and document download/metadata in README. - Fix MPRIS update_metadata crashing without dbus-next.
This commit is contained in:
50
README.md
50
README.md
@@ -1,8 +1,9 @@
|
||||
# MTS Music — another client
|
||||
|
||||
Неофициальный клиент для **своего** аккаунта MTS Music: «Моя волна», поиск,
|
||||
избранное, тексты песен, воспроизведение и скачивание в MP3. Есть компактный
|
||||
TUI-плеер и настольное Qt-приложение в стиле телефона.
|
||||
избранное, тексты песен, воспроизведение и скачивание в MP3 с полными
|
||||
ID3-тегами. Есть компактный TUI-плеер и настольное Qt-приложение в стиле
|
||||
телефона.
|
||||
|
||||
> Только для личного использования с собственной платной подпиской MTS.
|
||||
> Проект не связан с МТС и Яндексом; контент не перераспространяется.
|
||||
@@ -50,7 +51,7 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
большая кнопка play/pause и по бокам предыдущий/следующий треки, ниже
|
||||
«Текст» и «Избранное». Кнопка «☰» в левом верхнем углу открывает боковое
|
||||
меню: «Моя волна», избранное, история прослушивания, поиск, текст песни,
|
||||
«Настройки» и выход.
|
||||
«Скачать трек», «Скачать список», «Настройки» и выход.
|
||||
|
||||
Мышь работает: кнопки, меню, строки списков и полоса прогресса кликабельны
|
||||
(клик по прогрессу перематывает трек).
|
||||
@@ -67,6 +68,7 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
| `f` | избранное |
|
||||
| `h` | история |
|
||||
| `s` | поиск |
|
||||
| `d` | скачать выделенный трек в списке |
|
||||
| `q` | выход |
|
||||
|
||||
История хранится в `.mts-music/history.json` (последние 100 треков).
|
||||
@@ -82,7 +84,8 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
|
||||
Отдельное окно в стиле телефона: крупная цветная обложка, кнопка play/pause,
|
||||
переключение треков, перемотка, текст песни и избранное. Кнопка «☰» открывает
|
||||
боковую панель с «Моей волной», избранным, историей, поиском и настройками.
|
||||
боковую панель с «Моей волной», избранным, историей, поиском, скачиванием
|
||||
и настройками.
|
||||
|
||||
Воспроизведение — через `QMediaPlayer`/FFmpeg из PySide6, поэтому работает
|
||||
перемотка и системный звук. По полосе прогресса можно кликнуть в любое место —
|
||||
@@ -96,6 +99,30 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
«Моя волна» продолжается с последних прослушанных треков (берётся история), а не
|
||||
начинается каждый раз с одного и того же места.
|
||||
|
||||
## Скачивание и метаданные
|
||||
|
||||
Скачать трек можно из меню (TUI: «Скачать трек»/«Скачать список»; Qt: те же
|
||||
пункты в боковой панели), клавишей `d` на экране списка в TUI или командой
|
||||
`download`. Файлы кладутся в папку `download_dir` (`~/Music/MTS Music` по
|
||||
умолчанию), имя — `Исполнитель - Название.mp3`; существующие файлы не
|
||||
перезаписываются, при совпадении добавляется ` (2)`, ` (3)` и т.д.
|
||||
|
||||
В скачанный файл пишется максимум метаданных ID3v2.3 (через `mutagen`, он в
|
||||
`requirements.txt`):
|
||||
|
||||
- название, все исполнители (`TPE1`), альбом (`TALB`) и альбомный исполнитель
|
||||
(`TPE2`);
|
||||
- номер трека и диска (`TRCK`/`TPOS`), год и дата релиза (`TYER`/`TDAT`),
|
||||
жанр как в API (`TCON`), лейбл (`TPUB`), длительность (`TLEN`);
|
||||
- обложка 600×600 (`APIC`);
|
||||
- текст песни (`USLT`) и синхронный текст (`SYLT`), если он есть: сначала
|
||||
пробуем MTS, затем [LRCLIB](https://lrclib.net);
|
||||
- ссылка на трек (`WOAR`/`COMM`), пометка `explicit` (`ITUNESADVISORY`) и
|
||||
служебные поля с id трека, альбома и `realId` (`TXXX`).
|
||||
|
||||
Без `mutagen` или при `--no-tags` теги не пишутся, скачивание при этом
|
||||
работает как обычно.
|
||||
|
||||
## Управление из системной панели (MPRIS)
|
||||
|
||||
При запуске TUI и Qt-приложение регистрируются в сессионном D-Bus как источник
|
||||
@@ -134,10 +161,12 @@ D-Bus или без `dbus-next` приложение просто работае
|
||||
| `autoplay` | `false` | начинать воспроизведение сразу при запуске |
|
||||
| `start_queue` | `wave` | что открыть первым: `wave`, `favorites` или `history` |
|
||||
| `wave_from_history` | `true` | продолжать «Мою волну» с последних треков |
|
||||
| `download_dir` | `~/Music/MTS Music` | куда сохранять скачанные MP3 |
|
||||
|
||||
В Qt-приложении на странице настроек дополнительно выбирается устройство вывода
|
||||
звука. Громкость меняется на лету, остальные настройки применяются к новым
|
||||
трекам и при следующем запуске.
|
||||
звука и папка загрузок (кнопка «Выбрать…»). В TUI путь задаётся в настройках
|
||||
пунктом «Папка загрузок». Громкость меняется на лету, остальные настройки
|
||||
применяются к новым трекам и при следующем запуске.
|
||||
|
||||
## Команды
|
||||
|
||||
@@ -173,9 +202,16 @@ D-Bus или без `dbus-next` приложение просто работае
|
||||
# воспроизведение (нужен mpv или ffplay)
|
||||
.venv/bin/python mtsmusic.py play 12345678
|
||||
|
||||
# скачивание
|
||||
# скачивание: в папку из download_dir, имя «Исполнитель - Название.mp3»
|
||||
.venv/bin/python mtsmusic.py download 12345678
|
||||
|
||||
# скачивание в конкретную папку или файл
|
||||
.venv/bin/python mtsmusic.py download 12345678 -d ~/Music
|
||||
.venv/bin/python mtsmusic.py download 12345678 -o track.mp3
|
||||
|
||||
# без ID3-тегов (быстрее, без обложки и текста)
|
||||
.venv/bin/python mtsmusic.py download 12345678 --no-tags
|
||||
|
||||
# настройки
|
||||
.venv/bin/python mtsmusic.py settings
|
||||
.venv/bin/python mtsmusic.py settings -s volume=60 seek_step=10
|
||||
|
||||
Reference in New Issue
Block a user