MinimServer Forum
[SOLVED] tagValue Artist.merge does not work with certain tagUpdate file? - Printable Version

+- MinimServer Forum (https://forum.minimserver.com)
+-- Forum: MinimServer (/forumdisplay.php?fid=1)
+--- Forum: Support (/forumdisplay.php?fid=4)
+--- Thread: [SOLVED] tagValue Artist.merge does not work with certain tagUpdate file? (/showthread.php?tid=6719)

Pages: 1 2


[SOLVED] tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 06-11-2022 19:02

UPDATE: i found a workaround by adding lines like "+ARTIST=..." ("+ARTISTINDIVIDUAL=" in my particular case) into my tagUpdate file so the original complaint I posted is not a blocker any more. but it seems overall tagValue feature is a bit buggy (which is very rare given my overall superior experience with MinimServer)


Hi,

I recently found MinimServer and have purchased a license. it's such a solid piece of software for managing my library.

The best part of it, IMO, is the tagUpdate feature. Right now, I use this feature to add many virtual tags for my files, where virtual tag information comes from other tools (like Song Kong) as well as my iTunes libraries. I wrote some Python scripts to merge my iTunes rating information and Song Kong tags into a proper tagUpdate file in the following format, like the following, with no extra newline in the file

Code:
@ALBUMARTIST=Album Artist 1
&ALBUM=Album1,1
&DISCNUMBER=1
&TRACKNUMBER=1
+PERFORMER=P1
+RATING=4
+CONDUCTOR=C1
+GROUP=G1
&ALBUM=Album1,1
&DISCNUMBER=1
&TRACKNUMBER=2
+PERFORMER=P2
+RATING=5
+CONDUCTOR=C3
+GROUP=G1
...
&ALBUM=Album1,2
&DISCNUMBER=1
&TRACKNUMBER=1
+PERFORMER=P3
+RATING=3
+CONDUCTOR=C3
+GROUP=G2
...
@ALBUMARTIST=Album Artist 2
&ALBUM=Album2,1
&DISCNUMBER=1
&TRACKNUMBER=1
+PERFORMER=P4
+RATING=4
+CONDUCTOR=C5
+GROUP=G3
...

Then I added Conductor, Performer, Ensemble, Rating, Group to indexTag, and set tagValue = Artist.merge={Conductor, Performer, Ensemble}

the idea is that I can browse all related parties (artist, conductor, performer, ensemble) for each track in "All Artists" altogether. However, it seems sometimes some conductors (maybe as well as some other entries) do not show up in the list.


My full library has ~17000 tracks and writeTagChanges file seems to suggest tag addition works correctly. Also, i do see the missing conductor in the "Conductor" view; also when I set Artist.displayFormat={$artist$performer$ensemble$conductor}, I can see the missing conductor as well. I tried to reduce the size of the tagUpdate file and the issue still persists.


RE: tagValue Artist.merge does not work with certain tagUpdate file? - simoncn - 06-11-2022 22:58

If you can see the conductor in the Conductor index and this Conductor index entry contains all tracks that should have this conductor, this means tagUpdate has added the Conductor correctly.

I am not aware of any bugs in tagValue. To investigate this further, I would need a specific example of a Conductor tag that is not present when browsing the All Artists container.


RE: tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 07-11-2022 00:22

Hi,

Thanks for the prompt reply. I put a minimal example in https://www.dropbox.com/s/wz4s2s7jjz809u1/minimal_example.zip?dl=0 and you can try it out (all audio tracks have been trimmed for size and legality concerns)

In particular "sir john eliot gardiner" does not appear in "All artists". Similar problems happen to Performer "Alison Bury" as well


RE: tagValue Artist.merge does not work with certain tagUpdate file? - simoncn - 07-11-2022 08:33

Edit: updated this post as the original information posted was incorrect.

Thanks for the very helpful small example.

The problem is caused by your aliasTags setting: ArtistIndividual:-Artist

This is causing all your ARTIST tags (both those in the audio file and those added by tag update) to be removed and replaced with your ARTISTINDIVIDUAL tagged values.

I have thought about whether this should be changed to only remove ARTIST tags in the audio file. Because tags added by tag update are processed by the aliasTags setting, I think MinimServer should be consistent and apply "minus alias" processing in the same way.


RE: tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 07-11-2022 15:55

Hi,

Thanks for the prompt reply.

"ArtistIndividual" is my way of dealing with compatibility with iTunes and other players not supporting true multi artist tagging. Basically

1. each file only has ONE Artist tag physically, where multiple artists are separated by semicolon. Example: "A; B; C". Then I pass all files through some processing
2. if there's no semicolon in the Artist tag, then my processor ignore such files
3. otherwise, add multiple "ArtistIndividual" tags into the file.

By setting up "ArtistIndividual:-Artist", i ensure that after mapping, each Artist is alway some individual artist, not multiple artists concatenated together. This trick is very rewarding as it allows me browsing the library much more easily.



Now, back to your statement that "This is causing all your ARTIST tags (both those in the audio file and those added by tag update) to be removed and replaced with your ARTISTINDIVIDUAL tagged values.", I think this is the CORRECT behavior. tagUpdate's tags should act as physical tags.

The problem, IMO, is that I think tagValue should apply after "aliasTags" is done and does not care about physical tag any more (I feel this is how "Artist.displayFormat" works; I feel it treats all physical ARTISTINDIVIDUAL as ARTIST); or maybe I'm wrong here. But in any case I feel the relationship between aliasTags and tagValue is not cleanly explained in the doc and I can only make educated guesses.

Overall, I feel the MinimServer doc is lacking about the order in which all options take effect and the dependencies among options. From a user's perspective, as long as these are explained clearly and the implemented behaviors can satisfy users' requirements, it's ok.

(07-11-2022 08:33)simoncn Wrote:  Edit: updated this post as the original information posted was incorrect.

Thanks for the very helpful small example.

The problem is caused by your aliasTags setting: ArtistIndividual:-Artist

This is causing all your ARTIST tags (both those in the audio file and those added by tag update) to be removed and replaced with your ARTISTINDIVIDUAL tagged values.

I have thought about whether this should be changed to only remove ARTIST tags in the audio file. Because tags added by tag update are processed by the aliasTags setting, I think MinimServer should be consistent and apply "minus alias" processing in the same way.



RE: tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 07-11-2022 16:10

BTW, i tried setting "ArtistIndividual.merge={Conductor, Performer, Ensemble}" and it does not work either. so I feel right now the behavior of tagValue prevents me from creating a universal artist list unless I write multiple artist tags into the file or via tagUpdate (basically implementing "ArtistIndividual:-Artist" physically or via tagUpdate).


RE: tagValue Artist.merge does not work with certain tagUpdate file? - simoncn - 07-11-2022 17:52

This should do what you want (changes in bold):

aliasTags = Artist:nil
alphaGroup = items=1000
.autoUpdate = false
contentDir = /share/Multimedia/iTunes_Lib/St. Matthew Passion
indexTags = *RecentPlayed, Favorite, Rating, Artist, Date, Genre, All Artists,
Group, Composer, Ensemble, Conductor, Performer, #AudioQuality, *RecentAdded
itemTags = ArtistIndividual
serverOptions = indexArtwork=all
tagFormat = Title.displayFormat={$title^$rating^ [^]}
tagOptions = Artist.ignore.sort={The, Sir}, Album.sortTags={Artist, Date}, Conductor.ignore.sort={The, Sir}, Performer.ignore.sort={The, Sir}, Ensemble.ignore.sort={The, Sir}
tagUpdate = /share/Multimedia/iTunes_Lib/MinimServer/tagUpdateDebug.txt
tagValue = Artist.merge={ArtistIndividual, Conductor, Performer, Ensemble}
writeTagChanges = /share/Multimedia/iTunes_Lib/MinimServer/tagUpdateChangesDebug.txt

It does the following:
1) Ignore the composite Artist tag in the file
2) Add Conductor, Performer and Ensemble tags using tag update
3) Create Artist tags by combining ArtistIndividual tags in the file with tags added by tagUpdate


