Automatic Playlist Sync Support for Read/Write Playlists

Feature description:

The feature should enable Symfonium to automatically update read/write playlists in both directions.
For example: if I change a Jellyfin playlist on the server, Symfonium should automatically update the corresponding playlist in the app and include all changes.
On the other hand, updates that I make in the app should be pushed as soon as possible.

I personally think that syncing the playlist in the app before opening it, might solve some issues around conflicts.

Problem solved:

The main problem is the lose of playlist changes.
I’m constantly adding songs to multiple playlists, on desktop and mobile.
If I forget to sync the app one time, I might run into the issue to either manually merge the playlists before replacing the old one, or more problematic I overwrite changes on the server/on the app.

Besides, manually syncing is not practical, especially if I have to sync 10+ playlists every time I switch to the app.
I guess a “Sync All” option would remove some headache but does not solve the issue of losing data.

Brought benefits:

It would make the app, for me and I guess others much more convenient to use.
Especially when switching from commercial music streaming providers that also do not require to manually sync playlists across multiple devices.

Other application solutions:

Finamp and the Jellyfin apps have solved this issue.
They both incorporate any changes (seemingly) instantly and all updates are done automatically.
For my use cases this is a good solution and I personally haven’t had troubles with this approach so far.

Additional description and context:

It might be worth considering to let users ‘pull-down’ playlists (e.g., with the thumb) when viewing them to refresh the playlist and fetch the latest version.

Screenshots / Mockup:

If possible please provide screenshots of your idea of the implementation or how other application do this.

1 Like

As I explained on reddit, the app is offline first, meaning that you can edit your playlist without access to the server.

Meaning that

If I forget to sync the app one time, I might run into the issue to either manually merge the playlists before replacing the old one, or more problematic I overwrite changes on the server/on the app.

Can happen if you change the playlist on the server and on the phone while offline then connect. Both have valid data and it’s your responsibility to decide who have the proper data.

The only solution I can propose that can work with all providers is another online only playlists that will not allow edition when offline, meaning there’s no more possible conflicts.

Can happen if you change the playlist on the server and on the phone while offline then connect. Both have valid data and it’s your responsibility to decide who have the proper data.

I’m not sure that’s such a big problem, I think it’s a matter of having timestamps for actions and favor actions with the highest/latest timestamp and having a automatic merge strategy.

I just tested it with Spotify.
In all cases I disconnected my phone and left my PC online. After taking the actions I put my phone online again and did nothing.

  1. Adding:
    On the phone: Add Song X to Playlist Y.
    On the PC: Add Song Z to Playlist Y.
    Result: Both songs are in Playlist Y.

  2. Adding/Removing:
    On the phone: Add Song X to Playlist Y.
    On the PC: Remove Song Z to Playlist Y.
    Result: X is in Y and Z is removed.

I’m not sure which other scenarios could potentially lead to a conflict - I probably forget something right now.

Spotify is a special case they have a lot more data than the API of most of the providers I support.

Some don’t even have a last modified, and none have the list of changes so I need to do differential checks to find the actual changes and see if they are compatible with the locally made changes or not. And I can’t know what change was made when.

There’s song position to take in account when removing / adding / sorting.

1 Like

Alright, that makes sense.

I also just played around with Finamp and its offline mode.
Finamp in Offline Mode simply disables any changes of the playlist and it seems I cannot remove tracks from the playlist even in Online Mode - there is simply no ‘Remove’ button.

I see that Symfonium is an offline-first app but, as you suggested, a new playlist type that is immutable when offline would be highly appreciated!

Yes so Finamp does not sync in offline as I said :slight_smile:

Symfonium is lot more complicated that Finamp, there’s also support for playlists with data from multiple media providers. And real offline editing :wink:

Anyway I’ll see how if I can add that in a way that is clear enough for the users.

Yeah, I was not aware of the issues with the servers and that you simply don’t have ways of merging.

Obviously Finamp lacks alot of features but the syncing is something I rely on :sweat_smile:.

Thanks alot for the discussion, I hope that you consider implementing this feature!

Would it be an option to only sync playlists to Symfonium? I use Navidrome now with smart playlists. The manual import works great, but I would like to sync these just like the music tracks.

If you import the playlist as read only it should auto sync.

I don’t remember what @deluan said about the changed value of those playlists.
If it does not change then Symfonium consider the playlist not changed and skip it.

With that said you can replicate the smart playlists inside Symfonium and it would remove the need for sync.

Didn’t knew this! And indeed this is working. No adjustment needed for me :slight_smile:

Hi, thanks for your work, I have purchased the app. But I think your playlist design logic is very abnormal and strange😨. When I used symfonium for the first time, I was thinking about why the playlist sync logic is so complicated and cumbersome😨.

Now I understand that you are making a different offline-first app, But I think a lot of people’s usage is online-first, as evidenced by the existence of plexamp and finamp.

