fix: address code review findings
This commit is contained in:
16
README.md
16
README.md
@@ -13,16 +13,16 @@ NaviWatcher is an autonomous service daemon that monitors your Navidrome music c
|
||||
1. **Scans** your Navidrome library via Subsonic API to get the list of artists and albums.
|
||||
2. **Fetches** full artist discographies from MusicBrainz (using Release Groups to avoid duplicate editions).
|
||||
3. **Compares** local collection with external data using fuzzy matching (configurable threshold, default 0.85).
|
||||
4. **Notifies** you about missing albums/singles/EPs through daily Telegram digests and a web dashboard.
|
||||
4. **Notifies** you about missing albums/singles/EPs through daily Telegram digests and a web dashboard *(not yet implemented — see Implementation Status)*.
|
||||
|
||||
### Features
|
||||
|
||||
- **Subsonic API compatible** — works with Navidrome, Airsonic, Ampache, and other Subsonic-compatible servers.
|
||||
- **Fuzzy matching** — smart string normalization (ignores remastered/deluxe/anniversary editions, year suffixes, special characters).
|
||||
- **Configurable filters** — ignore bootlegs, singles, compilations, live albums, remixes, soundtracks per artist or globally.
|
||||
- **Per-artist filters** — opt out of Singles and Compilations per artist (via `artist_settings`); type filtering includes only Album/Single/EP primary types (plus release groups whose secondary types include Single/EP/Compilation).
|
||||
- **MusicBrainz caching** — 24-hour TTL cache to minimize API calls and respect rate limits (1 req/sec).
|
||||
- **Telegram notifications** — daily summary messages with links to the web UI.
|
||||
- **Web dashboard** — browse missing albums, ignore releases, manage artist-specific settings.
|
||||
- **Telegram notifications** — *(not yet implemented)* daily summary messages with links to the web UI.
|
||||
- **Web dashboard** — *(not yet implemented)* browse missing albums, ignore releases, manage artist-specific settings.
|
||||
- **Single binary deployment** — all HTML templates embedded via `//go:embed`.
|
||||
- **Docker support** — ready for `docker compose` deployment.
|
||||
|
||||
@@ -129,16 +129,16 @@ NaviWatcher — это автономный сервис-демон для мо
|
||||
1. **Сканирует** библиотеку Navidrome через Subsonic API — получает список артистов и альбомов.
|
||||
2. **Загружает** полные дискографии артистов из MusicBrainz (использует Release Groups, чтобы избежать дубликатов изданий).
|
||||
3. **Сравнивает** локальную коллекцию с внешними данными через нечёткое сравнение строк (настраиваемый порог, по умолчанию 0.85).
|
||||
4. **Уведомляет** об отсутствующих альбомах/синглах/EP через ежедневные дайджесты в Telegram и веб-панель.
|
||||
4. **Уведомляет** об отсутствующих альбомах/синглах/EP через ежедневные дайджесты в Telegram и веб-панель *(пока не реализовано — см. раздел «Статус реализации»)*.
|
||||
|
||||
### Возможности
|
||||
|
||||
- **Совместим с Subsonic API** — работает с Navidrome, Airsonic, Ampache и другими Subsonic-совместимыми серверами.
|
||||
- **Нечёткое сравнение** — умная нормализация строк (игнорирует ремастеры, deluxe/anniversary-издания, год в скобках, спецсимволы).
|
||||
- **Гибкие фильтры** — игнорирование бутлегов, синглов, компиляций, лайвов, ремиксаундов — глобально или для конкретного артиста.
|
||||
- **Фильтры по артистам** — отключение синглов и компиляций для конкретного артиста (через `artist_settings`); фильтрация по типам включает только основные типы Album/Single/EP (а также группы релизов, чьи вторичные типы содержат Single/EP/Compilation).
|
||||
- **Кэширование MusicBrainz** — TTL 24 часа для минимизации запросов и соблюдения лимитов (1 запрос/сек).
|
||||
- **Уведомления в Telegram** — ежедневные сводки со ссылками на веб-интерфейс.
|
||||
- **Веб-панель** — просмотр отсутствующих альбомов, игнорирование релизов, управление настройками артистов.
|
||||
- **Уведомления в Telegram** — *(пока не реализовано)* ежедневные сводки со ссылками на веб-интерфейс.
|
||||
- **Веб-панель** — *(пока не реализовано)* просмотр отсутствующих альбомов, игнорирование релизов, управление настройками артистов.
|
||||
- **Один бинарный файл** — все HTML-шаблоны встроены через `//go:embed`.
|
||||
- **Поддержка Docker** — готов к развёртыванию через `docker compose`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user