apognu / otter

Music player for Funkwhale
MIT License
215 stars 21 forks source link

Adding a home page where you can view created playlists, recently listened to artists. Etc. #24

Open protodrew opened 4 years ago

apognu commented 4 years ago

I'm not fundamentally against that, though I fear this could clutter the initial user path in the app.

Artists is the main tab right now because I feel this is the most frequent start path for a music player. But this is strictly personal.

I am interested to know what other users think about that, and I will only implement it if this is provably well-received.

keunes commented 4 years ago

I like the idea - it could be similar to Spotify: a mix of what you recently listened, related albums/artists, random artists to discover new stuff, newly uploaded stuff.

apognu commented 4 years ago

Most of this stuff would need support from Funkwhale.

Recently added and played are already available as API calls (used in the Browse tab of the Web UI), so this could be implemented.

On the other hand, related artists/albums would need data I do not have currently and random artist would require support from Funkwhale, the app does not have access to your whole library to shuffle from (the lists are loaded as-needed when you scroll).

keunes commented 4 years ago

Thanks for the reply. I took the liberty to file a feature request against Funkwhale ;) https://dev.funkwhale.audio/funkwhale/funkwhale/-/issues/1145

apognu commented 4 years ago

Thanks keunes! I'll follow that issue.

I'll try and conjure something up with the info already available, probably under the Experiments flag for the first release.

I'll post screenshots along the way so we can iterate on it. Starting tomorrow.

agateblue commented 4 years ago

What we can reasonably do on Funkwhale side is implementing random sorting (e.g with anordering=random query param).

For the other items, we'd have to figure a way to deliver smart recommendations without creating feedback loops (popular content becoming even more popular).

In the meantime, you coud use tags, e.g if you're listening to an artist tagged "rock" and "metal", you could find all artists with those tags via the following API call: https://open.audio/api/v1/artists/?tag=rock&tag=metal

It's already implemented :)

apognu commented 4 years ago

I already had tags on the list of items to add to this screen, so we concur on that point (as well as trying to avoid any negative feedback loop).

For now, the ideas for this screen (ProtoChoco's, yours, keunes's and mine) converge on this list:

I still need to see which are already supported by Funkwhale's API, but I'll try and give it a start.

apognu commented 4 years ago

As a wireframe, that would look something like this (dummy data for now):

apognu commented 4 years ago

I'm working on the actions to be performed when an item is clicked.

Clicking on random artists and albums is pretty obvious, we can open the related listing page. The required API endpoints are scheduled to be implemented in Funkwhale by 0.21.2.

For tags, I would need to implement #29 first, but those button will likely open the search page for the tag.

My question is related to newly listened and uploaded tracks (and maybe random track, if that makes sense): what should happend on click? Directly play the track (if so, where should we insert it if the queue is not empty)? Add it to the end of the queue? Add it in next position?

elegaanz commented 4 years ago

Maybe you could open a kind of context menu when clicking on a specific track, asking when to play it (not sure if you see what I mean).

agateblue commented 4 years ago

I've implemented random ordering (?ordering=random) in the following MR: https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1150.

I'm thinking about adding a similar=obj_id filter that would use tags internally to return similar results.

agateblue commented 4 years ago

I still need to see which are already supported by Funkwhale's API, but I'll try and give it a start.

@apognu You can:

I'm not sure we'll have recommendation implemented anytime soon though.

apognu commented 4 years ago

Thank you! I already implemented most of them in my prototype and will get the rest of them done as soon as possible

I'll also try and implement random ordering to be ready when 0.21.2 is out.

No issue for the recommendations, it was wishful thinking and can always be added if and when you get to it.

agateblue commented 4 years ago

@apognu I've also implemented a related filter, (MR: https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1151).

It's based on tags, and you can use it like this GET /api/v1/artists?related=42&ordering=-related (also works on albums and tracks). This example return all objects that share at least a tag with Artist 42. Objects that share more tags will be even higher in the list.

If we ever implement recommendations in the future, then you won't have to change anything on your side :)

apognu commented 4 years ago

That's dope! Thanks.

Is there a Funkwhale demo instance that is built from master or should I set up my own?

agateblue commented 4 years ago

I've updated https://open.audio/ with the latest changes, and https://demo.funkwhale.audio/ will be updated automatically soon (it's reset every 3 hours to develop, and I merge master into develop as often as I can)

apognu commented 4 years ago

I still have lots to do, but it is starting to take form:

otter-homescreen

keunes commented 4 years ago

Saw the screen recording just now – looks great! Some initial feedback: I would left-align the tags (rather than trying to equally align vertically, which I guess needs some extensive coding to make it look nice). I see the tab is called 'Otter' – I'd call it 'Home' or 'Discover'. It would be great if the sections could each be (dis)activated. I'll be using FW+Otter for a private pod and have all our music digitised already, so the 'Newly uploaded' will virtually always be the same.

apognu commented 4 years ago

Thanks for your feedback.

The tags are using a layout model similar to flexbox, so I can specify how they should be laid out horizontally. On this screencast, they are "equally spaced", but I can also instruct them to distribute their width equally, left or right align, center, etc. So the code complexity should be roughly the same between all those.

I'll post screenshots of the different candidates so we can choose the right one.

The tab was called Otter by default, I think discover could be the right one, indeed!

As for customization of the different sections, I could try and implement some kind of persisted folding, so you could "hide" some sections.

I'll start working on this feature again when 1.1.0 is out (should be quite soon, I'm hunting for bugs right now, and there are some).

screwfaze commented 4 years ago

This looks so good mate can't wait to get the update!!

olibri-us commented 2 years ago

Hi ! I was looking for that kind of feature, and I'l really excited by you screen share ☺️ I'd love to see this in the app πŸ˜‹ Are you still working on it ? Anyway, thanks to all contributors for the work they ve put in this project !

gnouts commented 2 years ago

@jamendub I think the development stopped here and a fork has been made by the funkwhale collective. https://dev.funkwhale.audio/funkwhale/funkwhale-android/ You might want to subscribe there : https://dev.funkwhale.audio/funkwhale/funkwhale-android/-/issues/56