Music - changing metadata path from config to media #7189

Open
opened 2026-02-07 04:41:12 +03:00 by OVERLORD · 8 comments
Owner

Originally created by @obeidahmad on GitHub (Jul 25, 2025).

Description of the bug

I have setup jellyfin v 10.10.7 through docker, and it works fine. I have it configured to save artists config to the media folder itself. I realized that when an artist does not have a folder in my /media folder, a folder is created in the /config/metadata/artists folder, and I am ok with that as some artists appear as guests on other albums but are not the album artist.

However, when I want to add that artist to the /media folder, jellyfin keeps looking for the metadata in the /config/metadata/artists. Deleting the config folder and rescanning recreates the /config/metadata/artists folder.

Removing the artist completely from both config and media, rescanning, then readding the artist again does not fix the issue. I cannot seem to be able to change the config path from the ui as well.

Reproduction steps

  1. Add an artist (let's name it artist_1) to another album as a secondary artist.
  2. Rescan, watch as the folder /config/metadata/artists/artist_1 is created, it should create the artist.nfo file inside as well.
  3. Add that artist to your /media folder. So you should have now have the folder /media/artist_1, I also added inside folder.jpg and backdrop.jpg.
  4. Rescan, the ui shows the new album however still is reading the config from /config/metadata/artists/artist_1

What is the current bug behavior?

Adding an artist to the /media folder does not update Jellyfin's lookup folder for artist metadata even when it's the preferred set behaviour.

What is the expected correct behavior?

When /media/artist exists Jellyfin should copy and read the metadata from the /media/artist folder and drop the /config/metadata/artists/artist folder

Jellyfin Server version

10.10.0+

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.10.7

Environment

- OS: Docker (jellyfin/jellyfin)
- Linux Kernel: 
- Virtualization: Docker
- Clients: jellyfin-web client
- Browser: any
- FFmpeg Version:
- Playback Method:
- Hardware Acceleration:
- GPU Model:
- Plugins:
- Reverse Proxy:
- Base URL:
- Networking:
- Jellyfin Data Storage:
- Media Storage:
- External Integrations:

Jellyfin logs

[2025-07-25 14:04:31.723 +00:00] [INF] [20] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/03. Changes.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:31.798 +00:00] [INF] [24] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/04. Power to Love.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:31.885 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/05. Message to Love.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:31.960 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/02. Machine Gun.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:32.035 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/01. Who Knows.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:32.111 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/06. We Gotta Live Together.flac\" -threads 0 -v warning -print_format json -show_streams -show_format"
[2025-07-25 14:04:33.334 +00:00] [INF] [24] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Completed after 0 minute(s) and 4 seconds
[2025-07-25 14:04:33.452 +00:00] [INF] [18] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/media"
[2025-07-25 14:04:34.457 +00:00] [INF] [24] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path "/media"
[2025-07-25 14:04:34.460 +00:00] [INF] [24] Emby.Server.Implementations.Library.LibraryManager: Validating media library
[2025-07-25 14:04:34.464 +00:00] [WRN] [24] MediaBrowser.Controller.Entities.BaseItem: Library folder "/config/data/playlists" is inaccessible or empty, skipping
[2025-07-25 14:04:34.478 +00:00] [WRN] [39] MediaBrowser.Controller.Entities.BaseItem: Library folder "/config/data/playlists" is inaccessible or empty, skipping
[2025-07-25 14:04:35.770 +00:00] [INF] [49] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Completed after 0 minute(s) and 1 seconds
[2025-07-25 14:04:35.949 +00:00] [INF] [42] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/media"

FFmpeg logs


Client / Browser logs

No response

Relevant screenshots or videos

The image below (taken from jellyfin-web) shows how the config path is still /config/metadata/artists/artist
Image

The image below (taken from jellyfin-web) shows how i expect the path to be usually /media/artist
Image

Additional information

No response

Originally created by @obeidahmad on GitHub (Jul 25, 2025). ### Description of the bug I have setup jellyfin v 10.10.7 through docker, and it works fine. I have it configured to save artists config to the media folder itself. I realized that when an artist does not have a folder in my /media folder, a folder is created in the /config/metadata/artists folder, and I am ok with that as some artists appear as guests on other albums but are not the album artist. However, when I want to add that artist to the /media folder, jellyfin keeps looking for the metadata in the /config/metadata/artists. Deleting the config folder and rescanning recreates the /config/metadata/artists folder. Removing the artist completely from both config and media, rescanning, then readding the artist again does not fix the issue. I cannot seem to be able to change the config path from the ui as well. ### Reproduction steps 1. Add an artist (let's name it artist_1) to another album as a secondary artist. 2. Rescan, watch as the folder /config/metadata/artists/artist_1 is created, it should create the artist.nfo file inside as well. 3. Add that artist to your /media folder. So you should have now have the folder /media/artist_1, I also added inside folder.jpg and backdrop.jpg. 4. Rescan, the ui shows the new album however still is reading the config from /config/metadata/artists/artist_1 ### What is the current _bug_ behavior? Adding an artist to the /media folder does not update Jellyfin's lookup folder for artist metadata even when it's the preferred set behaviour. ### What is the expected _correct_ behavior? When /media/artist exists Jellyfin should copy and read the metadata from the /media/artist folder and drop the /config/metadata/artists/artist folder ### Jellyfin Server version 10.10.0+ ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.10.7 ### Environment ```markdown - OS: Docker (jellyfin/jellyfin) - Linux Kernel: - Virtualization: Docker - Clients: jellyfin-web client - Browser: any - FFmpeg Version: - Playback Method: - Hardware Acceleration: - GPU Model: - Plugins: - Reverse Proxy: - Base URL: - Networking: - Jellyfin Data Storage: - Media Storage: - External Integrations: ``` ### Jellyfin logs ```shell [2025-07-25 14:04:31.723 +00:00] [INF] [20] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/03. Changes.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:31.798 +00:00] [INF] [24] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/04. Power to Love.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:31.885 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/05. Message to Love.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:31.960 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/02. Machine Gun.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:32.035 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/01. Who Knows.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:32.111 +00:00] [INF] [18] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/media/Jimi Hendrix/1970 - Band Of Gypsys (CD, 2010, EU, 88697893792)/06. We Gotta Live Together.flac\" -threads 0 -v warning -print_format json -show_streams -show_format" [2025-07-25 14:04:33.334 +00:00] [INF] [24] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Completed after 0 minute(s) and 4 seconds [2025-07-25 14:04:33.452 +00:00] [INF] [18] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/media" [2025-07-25 14:04:34.457 +00:00] [INF] [24] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path "/media" [2025-07-25 14:04:34.460 +00:00] [INF] [24] Emby.Server.Implementations.Library.LibraryManager: Validating media library [2025-07-25 14:04:34.464 +00:00] [WRN] [24] MediaBrowser.Controller.Entities.BaseItem: Library folder "/config/data/playlists" is inaccessible or empty, skipping [2025-07-25 14:04:34.478 +00:00] [WRN] [39] MediaBrowser.Controller.Entities.BaseItem: Library folder "/config/data/playlists" is inaccessible or empty, skipping [2025-07-25 14:04:35.770 +00:00] [INF] [49] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Completed after 0 minute(s) and 1 seconds [2025-07-25 14:04:35.949 +00:00] [INF] [42] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/media" ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs _No response_ ### Relevant screenshots or videos The image below (taken from jellyfin-web) shows how the config path is still /config/metadata/artists/artist <img width="1036" height="292" alt="Image" src="https://github.com/user-attachments/assets/c68e23ef-591b-4c05-bea8-2d26c9852f22" /> The image below (taken from jellyfin-web) shows how i expect the path to be usually /media/artist <img width="1042" height="282" alt="Image" src="https://github.com/user-attachments/assets/2eed1dba-dacb-485a-9a3a-6a7e872f97a3" /> ### Additional information _No response_
OVERLORD added the bugmusic labels 2026-02-07 04:41:12 +03:00
Author
Owner

@TimF0 commented on GitHub (Jul 25, 2025):

I had the same issue - I found that it wasn't so much around you adding the artist as a new artist in your /media folder, but that they were already referenced (appearing on) other existing albums.

The only way I found to do it was to remove both the artist and any of their albums that existed, but ALSO remove any albums/tracks where they were guest artists, delete them from the metadata directory, rescan, then add both their own albums AND the albums where they were a guest artist back in (loading their own albums first to ensure they ended up on the /media folder).

Yes it's a pain and ideally I'd like to see artists "auto-migrated" to the media folder (if so configured) when an album where they're the album artist is added, or always added to the /media folder even if they're a guest artist (if so configured), but this is a workaround, albeit an awkward one, for now.

Doesn't fix the issue, but hopefully it helps you organise your music :)

@TimF0 commented on GitHub (Jul 25, 2025): I had the same issue - I found that it wasn't so much around you adding the artist as a new artist in your /media folder, but that they were already referenced (appearing on) other existing albums. The only way I found to do it was to remove both the artist and any of their albums that existed, but ALSO remove any albums/tracks where they were guest artists, delete them from the metadata directory, rescan, then add both their own albums AND the albums where they were a guest artist back in (loading their own albums first to ensure they ended up on the /media folder). Yes it's a pain and ideally I'd like to see artists "auto-migrated" to the media folder (if so configured) when an album where they're the album artist is added, or always added to the /media folder even if they're a guest artist (if so configured), but this is a workaround, albeit an awkward one, for now. Doesn't fix the issue, but hopefully it helps you organise your music :)
Author
Owner

@obeidahmad commented on GitHub (Jul 25, 2025):

@TimF0. Thank you for the tip, your method works.

Doesn't fix the issue, but hopefully it helps you organise your music :)

I do agree with you, I still believe a more correct fix is needed.

@obeidahmad commented on GitHub (Jul 25, 2025): @TimF0. Thank you for the tip, your method works. > Doesn't fix the issue, but hopefully it helps you organise your music :) I do agree with you, I still believe a more correct fix is needed.
Author
Owner

@Behem07h commented on GitHub (Aug 19, 2025):

This was an issue for me as well, but slightly differently.

I had my albumartist tag set as the artist's name as defined by my media directory, and my artist tag set as the artist's youtube channel name (which differs from the media directory name). This resulted in the album artists category being my media sorted by the directories and the artists category being the media sorted by the channel name of the artist.

Somewhere along the way, that behavior changed and I got both artist and album artists in the album artists category. Assuming this was intended by jellyfin I then retagged all my media such that albumartist, artist and the media directory names match, and I moved the channel name to a unused tag that I arbitrarily named "channel name". Just like the other users before me, jellyfin did not update the config/metadata/artists directory and keeps recreating it when the contents are deleted, so my album artists category is still messy D:

Hopefully the method that was outlined here by TimF0 works for me as well

@Behem07h commented on GitHub (Aug 19, 2025): This was an issue for me as well, but slightly differently. I had my albumartist tag set as the artist's name as defined by my media directory, and my artist tag set as the artist's youtube channel name (which differs from the media directory name). This resulted in the album artists category being my media sorted by the directories and the artists category being the media sorted by the channel name of the artist. Somewhere along the way, that behavior changed and I got both artist and album artists in the album artists category. Assuming this was intended by jellyfin I then retagged all my media such that albumartist, artist and the media directory names match, and I moved the channel name to a unused tag that I arbitrarily named "channel name". Just like the other users before me, jellyfin did not update the config/metadata/artists directory and keeps recreating it when the contents are deleted, so my album artists category is still messy D: Hopefully the method that was outlined here by TimF0 works for me as well
Author
Owner

@Behem07h commented on GitHub (Aug 19, 2025):

To be honest, I "just" want to host my music according to a fixed directory structure and tags, so its quite frustrating to me that jellyfin has so many "smart" features that cannot be turned off

@Behem07h commented on GitHub (Aug 19, 2025): To be honest, I "just" want to host my music according to a fixed directory structure and tags, so its quite frustrating to me that jellyfin has so many "smart" features that cannot be turned off
Author
Owner

@jbiosca78 commented on GitHub (Nov 14, 2025):

It happens to me. I would like to remove the "automatic" artist creation in config and have the possibility to create my data manually. This is a mess.

@jbiosca78 commented on GitHub (Nov 14, 2025): It happens to me. I would like to remove the "automatic" artist creation in config and have the possibility to create my data manually. This is a mess.
Author
Owner

@obeidahmad commented on GitHub (Nov 17, 2025):

@jbiosca78 for me manual artist creation would just add extra work. I like the automatic creation, but I wish it allows for easier control.
Many things I realized related to this automatic creation. For example the artist.nfo doesn't always seem to contain all the data. Sometimes it contains the albums sometimes not. Renaming an artist is very annoying and you need to basically delete the artist and readd, by renaming the folder and removing or fixing the artist.nfo
With all the different little problems, it feels to me almost like manual artist creation constantly moving around, deleting and recopying. What we need is a better automatic system.

@obeidahmad commented on GitHub (Nov 17, 2025): @jbiosca78 for me manual artist creation would just add extra work. I like the automatic creation, but I wish it allows for easier control. Many things I realized related to this automatic creation. For example the artist.nfo doesn't always seem to contain all the data. Sometimes it contains the albums sometimes not. Renaming an artist is very annoying and you need to basically delete the artist and readd, by renaming the folder and removing or fixing the artist.nfo With all the different little problems, it feels to me almost like manual artist creation constantly moving around, deleting and recopying. What we need is a better automatic system.
Author
Owner

@Tankudoraiba commented on GitHub (Nov 18, 2025):

I also have this problem. Frustrating thing is, I can't find a good way to clear the part of metadata to recreate only artist metadata from scratch.

@Tankudoraiba commented on GitHub (Nov 18, 2025): I also have this problem. Frustrating thing is, I can't find a good way to clear the part of metadata to recreate only artist metadata from scratch.
Author
Owner

@TimF0 commented on GitHub (Nov 18, 2025):

I also have this problem. Frustrating thing is, I can't find a good way to clear the part of metadata to recreate only artist metadata from scratch.

You should be able to use the method I outlined a few posts above. Agreed, it's not a "good" method, but it works... for now ! Unless you meant "recreate all artists' metadata" - which - yeah, I'm sort of dreading having to do due t of the amount of data customisation I've done...

@TimF0 commented on GitHub (Nov 18, 2025): > I also have this problem. Frustrating thing is, I can't find a good way to clear the part of metadata to recreate only artist metadata from scratch. You should be able to use the method I outlined a few posts above. Agreed, it's not a "good" method, but it works... for now ! Unless you meant "recreate all artists' metadata" - which - yeah, I'm sort of dreading having to do due t of the amount of data customisation I've done...
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#7189