rithik-b / PlaylistManager

Playlist loading and organization mod for Beat Saber.
GNU General Public License v3.0
101 stars 25 forks source link

List with all songs which are not in any playlist #25

Open Kradus opened 3 years ago

Kradus commented 3 years ago

Hi, I like this plugin very much and used it to categorize my songs. But in the moment I miss a feature. I would like to have a list with all songs which are not in any playlist. In the moment I must search throw my 100 of songs for the new songs so that I can move every song to the right list and miss no songs.

rithik-b commented 3 years ago

Hmm this sounds like something a song filter mod like SomgBrowser should do as my mod doesn't interact with custom songs directly in any way. It would be better if you ask the author of SongBrowser if they're interested.

rithik-b commented 3 years ago

After some discussion with other members of the modding community, I think I can take this feature!

Kradus commented 3 years ago

Ok thank you very much.

kuba2k2 commented 2 years ago

Hi, I think I have an idea of how could this be implemented, in terms of UX. This would adapt to more use cases. I, for example, would like to have a playlist "mod charts" to put all modded maps into. There could be a per-playlist toggle "Hide from main list" which would hide all the modcharts from the root playlist - because I know exactly where to look for them, if I want to play. On the other hand, let's say I have a playlist "BeatSaver top 100 songs" which probably contains many songs I have been playing previously. And I don't want this particular playlist to "steal" my songs from the main list, so I leave the toggle switch off.

If you're not working on this yet, I could try to implement this feature somehow, and put it in a PR.

rithik-b commented 2 years ago

Thanks, my main issue rn to implement this isn't UX, but rather performance Ideally I would want to make a data structure that would link songs to all the playlists it's in to do more with that in the future. If that is empty, the song is in no playlist. Sounds simple right? The issue is I am using BeatSaberPlaylistsLib for all the I/O and data structures for playlists. So I would need to store this cache there and update it as songs are looked up then added and removed from playlists. I also want to make this toggleable so you can free up memory if you don't want to use this feature. The issue is BeatSaberPlaylistsLib has no config, so this setting needs to be stored in PlaylistManager (and subsequently be toggled by PlaylistManager in BeatSaberPlaylistsLib). However if a public flag is placed there, BeatSaberPlaylistsLib's setting can be changed by other mods, maliciously or accidentally. As for UX, I'm waiting on BetterSongList's author to make custom filters in his mod, so PlaylistManager can register a "not in any playlist" filter. Once that is done, I'll try to do the research on how to implement the feature cleanly. Sorry for the delay!

kuba2k2 commented 2 years ago

Okay, makes sense. So BetterSongList would be a "frontend" to the filters PM creates? If so, you can consider also implementing something like I described above. As for data structures, I think it would be less of a pain. As the feature would be toggleable per-playlist, only the playlists with this enabled could have all their songs added to a "filter list". And all songs from this list would be just filtered out using BetterSongList's custom filter.

Still, I would very much prefer to have it hide songs from the main custom level list, as this is the most frequently used place. Having the data structures already in PM, would it be possible to implement both of these features? I.e. hiding songs with a filter, and optionally hiding songs automatically from the root list.