feat: cache tracks locally and add downloads
Треки больше не играют напрямую из сети: сервер Яндекса закрывает поток примерно через 45 секунд, если клиент читает медленнее реального времени, из-за чего плеер считал трек законченным и переключался на следующий. Теперь трек сначала скачивается в локальный кэш .mts-music/cache/ (512 МБ, LRU), а плеер играет готовый MP3 — это также ускоряет перемотку и повторное воспроизведение. Скачивание в выбранную папку: - CLI: download с несколькими ID, -d/--dir, -o/--output, --force; подборки --likes (всё избранное), --wave, --search QUERY, -n; - TUI и Qt: пункт меню «Скачать» с выбором папки и прогрессом; - имена файлов «Исполнитель - Название.mp3», уже скачанное пропускается. likes по умолчанию показывает всё избранное с общим количеством и поддерживает --ids для скриптов.
This commit is contained in:
43
README.md
43
README.md
@@ -71,8 +71,15 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
|
||||
История хранится в `.mts-music/history.json` (последние 100 треков).
|
||||
Плеер — `ffplay` (или `mpv`, если установлен). Пауза реализована через
|
||||
`SIGSTOP`/`SIGCONT`, а перемотка перезапускает поток с нужной секунды,
|
||||
поэтому отдельный демон не нужен.
|
||||
`SIGSTOP`/`SIGCONT`, а перемотка перезапускает воспроизведение с нужной
|
||||
секунды, поэтому отдельный демон не нужен.
|
||||
|
||||
Треки не транслируются напрямую: сначала они скачиваются в локальный кэш
|
||||
`.mts-music/cache/` (до 512 МБ, старые файлы удаляются автоматически), а плеер
|
||||
играет уже готовый MP3. Так надёжнее — сервер Яндекса закрывает соединение,
|
||||
если клиент читает поток медленнее реального времени, из-за чего трек
|
||||
обрывался через полминуты и клиент переключался на следующий. Заодно кэш
|
||||
убирает задержку при повторном прослушивании и делает перемотку мгновенной.
|
||||
|
||||
## Qt-приложение
|
||||
|
||||
@@ -114,6 +121,13 @@ PLAYWRIGHT_BROWSERS_PATH="$PWD/.playwright" .venv/bin/playwright install chromiu
|
||||
Для этого нужен `dbus-next` (он уже в `requirements.txt`). Без сессионного
|
||||
D-Bus или без `dbus-next` приложение просто работает как обычно, без интеграции.
|
||||
|
||||
## Скачивание из интерфейса
|
||||
|
||||
В меню обоих клиентов есть пункт «Скачать»: текущий трек, всё избранное,
|
||||
20 треков «Моей волны» или последние результаты поиска. Папка выбирается
|
||||
диалогом в Qt и вводится вручную в TUI, прогресс и число ошибок видны на
|
||||
экране. Скачивание идёт тем же кодом, что и в CLI.
|
||||
|
||||
## Настройки
|
||||
|
||||
Настройки открываются из меню (пункт «Настройки» в TUI и Qt) или из командной
|
||||
@@ -154,10 +168,12 @@ D-Bus или без `dbus-next` приложение просто работае
|
||||
# сразу слушать подборку (Ctrl-C — остановить)
|
||||
.venv/bin/python mtsmusic.py mix -n 5 --play
|
||||
|
||||
# избранное: добавить / убрать / показать
|
||||
# избранное: добавить / убрать / показать текстом
|
||||
.venv/bin/python mtsmusic.py like 12345678
|
||||
.venv/bin/python mtsmusic.py unlike 12345678
|
||||
.venv/bin/python mtsmusic.py likes -n 20
|
||||
.venv/bin/python mtsmusic.py likes # все любимые треки
|
||||
.venv/bin/python mtsmusic.py likes -n 20 # только первые 20
|
||||
.venv/bin/python mtsmusic.py likes --ids # только ID, для скриптов
|
||||
|
||||
# текст песни: показать, сохранить, или с таймкодами
|
||||
.venv/bin/python mtsmusic.py lyrics 12345678
|
||||
@@ -173,8 +189,20 @@ D-Bus или без `dbus-next` приложение просто работае
|
||||
# воспроизведение (нужен mpv или ffplay)
|
||||
.venv/bin/python mtsmusic.py play 12345678
|
||||
|
||||
# скачивание
|
||||
# скачивание одного или нескольких треков в свою папку
|
||||
.venv/bin/python mtsmusic.py download 12345678 -d ~/Music/MTS
|
||||
.venv/bin/python mtsmusic.py download 12345678 87654321 -d ~/Music/MTS
|
||||
|
||||
# как в мобильном приложении: скачать избранное, волну или результаты поиска
|
||||
.venv/bin/python mtsmusic.py download --likes -d ~/Music/MTS
|
||||
.venv/bin/python mtsmusic.py download --wave -n 20 -d ~/Music/MTS
|
||||
.venv/bin/python mtsmusic.py download --search "Кино" -n 10 -d ~/Music/MTS
|
||||
|
||||
# один трек с явным именем файла, перезапись существующих
|
||||
.venv/bin/python mtsmusic.py download 12345678 -o track.mp3
|
||||
.venv/bin/python mtsmusic.py download --likes -d ~/Music/MTS --force
|
||||
|
||||
# то же самое есть в меню TUI и Qt — пункт «Скачать»
|
||||
|
||||
# настройки
|
||||
.venv/bin/python mtsmusic.py settings
|
||||
@@ -216,6 +244,11 @@ TUI нужно запускать в настоящем терминале (stdi
|
||||
- Использовать только для личного прослушивания, не перераздавать контент.
|
||||
- Если `api.music.yandex.net` недоступен, проверь IPv6: клиент принудительно
|
||||
ходит по IPv4.
|
||||
- Кэш треков лежит в `.mts-music/cache/`. Его можно удалить в любой момент —
|
||||
при следующем запуске треки скачаются заново.
|
||||
- `download` (и пункт «Скачать» в TUI/Qt) по умолчанию не перезаписывает уже
|
||||
скачанные файлы: повторный запуск докачает только новое. Флаг `--force`
|
||||
в CLI включает перезапись.
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
Reference in New Issue
Block a user