I hope symfonium has a mode selection, whether it is offline-first or online-first, I don’t know how to develop it, but I guess you could add a switch. The function of this switch is: automatically download content from the cloud when clicking to enter the playlist; automatically upload to the cloud after adding a song to the playlist😃

Well Symfonium is multi provider offline first, so no sorry, it makes perfect sense actually :wink:

And that’s actually why a lot of people do prefer this app because of this different approach that covers more needs and is wayyyyy more performant. All that at the expense of requiring a click to sync and choose who is the authority for the data at the moment. (Mostly due to lack of necessary API from the providers)
Even an online first app with multi provider support would not be able to auto sync a playlist that have content from 2 different providers :wink:

Now to cover the need of lazy people that want to avoid a click, I need to find a way that still allows all the features currently supported without making the whole concept even more complicated than it is.

Online only first means that the playlist feature will be slower by a large margin, because it will require to get the playlist content on access each time and match the content, and then users will complain that it’s slower now :slight_smile: (And slower to add items to playlist, and slower to reorder) And then they will complain because they can’t edit the playlist when they are offline.

People always complains, but I prefer people complaining because they need a click than people complaining because something is slow or does not always work.

But again I know users know best and everything, but for 99% of users the time gained for all the actions vastly (I mean vastly vastly) compensate for the few required clicks. And a large will revert from any option I might add for this mode because it’s not worth it.

And yet you expect me to make it even more complicated :wink:

Thank you for your reply, in fact, plexamp and finmap perfectly meet my needs, but their ui and playback experience are very poor, that is to say, your symfonium is currently the only modern and daily-usable music app on Android.(as a private app supporting plex/jellyfin/subsonic)

I realize my needs are different from your app development philosophy, but, as said above, symfonium is the only option, I have no other choice

So can you please add a switch that supports switching to online first mode? I have paid🥺

thank you very much :smiley:

plexamp and finmap perfectly meet my needs,

but their ui and playback experience are very poor

symfonium is the only option, I have no other choice

There’s something wrong with those 3 assertions :wink:

is currently the only modern and daily-usable music app on Android

Yes because of the made choices as explained. (And of course the only one that covers both plex and jellyfin)

Anyway the feature is labelled as todo, but no it’s very far from just a switch as explained in many different way in this thread.

And you still have not explained what use case you have that makes the required click impossible to do versus everything related to playlists way slower.

The reason why I need synchronization logic like plexamp and finamp is: I have multiple devices >>> I can’t remember which device′playlist has changed on >>> So I need to “download from cloud” every time I use playlist to confirm that the playlist is not sync error

The reason for all this is because I have multiple devices and may change the playlist on any one of them, and I use it online like plexamp and finamp.

So symfonium’s current synchronization logic creates more trouble for me.

I understand that you are creating a different offline-first app. But, as I said before, symfonium is currently the only self-hosted music app available that has a good experience. So, I can’t switch to other online-first apps, so I hope you can add this feature, and I glad to hear that you are willing to add this feature to the to do list, thank you. :smiley:

This is exactly my use-case. I am using jellyfin as my media provider on multiple devices. I also think manually clicking sync is very intuitive but I understand your reasoning. Just a suggestion: Is there any way to provide bi-directional sync for provider that support this in their API. (last modified date etc.)?

For example; if I want to use bi-directional feature in a playlist, I must only add songs from one provider.

The problem is not the sync, it’s the conflict resolution due to offline changes. There’s currently no provider offering a solution that would be able to solve most of the simple cases.

So automatic always sync with non read only playlist is not possible when offline, so requires a new dedicated mode to allow that.

I understand that this limitation is actually a design choice which enable the app to be offline-first. I just hope you find a way to remedy this. BTW, thank you for this awesome app. It is by far the best music client for selfhosted Apps.

1 Like

Kia ora!
I am new to this forum. I have recently started using Symfonium and it has quickly become my favourite music consumption app. Well done, keep up the good work.

I would like to add my vote to the “automatic playlist sync” feature request.

I am using Ampache as the sole provider, and stream the music through several clients (e.g. Symfonium, browser on PC1, browser on PC2, Amperfy app on iPad etc), and I often add tracks to different playlists on any client.

In Symfonium, whenever i want to add a track to a playlist, I have to manually sync that specific playlist first to make sure I have the latest version of it in Symfonium. This is cumbersome. It looks like i have to do this for every single playlist. I have tried if re-importing all playlists from Ampache (press “Import”, select my Ampache media provider, then select “Import all”) automatically syncs/re-imports all of them, but found that it did not, new tracks were missing on playlists and only appeared after manually syncing that specific playlist.

A “sync all playlists” button, or preferably a way of automatically keeping playlists in sync would be very much appreciated.

I read your posts above and understand that it is somewhat incompatible with your philosophy of Symfonium. But the feature has my vote, nonetheless.

Cheers

There’s tags on the threads :wink: And changelogs :wink: