Files
NaviWatcher/config.yaml.example
Vladimir Zagainov 389d177d85 fix: address code review findings
- Fix duplicate Telegram notifications: SyncArtistDiscography no longer wipes
  notifications_sent for the whole artist on every cache-miss re-sync; only
  markers for releases that disappear are pruned (FK-safe via INSERT OR REPLACE
  + rgid NOT IN (...)).
- Cache empty MusicBrainz discographies via a new artist_settings.last_synced
  column (migration 009) so zero-release artists honor the TTL instead of being
  re-fetched every cycle.
- Wire the Web UI server and Telegram notifier scheduler into main.run/NewApp.
- Guard startPeriodicSync against overlapping syncs with a done-channel slot.
- Add server.public_url config; NewServerWithConfig derives reachable links
  and no longer advertises the 0.0.0.0 bind address.
- Web handlers: use scanner.ScanArtist per artist, drop always-false
  releaseIgnored lookup and dead endsWith, thread configured threshold.
- Limit :memory: DB pool to one connection so migrations and queries share the
  same in-memory store.
2026-07-19 23:38:33 +03:00

37 lines
1.0 KiB
Plaintext

server:
host: "0.0.0.0"
port: 8080
# Basic Auth for Web UI access
username: "admin"
password: "CHANGE_ME"
# Externally-reachable base URL for links in Telegram digests (e.g. behind a
# reverse proxy). If omitted, links are derived from host:port — but when host
# is 0.0.0.0 (the unspecified bind address) no link is emitted, since it is
# not reachable from outside the host.
public_url: "https://naviwatcher.example.com"
navidrome:
url: "http://localhost:4533"
user: "watcher_service"
password: "CHANGE_ME"
musicbrainz:
user_agent: "NaviWatcher/1.0 ( your-email@example.com )"
cache_ttl: 24h
telegram:
enabled: true
token: "bot_token"
chat_id: "your_chat_id"
cron_schedule: "0 10 * * *"
scanner:
fuzzy_threshold: 0.85
# Periodic sync+scan pipeline: how often NaviWatcher pulls artists/albums from
# Navidrome, resolves MusicBrainz discographies, and re-runs the scanner.
# Accepts any duration Go's time.ParseDuration understands (e.g. "6h", "30m").
# Defaults to 6h when omitted.
sync:
interval: 6h