relisten-ios icon indicating copy to clipboard operation
relisten-ios copied to clipboard

Recommended Shows Plan

Open farktronix opened this issue 6 years ago • 3 comments

Most of the time when I launch Relisten I'm ready to listen to some music, but unless I'm currently in the middle of a show I don't quite know what I want to listen to.

I'd like to add a list of recommended shows on the home screen based on the user's listening history to make it easier to launch Relisten and jump right into listening to something new.

First, a mockup: simulator screen shot - simulator x - 2018-08-02 at 16 55 39

My Stuff

Recently Played Tracks

Right now, Relisten stores the 25 most recently played tracks, and it only counts a track as recently played if you pass the halfway mark of the track. This can be problematic if you start listening to a show and only make it a couple minutes in to a song and then get interrupted. It's also a bit confusing, since I would expect a track to show up as recently played as soon as I start listening to it.

Relisten should store the most recently played track immediately on playback start, but it should only store one recently played track per artist.

Listening History

Relisten should keep a history of every track that has been listened to. Only marking as listened after the halfway point makes sense for considering a song completely listened to (like publishing to last.fm and phishtrackstats.

This history can potentially end up being a large number of small entries, so a sqlite database seems like the best fit for this. Relisten should be able to quickly query for things like:

  • What is the most recently listened to but incomplete show for an artist?
  • Has a show been completely listened to?
  • How many tracks out of a show have been listened to
  • How many tracks for an artist have been listened to

Discover

Recently Performed

If an favorited artist has performed a show within the last month, the most recent show should appear in the recommended shows list.

Top Shows/On This Day/Random

The rest of the discover list should be populated with:

  • Top rated shows
  • Shows from on this day
  • Random shows Shows should be picked that haven't been completely listened to by the user. One or two of the items above per artist should be picked to fill in the rest of the list.

Favorite Artists

For the purposes of these sections, favorite artists should be any artist the user has explicitly favorited, but it should also include any artist that the user seems to be listening to more than casually right now. If the user has listened to 20 or more complete tracks from an artist in the last month then they should be included in the favorite artists list for picking recommended shows.

Offline Mode

The "Available Offline" section can be dropped from the main screen, since favorite or recently played shows are more important most of the time. However, there's one time when showing it is very helpful, and that's when the user is offline.

If Relisten detects that it can't reach the Relisten API servers then the My Stuff section should be filled with offline shows sorted in this order:

  1. Most recently played (one show per artist)
  2. Download date

farktronix avatar Aug 02 '18 23:08 farktronix

I like this a lot! It does a lot for the homescreen and makes it way more comfortable!

I've been trying to think of a way to handle people who only listen to a show for a particular song or set of songs (second setters haha) because they probably won't want to "finish" the show.

alecgorge avatar Aug 03 '18 01:08 alecgorge

I think this will handle the second setters because there will only be a limited number of recent shows per artist shown in the "My Shows" section. I'm figuring maybe three total, and split across artists based on frequency.

I also realized this sort of view should be on all the artist pages too, but maybe we should give more detail there- maybe break out the sections more:

  • Recently Performed (shown if relevant)
  • My Shows
  • On This Day
  • Discover

We can do this all with one manager object which takes an array of artists and desired section types and returns arrays for the various sections that can be used to feed a UICollectionView

farktronix avatar Aug 03 '18 05:08 farktronix

I think this also means we need a downloaded shows view somewhere so that users can see all of their downloaded shows across all artists and quickly manage them. I'm not sure where to put it though.

farktronix avatar Aug 03 '18 05:08 farktronix