25huizengek1 / ViTune

An Android application for seamless music streaming
https://vitune.app
GNU General Public License v3.0
253 stars 13 forks source link

Adaptive Quick Picks #223

Open XelXen opened 2 months ago

XelXen commented 2 months ago

Feature request:

Currently we have two options for quick picks, either we can choose Trending or Last played but this is straight up unusable If set to trending because then it isn't a "quick" access to songs I want to listen to where as Last played is very much affected by the last song we listen to. This is also unusable when someone uses our phone to play the songs or we play something unique but want to switch back.

I propose a plan for Adaptive Quick Picks where we have a mix of all the songs we listen most to and a few new recommendations but making sure not all the new songs we last listened to are listed there. Let me know if you want my help for creating an algorithm because I have an idea. My email: xelxen@duck.com

dtomvan commented 2 months ago

I see you have a bunch of contributions to LibreTube on your name. Do you know perchance how they do that for their homepage? Also, I invite you to keep the conversation around ViMusic on GitHub — publicly — unless it covers a security issue (which probably don't exist anyways, we are a music app, not some critical infra such as curl or something...)

XelXen commented 2 months ago

Well the thing is that libretube uses piped api to fetch the trending home page for a region specified. I just designed their original CI/CD and designed their logo but not to go off the track, I gave this suggestion because I am daily driving this app but the only two issues I am facing rn is cache sync for continuation on my other device and quick picks suggestions.

NeeRaj-2401 commented 2 months ago

cache sync for continuation on my other device

A work around for this would be use existing piped playlist integration feature and resync + precatch on new device.

XelXen commented 2 months ago

But sadly it doesn't resync automatically and also cache playlist isn't synced (i guess)

NeeRaj-2401 commented 2 months ago

But sadly it doesn't resync automatically

Neither Playlist added locally sync automatically, anyway we have to manually keep syncing them

dtomvan commented 2 months ago

Okay, so what exactly is your proposal for the quick picks section?

XelXen commented 2 months ago

Initialize favorites

What we can do is that first have a default quick picks selection that is region specific trending, initially (first 8 songs he listens to) his favorites will be the first 8 quick picks and their recommendations will be next 8 quick picks, and last 4 will be again region specific trending. after the initial favorites process is complete, we sort his songs based on the activity, that's the step 2.

Activity based quick picks

if the song was played automatically in the queue then it's not his choice but rather a suggestion so we don't add it to quick picks unless he plays the song again via the offline menu. lemme clear up more in form of song priority.

Explaination

Song played by search (exactly) : 10 points Song played by search (recommended) : 7 points Song played by manual input from trending or queue : 4 points Song played automatically from queue (if it's from the first 10 songs in the queue) : 2 points Song played automatically from queue (if it's NOT from the first 10 songs in the queue) : 1 point

If a song hasn't ever been played: 0 points if a song hasn't been played since 48 hours, we decrease a point and every 48 hours we do it, until it reaches to 1 point or he listens to it again

We'll relatively rank the songs with their points. these points will be added and reduced according to priority and user activity. then first 8 songs with most priority will be the first 8 quick picks and next 12 quick picks will be a random blend of 4 trending songs and 8 next most priority quick picks

Note : I know this algorithm can be improved but if we want a static algorithm without using a dynamic AI model, then it's good enough and atleast better than the current implementation in terms of UX. I have tested it with my local song collection present on my desktop

dtomvan commented 2 months ago

Yeah this is not an AI, but rather a heuristic, but thank you.

XelXen commented 2 months ago

So any actual "leaks xD" on if something like this could be implemented?

dtomvan commented 2 months ago

Yes, we could do something close to this, but currently played songs aren't stored by "source" so we can't reward points in the system based on if a song was played through search, but we might add it. @25huizengek1 , any opinions?

XelXen commented 2 months ago

That's awesome 🎉

I'll be looking onto you guys :P