diff --git a/routes/utils/watch/manager.py b/routes/utils/watch/manager.py index eb59643..c4f0dda 100644 --- a/routes/utils/watch/manager.py +++ b/routes/utils/watch/manager.py @@ -997,6 +997,10 @@ def generate_track_file_path( clean_main_artist = clean_name(main_artist) clean_title = clean_name(title) + # Prepare artist and album artist lists + artist_list = [clean_name(a) for a in re.split(r"\s*,\s*", artist_names or "") if a.strip()] or [clean_main_artist] + album_artist_list = [clean_name(a) for a in re.split(r"\s*,\s*", album_artist_names or "") if a.strip()] or [clean_album_artist] + # Prepare placeholder replacements replacements = { # Common placeholders @@ -1017,6 +1021,21 @@ def generate_track_file_path( else "0", # Convert ms to seconds } + artist_indices = {int(i) for i in re.findall(r"%artist_(\d+)%", custom_dir_format + custom_track_format)} + ar_album_indices = {int(i) for i in re.findall(r"%ar_album_(\d+)%", custom_dir_format + custom_track_format)} + + # Replace artist placeholders with actual values + for i in artist_indices: + idx = i - 1 + value = artist_list[idx] if 0 <= idx < len(artist_list) else artist_list[0] + replacements[f"%artist_{i}%"] = value + + # Replace album artist placeholders with actual values + for i in ar_album_indices: + idx = i - 1 + value = album_artist_list[idx] if 0 <= idx < len(album_artist_list) else album_artist_list[0] + replacements[f"%ar_album_{i}%"] = value + # Apply replacements to directory format dir_path = custom_dir_format for placeholder, value in replacements.items(): diff --git a/spotizerr-ui/src/components/config/FormattingTab.tsx b/spotizerr-ui/src/components/config/FormattingTab.tsx index 02bb4ca..e1a3643 100644 --- a/spotizerr-ui/src/components/config/FormattingTab.tsx +++ b/spotizerr-ui/src/components/config/FormattingTab.tsx @@ -37,9 +37,9 @@ const saveFormattingConfig = async (data: Partial) => { const placeholders = { Common: { "%music%": "Track title", - "%artist%": "Track artist", + "%artist%": "Track artist (use %arist_1%, %artist_2%, etc. for selecting specific artists)", "%album%": "Album name", - "%ar_album%": "Album artist", + "%ar_album%": "Album artist (use %ar_album_1%, %ar_album_2%, etc. for selecting specific album artists)", "%tracknum%": "Track number", "%year%": "Year of release", },