Multiple artists and/or genres

Issue description:

When tagging, I initially decided not to append every artist and genre of a single track with a separators. So I added multiple fields with the same name (ARTIST, or GENRE). The server (gonic) seems to support that, as I could see in the logs.
In Symfonium I can only see one artist for every track. The same for the genres. Are multiple fields with the same name just not supported, and I have to use a separator, or what am I doing wrong? :thinking:

Logs:

debug.log (351,3 KB)

Screenshots:


Additional information:

Here should be the relevant excerpt of a track with multiple artist- and genre-tags:

2023-10-07 20:13:16.060 Verbose/ExoPlayer: tracks [eventTime=559.18, mediaPos=0.00, window=0, period=0
2023-10-07 20:13:16.060 Verbose/ExoPlayer:   group [
2023-10-07 20:13:16.061 Verbose/ExoPlayer:     [X] Track:0, id=null, mimeType=audio/flac, channels=2, sample_rate=96000, supported=YES
2023-10-07 20:13:16.061 Verbose/ExoPlayer:   ]
2023-10-07 20:13:16.061 Verbose/ExoPlayer:   Metadata [
2023-10-07 20:13:16.061 Verbose/ExoPlayer:     VC: ALBUM=Random Access Memories (10th Anniversary Edition)
2023-10-07 20:13:16.061 Verbose/ExoPlayer:     VC: 1T_TAGGEDDATE=2023-10-07 14:20:29_AT
2023-10-07 20:13:16.061 Verbose/ExoPlayer:     VC: DISCNUMBER=1
2023-10-07 20:13:16.062 Verbose/ExoPlayer:     VC: DATE=2013-05-20
2023-10-07 20:13:16.062 Verbose/ExoPlayer:     VC: INITIALKEY=Gbm
2023-10-07 20:13:16.062 Verbose/ExoPlayer:     VC: TITLE=Touch (feat. Paul Williams)
2023-10-07 20:13:16.062 Verbose/ExoPlayer:     VC: ALBUMARTIST=Daft Punk
2023-10-07 20:13:16.062 Verbose/ExoPlayer:     VC: TRACKNUMBER=7
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: GENRE=electro
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: GENRE=filter house
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: GENRE=rock
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: ARTIST=Daft Punk
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: ARTIST=Paul Williams
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     VC: TRACKTOTAL=22
2023-10-07 20:13:16.063 Verbose/ExoPlayer:     Picture: mimeType=image/jpeg, description=
2023-10-07 20:13:16.064 Verbose/ExoPlayer:   ]
2023-10-07 20:13:16.064 Verbose/ExoPlayer: ]

Sorry if this is a duplicate of that topic, but I’m not sure if both scenarios are the same.

Gonic does not yet support multiple artists / genres and many things on it’s API as it’s not supported on Subsonic. (It’s documented ;))

But the good news is that after months of efforts the OpenSubsonic initiative I started is moving.
Expose many new fields to clients by Tolriq · Pull Request #51 · opensubsonic/open-subsonic-api · GitHub will be merged tomorrow and will be official. And Gonic is already on the rails to support most of it with 0.16.

You can thanks @sentriz for being efficient on the implementation :slight_smile:

Support in Symfonium will follow up when Gonic 0.16 is officially out.

Oh, thanks for the immediate answer. I wasn’t sure because of the snippet of the logs and misinterpreted it. Thanks for clarification.

These are great news! That will be a much cleaner solution as using the separators.

(Thanks @sentriz :smiling_face_with_three_hearts: :partying_face:)

1 Like

thats right it will be there for v0.16 :+1: however if you want to try it out already (and help me test too before the release) you can try the gonic :nightly tag

https://github.com/sentriz/gonic/#multi-valued-tags-v016

There’s no support yet for him to test in Symfonium.

I hope you’ll update the server I have access to for my tests and implementation @sentriz :slight_smile:

ah I see :+1: the server you have access to is running all the latest stuff

Ok I need to finish some stuff first but I’ll do that hopefully soon. This should be fast as it’s just a few mapping to make.

1 Like

