owncloud / music

:notes: Music app for ownCloud
GNU Affero General Public License v3.0
571 stars 199 forks source link

Better documentation for file structure/ meta data #1179

Open gamebeaker opened 3 days ago

gamebeaker commented 3 days ago

I would appreciate better documentation regarding what file structures are supported. Example jellyfin https://jellyfin.org/docs/general/server/media/music image I am not saying that the file structure should be the same. It is just a matter of documentation what is supported. Additionally it should be mentioned which meta data tags get used. There are different tag programs and if it is known which tags get scanned they can be configured for optimal use. Problems: How to differentiate between different APIs. OpenSubsonic supports multiple Artists and normal Subsonic doesn't. (At the moment not implemented just an example.) image

paulijar commented 3 days ago

There are no limitations regarding the possible folder tree structures. Primarily, the library is organized based on the metadata tags. But if some metadata tags are missing, then the file and folders names are used as fallback:

So essentially, the fallback logic assumes a structure like the Jellyfin example shows for "Some Artist", but there may freely be additional folder levels above the "Some Artist". But if the files are perfectly tagged, then the folder structures don't matter at all and you may have all the files in one folder or each file in its own folder or anything else you could think of.

Multiple artists or multiple genres per song are not supported at time being. Giving a complete list of the supported metadata tags would not be easy as we use a 3rd party library to extract the metadata and it supports countless different file formats and tag types, and hides some of the complexities from us.

gamebeaker commented 3 days ago

Giving a complete list of the supported metadata tags would not be easy as we use a 3rd party library to extract the metadata and it supports countless different file formats and tag types, and hides some of the complexities from us.

I meant which tags get used. The library abstracts the access to the data but you still have to define which key is searched. Example: https://github.com/owncloud/music/blob/c32d01893a4895e569188b48ec7770142b62c256/lib/Utility/Scanner.php#L232-L234 there is 'artist' as key defined for the meta data. I meant something like this:

tag type native Ampache Subsonic OpenSubsonic
artist string yes yes yes yes
artists array no no no yes

And the yes/no is not the standard but the implementation in the music app. The inspiration is from this table: https://support.symfonium.app/t/supported-features-by-media-providers/1178 grafik I can create this table but as i am busy at the moment it will take time.