New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Playlist management + import / export #105
Comments
Thanks for trying out Navidrome. Playlist management will definitely comes before smart playlists. Even though I have an issue open (#10) to track all initial work on the WebUI, I'll leave this open for eventual discussions specific about playlists. |
Thanks to you! Anyway, many thanks again! |
Just found Navidrome and it looks like a great lightweight replacement for Airsonic. Looks like I can create playlists in play:sub, just need the management capabilities in the UI. Keep up the great work! |
Owing to the discussion on Discord, I also think that playlists should be kept as-is even if the M3U it was originally imported from is not found in its location. Deletion should only be handled by the user explicitly. |
Adding to the idea of @arg274, it would be an easy way to make the playlist feature open to other apps if Navidrome synced the changes made back to the playlist file (M3U or else). That way one could add a track to a playlist in Navidrome and have the changes automatically visible in a standalone software like MusicBee, iTunes or DJ Software. |
@git1873 two-way sync is really hard to get right. What to do in case of conflicts (changes on both playlists being synched)? I think the best approach is one way sync: Navidrome will import m3u/pls files, and will flag it as "synchronized". The imported playlist will be read-only in Navidrome, but if the m3u file it was imported from changes, it will get updated. If you want to disable the sync, you'd disable the playlist's "synchronized" flag (in the UI) |
On my side, i would never use the folder to import playlists into Navidrome as it is my main player but will defininitly use it to export the playlists i've made using GUI / Dsub to another players, like Moode-audio. |
@deluan You are right, you can't really build a rock-solid 2-way sync solution on a file based system without locking/transactions and conflict management in clients. I am not even sure how many users would use the feature, but i certainly would. Aside from that; the one-way sync option you proposed is still a good idea and a good thing to start with. Playlists could be configured as Navidrome either being Master oder Slave. If Slave, Navidrome can't write to a playlist, only sync its contents from a file. If Master, Navidrome can edit the Playlist and write it to a file (but not read it back). |
Hey @certuna, from the comment you added in the PR #265 (comment), the only items not implemented yet are:
All other items are already in 0.19.0 and/or in the develop build right now. Let me know if you are having trouble accessing them. Question: What other fields do you want to see in the playlist tracks grid? Keep in mind that you can expand each row, which gives you more info about each song |
Yes this all works well, now testing 0.21, I love how fast all this development is going. I would imagine you'd want the same columns in Playlists as you have in the rest of the library, ie that you can choose to view a Playlist in Album view, Song view, Artist view. What do you think? |
Ah, I got it. Yes I want to have different visualization modes for playlists, but right now there are a lot of other things that would come first, ex: smart playlists. When implementing the artist view, I may refactor all views to allow them to be reused with playlists. I'll add this to the issue's checklist, even though it will probably move to its own issue once the other items in the list are done |
Eventually: Share playlist with a user, or allow a user on the server to check other's playlists and "follow" them |
@Extarys Playlists can already be set as public, then all users in a server have access to it. Is it enough? |
Update: Latest from master implements the playlist import. Just drop your To be able to use it, you'll need to get the latest |
Hi Deluan! For people who want to try in docker pull navidrome:develop and add ND_DEVNEWSCANNER=true environement variable. Tried it myself and my playlist are not imported ATM because of an error: FYI: Any hint? |
@antipiot Thanks for helping testing this. Your playlist seems fine. The issue is related to your users. You have at least one admin user, right? Can you change the loglevel to |
EDIT2: sorry: this looks to be working perfectly now - do not know what was causing trouble. |
Any chance to have the changes wrote in the m3u file? Let me clarify my needs: I would like to generate and edit my playlists in Navidrome and be able to grab them with ease. |
Export playlists come next, I've been thinking of implementing something similar to what @git1873 described in his comment:
You could set a path in the Playlist Edit UI, so everytime it was changed, it auto-exports to that path... If you don't want to wait, you could use Subsonic API with EDIT: Something like this (ex. to get a list of all playlists): $ curl -s "http://localhost:4533/rest/getPlaylists?u=<user>&p=<password>&c=curl&v=1.8.0&f=json" | jq
{
"subsonic-response": {
"status": "ok",
"version": "1.10.2",
"type": "navidrome",
"serverVersion": "dev",
"playlists": {
"playlist": [
{
"id": "c1a00e2e-4819-4762-8358-f017a69588ee",
"name": "Best Of Saara Saara",
"comment": "Auto-imported from 'Best Of Saara Saara.m3u'",
"songCount": 7,
"duration": 1384,
"public": false,
"owner": "admin",
"created": "2020-07-18T00:23:46.569445Z",
"changed": "2020-07-18T04:16:12Z"
},
{
"id": "ef69f7c0-3a1e-40e2-b2f2-62e0f7f000bc",
"name": "test",
"songCount": 8,
"duration": 1954,
"public": false,
"owner": "admin",
"created": "2020-07-18T04:22:56.677525Z",
"changed": "2020-07-18T04:22:56Z"
}
]
}
}
} |
@deluan i did tried something to download playlist with m3u format on my Airsonic but couldn't get it working efficiently due to some mechanisms implied with auth token or something. Read somewhere i wasn't alone trying and facing a wall on the case. "You could set a path in the Playlist Edit UI, so everytime it was changed, it auto-exports to that path..." Thanks for you great work on Navidrome! |
Yes, that is hard. What I'm proposing is something different: to get the playlist in JSON, using the API and converting it to m3u in your script. If you want to try and need help, join our Discord server and I can help you with that (it is easier to chat than exchange replies here... :) ) Re: Path, in the currently implementation, you can't change the path. It is there just to let you know the origin of the imported playlist. But when implementing auto-export, this path will be configurable. |
Got it! |
@deluan ,sorry to bother you: |
Yes, from version 0.26.1, it is the default scanner. In default
You can try making a simple change to the playlist (adding a comment or something like this), and once you save it, it should picked-up in the next scan cycle. If not, repeat the process with loglevel = |
@deluan , Thanks for your answer: Thanks for your great work and help! |
@antipiot That's very weird. Just updating the playlists without any reboot should be enough. Well, if you can reproduce this behavior consistently, please open a new GH issue with steps on how to reproduce it, so we can discuss try to figure this out |
@deluan can the importing of m3u's be made optional? For cd ripping with EAC, it's standard to include a .m3u of the album. |
Hummm.... I'm not actually a fan of (and don't use any) |
@andrewzah Done in 28d1428. Just set |
Until such a command is available in the UI, Is there any SQL command I can use to mass export all playlists from the navidrome database as |
@Merkwurdichliebe, please open a new issue with your request, or if it is just a question feel free to ask in Discord. This issue one was completed 2 years ago. |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Hello! First of all, thanks for your work! Looks very promising.
Actually using Airsonic.
I wanted to ask if it will be possible to have a playlist management (i saw smart / dynamic playlists on the road map) but i'd like to be able to manage standarf m3u / m3u8 playlists with the ability to import - export them as mine are very precious to me :-)
Added by @deluan to track progress:
Tasks:
playlist
REST endpointPLSfilesView as albums, artists, songs. Similar to iTunesWill be implemented as part of a larger overhaul of the UIThe text was updated successfully, but these errors were encountered: