Replies: 5 comments 3 replies
-
I saw your work on the PR (#3312) a few months ago and I like the approach. So my intention (#560) was to create a fallback method of inferring metadata when Navidrome encounters an untagged file but I never found the time to look into it (I rarely work in Golang with any intensity so it takes me a while to grok unfamiliar codebases). Your PR has given me inspiration and the entry points on how to get moving on my idea... thanks! |
Beta Was this translation helpful? Give feedback.
-
Okay, I may be going it alone with this, but I've been using my tagfiles/sidecar implementation for months now, and since my initial draft PR (#3312) have enhanced the implementation and merged in the BFR updates from My implementation is currently on the I'm closing my previous draft PR for now. I fully understand that not everyone will want this and that the implementation introduces a new standard along with a maintenance burden, but @deluan will perhaps be interested to take a look anyway. Examples1. An artist compilation has not been tagged with Solution: place the following albumartist: DJ Yoda 2. A multi-disc album has a different album tag for each disc, and has been placed in subfolders Solution: place the following "CD*/*.flac":
album: Physical Graffiti
totaldiscs: 2
"CD1/*.flac":
discnumber: 1
"CD2/*.flac":
discnumber: 2 3. Albums by the same artist have variations of the artist name (e.g. Solution: place the following albumartist: Whatever
"album artist": null NEW: Arbitrary tag transformations using CEL expressionsMedia files from disparate sources can sometimes have tagging anomalies that would be labourious to fix using the above methods. I therefore added the possibility to use CEL expressions to apply scripted tag transformations. A key of Here is just 1 example that I recently dealt with. It concerns a DJ mix where the DJ name has been put in the
This can be fixed with the following albumartist: Name of DJ
artist:
$: tags["title"][0].split(" - ")[0].split(" & ")
title:
$: value.split(" - ")[1] You'll then end up with artists split correctly, and the title no longer containing the artist name. This can be very flexible, for example it could be used for path-and-filename-base tag inference, which although I wouldn't personally want it has been requested a few times. Here's an example of this: If there's interest I can provide more documentation on the expressions - for now you'd have to look at my code and the CEL docs to work out what's possible with this. @29821632 Thanks for being the only person to respond on this discussion, and please see my comment about about path-and-filename-base tag inference - perhaps you could become the second user of my fork!?
The problem with this is that the directory/filename can't always encode all the necessary info; for example some characters are not allowed in directory/folder names. But either way it would be possible with my implementation. |
Beta Was this translation helpful? Give feedback.
-
I think this is cool. It's also worth having some type of sidecar system that allows other metadata that it's not stored in files to reside outside the DB, acting also like a backup. On each scan / re-scan those sidecar files can be read and imported into DB. One particular scenario I would use this is for artist bio and artist genre, album description etc. It's nice to have a sidecar file for each artist and each album defining this "special" metadata. |
Beta Was this translation helpful? Give feedback.
-
I've been looking for something like this for a while, so it's nice to see it implemented here. |
Beta Was this translation helpful? Give feedback.
-
Referencing my two use cases at #2853 (comment) and #2853 (comment) this is a great contribution. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
It's often desirable to retain the untouched media files when tags need to be modified. Currently, this means keeping 2 copies of the files.
Prior work done in this area is m-Tags, which are/were supported by a Foobar2000 plugin. Here is an archive of the now-defunct website: http://web.archive.org/web/20190915154126/http://m-tags.org/index.html - It's simply a JSON file that sits alongside the media files and allows tags to be overridden.
I'd find something like this very useful - anyone else?
Beta Was this translation helpful? Give feedback.
All reactions