I’d also volunteer to test stuff if that’s useful for you. I have literally tens of thousands of multi value tags (a mix of either separated by "; " or as multiple tag fields like OP.
The fact that jellyfin supports these is pretty much the only reason why I use it for Symfonium currently.
The GUI performance is atrocious with my library size.

grafik

If gonic has issues with large libraries I’d probably find out.


Does this mean a mixed usage (multiple fields and a delimiter like in my case) isn’t supported?
Also is there a reason why you limit multi value tags to albumartist and genre? I also use it for composer and artist.

Gonic currently have a major limitation (at least for me) as it does not support track artists and only album artists.

But I’m sure @sentriz will handle this at some point. (And no support for Composers / contributors yet too).

The first one to have all those will be LMS @itm GitHub - epoupon/lms at develop

This can be followed at Server implementation follow up · opensubsonic/open-subsonic-api · Discussion #55 · GitHub

1 Like

Very interesting. I’ll definitely keen LMS on my radar then. Thanks for the info.

@655321 might want to test LMS 3.42.0 works well with last Beta , have all fields and relatively nice sync speed with large libraries.

I tried but the docker container doesn’t seem to like me.

I’ve turned the code from the docker documentation:

docker create \
--name=lms \
--user <user_id:group_id> \
-p <port>:5082 \
-v <path_to_music>:/music:ro \
-v <path_to_persistent_data>:/var/lms \
--restart unless-stopped \
epoupon/lms

into docker compose and adjusted the values for my mounts etc.:

version: '3.3'
services:
    lms:
        container_name: lms
        user: '1000:1000'
        ports:
            - '5082:5082'
        volumes:
            - '/mnt/music:/music:ro'
            - '/opt/lms:/var/lms'
        restart: unless-stopped
        image: epoupon/lms

I’m using the exact same mounts (except for /opt/navidrome instead of /opt/lms) and the same user and group ids for my navidrome server which works as expected.

However lms initially refused to start with loads of permission denied errors until I chowned the /opt/lms folder to the 1000:1000 user. I’ve never had to do that with other containers.

And now that it’s up and running it does not scan my music. As per instructions I’ve typed in /music here
lms
and then hit scan. It finishes instantly with:
lms1
And the log of the container shows:

[2023-Oct-23 20:21:58.302] 1 - [error] - 140639162977080 [DB UPDATER] Cannot process entry '': No such file or directory

Edit: I also just noticed that the TZ of the log is off by 2 hours. So adding

environment:
      - TZ=Europe/Berlin

(at least fo my case) also seems prudent.

Am I doing something fundamentally wrong?

This is questions for @itm

True. I just thought you might notice an obvious error in my compose as you seem to have lms deployed successfully.

I usually use portainer or Synology container manager not a docker expert.

But he will answer.

Indeed you need to specify a user id (and its group id) that has read perms on the music folder and write perms on the data folder.

That’s the weird part. The user I specified (1000:1000) does have read permissions on the music folder.
Since it’s a samba mount within the ubuntu server VM that is already mounted as read-only, ANY user within the ubuntu VM has read permissions on that folder to be precise.
Or do I have to match the uid of the user on the TrueNAS server which I used to mount the samba share?

lms

I just tested that I 100% have read permissions on that music mount.

What if you run the container in interactive mode (-it) with the entrypoint /bin/sh (–entrypoint /bin/sh) and check the /music folder?

docker run -it \
--name=lms \
--user 1000:1000 \
--entrypoint /bin/sh \
-p 5082:5082 \
-v /mnt/music:/music:ro \
-v /opt/lms:/var/lms \
--restart unless-stopped \
epoupon/lms

I ran it like this and I cleary have read permissions on the music mount within the container.

Which still begs the question why this does not work.

version: '3.3'
services:
    lms:
        container_name: lms
        user: '1000:1000'
        environment:
            - TZ=Europe/Berlin
        ports:
            - '5082:5082'
        volumes:
            - '/mnt/music:/music:ro'
            - '/opt/lms:/var/lms'
        restart: unless-stopped
        image: epoupon/lms

Does it work when you run lms via the docker run command?