Commit Graph

16 Commits

Author SHA1 Message Date
jads
c8043d8b80 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	README.md
#	mtsmusic.py
#	qt_app.py
2026-10-25 23:45:33 +03:00
jads
de9bf80d11 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.
2026-10-25 20:06:59 +03:00
jadssss
ab595f6ff6 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 для скриптов.
2026-10-24 10:10:20 +03:00
jads
4460791a95 feat: expose player over MPRIS for system media controls
Register a session D-Bus MPRIS service (org.mpris.MediaPlayer2.mtsmusic)
in both the TUI and Qt apps, so the player shows up as a media source:
play/pause, next/previous, seek, metadata (title/artist/album/length/art)
and volume can be controlled from the GNOME media-controls extension,
playerctl and other MPRIS clients. Integration is optional and degrades
to a no-op without dbus-next or a session bus.
2026-10-23 23:32:59 +03:00
jads
5b202984fa docs: add MIT license and project description 2026-10-23 23:09:42 +03:00
jads
637ac23b73 feat: add settings (volume, seek step, start queue) with TUI/Qt pages
- settings.py persists to .mts-music/settings.json; CLI 'settings' command
- player gains volume support (ffplay -volume / mpv --volume)
- TUI settings screen and Qt settings page (volume, output device, seek step,
  autoplay, start queue, wave-from-history)
- start queue + autoplay applied at startup; arrows use configured seek step
- shared fetch_liked_tracks helper; cache TUI cover renders and Qt scaled cover
2026-10-23 22:44:55 +03:00
jads
b64c2dcd12 feat: polish Qt player and keep TUI cover in color 2026-10-23 22:21:47 +03:00
jads
0eb6909724 style: center TUI cover and switch player to monochrome 2026-10-23 22:04:51 +03:00
jads
26a58068cb feat: add phone-style PySide6 desktop player 2026-10-23 21:54:21 +03:00
jads
f77f81dead feat: redesign TUI as a compact phone-style player 2026-10-23 21:44:03 +03:00
jads
ff7edd9da7 fix: harden TUI startup and add diagnostics 2026-10-23 21:26:58 +03:00
jads
773ba69f0b feat: add Textual TUI player 2026-10-23 21:26:58 +03:00
jads
ce2e324dbe feat: add My Wave, favorites and lyrics support 2026-10-23 21:26:58 +03:00
jads
a41ec450fe feat: add search, playback and MP3 downloads 2026-10-23 21:26:58 +03:00
jads
c0d0b0f1f3 feat: add MTS SSO login and account status 2026-10-23 21:26:58 +03:00
jads
629b080ce7 chore: initialize MTS Music CLI project 2026-10-23 21:26:58 +03:00