RE: tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 07-11-2022 17:58

Thanks. I just tried it. The issue is non-composite Artist tags are now gone...

At any rate, since I can edit my tagUpdate file quite flexibly, there's no hard blocker here for me. But a better documentation on these options will be much appreciated.

(07-11-2022 17:52)simoncn Wrote:  This should do what you want (changes in bold):

aliasTags = Artist:nil
alphaGroup = items=1000
.autoUpdate = false
contentDir = /share/Multimedia/iTunes_Lib/St. Matthew Passion
indexTags = *RecentPlayed, Favorite, Rating, Artist, Date, Genre, All Artists,
Group, Composer, Ensemble, Conductor, Performer, #AudioQuality, *RecentAdded
itemTags = ArtistIndividual
serverOptions = indexArtwork=all
tagFormat = Title.displayFormat={$title^$rating^ [^]}
tagOptions = Artist.ignore.sort={The, Sir}, Album.sortTags={Artist, Date}, Conductor.ignore.sort={The, Sir}, Performer.ignore.sort={The, Sir}, Ensemble.ignore.sort={The, Sir}
tagUpdate = /share/Multimedia/iTunes_Lib/MinimServer/tagUpdateDebug.txt
tagValue = Artist.merge={ArtistIndividual, Conductor, Performer, Ensemble}
writeTagChanges = /share/Multimedia/iTunes_Lib/MinimServer/tagUpdateChangesDebug.txt

It does the following:
1) Ignore the composite Artist tag in the file
2) Add Conductor, Performer and Ensemble tags using tag update
3) Create Artist tags by combining ArtistIndividual tags in the file with tags added by tagUpdate



RE: tagValue Artist.merge does not work with certain tagUpdate file? - simoncn - 07-11-2022 19:41

(07-11-2022 17:58)zym1010 Wrote:  Thanks. I just tried it. The issue is non-composite Artist tags are now gone...

A small tweak should fix that:

aliasTags = Artist:FileArtist
itemTags = ArtistIndividual, FileArtist
tagValue = Artist.default={ArtistIndividual, FileArtist}, Artist.merge={Conductor, Performer, Ensemble}

As you can see from the above, the strategy is to preserve tag information in the first stages of processing (reading file tags, tag update) and then combine and filter this information in the later stages (tagValue).


RE: tagValue Artist.merge does not work with certain tagUpdate file? - zym1010 - 07-11-2022 19:53

got it. it seems working now!!!

some detailed doc explaining the stages of tag processing and their relationship will be great!!!

(07-11-2022 19:41)simoncn Wrote:  
(07-11-2022 17:58)zym1010 Wrote:  Thanks. I just tried it. The issue is non-composite Artist tags are now gone...

A small tweak should fix that:

aliasTags = Artist:FileArtist
itemTags = ArtistIndividual, FileArtist
tagValue = Artist.default={ArtistIndividual, FileArtist}, Artist.merge={Conductor, Performer, Ensemble}

As you can see from the above, the strategy is to preserve tag information in the first stages of processing (reading file tags, tag update) and then combine and filter this information in the later stages (tagValue).