Symfonium Database Tags to File Tag Tools

Feature description:

I’m unable to incorporate tag updates in my files so that changes apply to more than just my Symfonium database on my Android Device. I understand rewriting files is really tricky on Android, which makes rewriting tags a major pain. The internal database solution to this problem is a good solution (and much appreciated!).

Because of the jankiness of Android permissions ruling out updating files directly through Symfonium, I propose a way to allow for original file updates that:
1-Is source independent
2-Doesn’t mess with rewriting files
3-Could be fairly straightforward to implement.

There are two parts to the solution:

1: List all of the changes to IDVx data hosted in the Symfonium database. For example, a user changes the rating to 4 stars, or the artist name spelling.
2: Upon user request (ie, push a button, use an intent, or on a schedule in the app), in a folder dedicated to this purpose (ie, “TagUpdates”) recreate the folder structure for the files that have different “tag” data based on the Symfonium database and then copy the files with tag changes into the new folder structure.

The user could then copy the new files over top of the existing file structure on whatever data source they are using (local or otherwise etc).

The biggest challenge here is possibly making a tag rewriting system if that is not already coded. If this is too much work, a good starting place might be an option to export a user-readable list of tags that are different in the Symfonium database than in the original files.

If that’s still too much of a pain, then API access to the database might be a different starting point.

Problem solved:

I’m unable to incorporate tag updates in my files so that changes apply to more than just my Symfonium database on my Android Device.

Brought benefits:

This would make Symfonium the only Android app (aside from PowerAmp+Music Playlist Manager – which has some limitations) to provide a way for users to update their tags from their Android device based on what occurs in the music app while music is playing.

Other application solutions:

I posted a Tasker task that uses “Music Playlist Manager” with PowerAmp to update tags only for popm ratings within PowerAmp here. This is the gist of what I hope to accomplish, but PowerAmp doesn’t support half ratings – and Symfonium has more features and a better UI than PowerAmp anyway.

Be aware that except local ratings, no metadata is editable in Symfonium (you mentioned “user changes of the artist name spelling”, that is not possible today). The user ratings are also only stored locally if no provider is involved, and I doubt that writing them to the audio files will ever be considered - would be a niche case anyway for this one tag.

Symfonium is built to rely on provider metadata, or file metadata in the local file parser case. Editing the metadata will probably remain outside of the scope of the app, that has been mentioned a couple of times in the forum already. No edits → no need to write anything to disc.

1 Like

@splinter I figured that editing metadata is probably outside the scope of the app, which is why I suggested a few possible tools to help folks who want that kind of function without writing a bunch of code.

For this case, probably needed to narrow down to user ratings only. A csv list of files for which ratings are different with their rating and provider & path would make updating ratings possible (with other programs or tools) and would not be difficult to implement unless I’m missing a key part of how the database structure works.

If it isn’t much more work, API access that allows access to such a list might make a plugin that does this possible.

That is already available under Settings → Advanced → Export User Data (in JSON format). Includes data for all songs, not only the ones where ratings are set, but for the others rating would be simply 0.

As he says, you can already export a json file and in the future the backups will have more data in usable format for those kind of things.

1 Like