Repository navigation
Expand file tree
/
Copy pathenv.example
More file actions
83 lines (69 loc) · 4.05 KB
/
Copy pathenv.example
File metadata and controls
83 lines (69 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Requires Navidrome to be stopped during sync
# Example Windows: C:\Users\YourUser\AppData\Roaming\navidrome\navidrome.db
# Example Linux: /var/lib/navidrome/navidrome.db
# Example Docker: /path/to/your/navidrome/data/navidrome.db
# Example FreeBSD: /var/db/navidrome/navidrome.db
NAVIDROME_DB_PATH=Z:/navidrome/navidrome.db
NAVIDROME_URL=http://127.0.0.1:4533
# Optional: Pre-select a Navidrome user ID to skip the interactive prompt when multiple users exist
# The full user ID string from your Navidrome database (e.g. KDu0PyEFp2fsMkkivAbCeE)
# NAVIDROME_USER_ID=
# =============================================================================
# Last.fm Settings
# =============================================================================
LASTFM_API_KEY=lastfmapikey
LASTFM_USER=Username
# Optional: Required only if you want to sync Navidrome stars TO Last.fm loves
# Get API Secret from: https://www.last.fm/api/account/create
# To get session key, run: python -c "from src.lastfm import get_session_key; get_session_key()"
# LASTFM_API_SECRET=yourapisecret
# LASTFM_SESSION_KEY=yoursessionkey
# =============================================================================
# Sync Settings
# =============================================================================
SCROBBLED_FIRSTARTISTONLY=True
FIRST_ARTIST_WHITELIST=["Suzan & Freek", "Simon & Garfunkel", "AC/DC"]
# Remap Last.fm canonical artist names to your preferred spelling (default: {})
# Last.fm sometimes uses a different spelling than MusicBrainz/Navidrome.
# Keys are the Last.fm canonical names, values are your preferred names.
# Lookup is case-insensitive.
# Example: LASTFM_ARTIST_MAPPING={"Breed77": "Breed 77", "Sweet": "The Sweet", "Welle:Erdball": "Welle: Erdball"}
# LASTFM_ARTIST_MAPPING={}
# Sync play counts from Last.fm to Navidrome (default: True)
# When False, only loved/starred track status is synced — play counts are not touched
SYNC_PLAYCOUNT=True
# Enable fuzzy matching for track names (default: True)
# When False, only exact matches will be synced (no prompts for similar tracks)
# When True, prompts user to confirm fuzzy matches for better accuracy
ENABLE_FUZZY_MATCHING=True
FUZZY_MATCHING_THRESHOLD=85 # Minimum similarity score to consider a fuzzy candidate
FUZZY_MATCHING_AUTO_THRESHOLD=95 # Automatically accept a fuzzy match at or above this score
# Sync Navidrome starred tracks TO Last.fm as loved tracks (default: False)
# Requires LASTFM_API_SECRET and LASTFM_SESSION_KEY to be configured
SYNC_LOVED_TO_LASTFM=False
# Database Mode - Conflict resolution strategy (only used in database mode)
# Options: ask, navidrome, lastfm, higher, increment
# - ask: Interactive prompts for each conflict (default)
# - navidrome: Keep Navidrome count when higher
# - lastfm: Always use Last.fm count
# - higher: Use whichever count is higher
# - increment: Add Last.fm count to Navidrome count
PLAYCOUNT_CONFLICT_RESOLUTION=ask
# Album matching mode - How to handle tracks with same artist/title on different albums
# Options: album_agnostic, album_aware, prompt
# - album_agnostic: Combine all scrobbles for same artist/title regardless of album (default, current behavior)
# Example: "Track A" on "Album X" and "Compilation Y" both get 100 plays total from Last.fm
# - album_aware: Match by artist/title/album, allowing different play counts per album
# Example: "Track A" on "Album X" gets 60 plays, same track on "Compilation Y" gets 40 plays
# - prompt: Like album_agnostic, but always asks which album version(s) to update (no auto-selection)
ALBUM_MATCHING_MODE=album_agnostic
# Duplicate resolution strategy - When multiple album versions of the same track exist
# Options: ask, all, first, skip
# - ask: Prompt user for each duplicate (default, interactive)
# - all: Update all versions automatically
# - first: Update only the first version found
# - skip: Skip tracks with duplicates entirely
DUPLICATE_RESOLUTION=ask
# Auto-confirm all updates without prompting (default: False)
# When True, skips the "Proceed with reviewing and updating?" confirmation and applies all changes automatically
AUTO_CONFIRM=False