Skip to content
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

Proper Feed UI #1448

Closed
2 tasks done
theScrabi opened this issue Jun 3, 2018 · 30 comments
Closed
2 tasks done

Proper Feed UI #1448

theScrabi opened this issue Jun 3, 2018 · 30 comments
Labels
bounty Whoever solves this gets a bounty: https://app.bountysource.com/teams/newpipe discussion This needs to be discussed before anything is done feature request Issue is related to a feature in the app feed Issue is related to the feed GUI Issue is related to the graphical user interface

Comments

@theScrabi
Copy link
Member

theScrabi commented Jun 3, 2018

Bountysource

So guys I promised that I would think about a proper way of implementing feeds for subscriptions.

Here is my suggestion.

The subscription Window

feed_channel

Like in a typical RSS app you would see the new/unseen videos of a channel by an Indicator in each item.

The Feed Window

feed_screen

  • Sorted by time ;D
  • Shows all the new/unseen videos of a channel not just the newsest one

Channel Window

highlight

New Videos of a subscribed channel will be highlighted.

Bonus goodies

  • Notifying the user if a new video is available.

How it's done

Believe it or not, but some preparation work has already been done regarding this topic ;)

Preparations on the Database

So when @karyogamy designed the Database he created the two tables Stream and StreamHistory. By applying Stream \ StreamHistory you can find the so called Orphanes. These are streams that are not yet in the history but still listed in the streams table. @karyogamy Maybe these can be used to indicate not yet seen videos.

Preperations on detecting the time

Since time on youtube videos is a little complicated to parse the NewPipe Extractor always returned the creation time of a video as a String not as a number. This however makes it complicated if you want to track the time for a feed database. Luckily @mauriciocolli created the time ago parser project with which is possible to convert the Youtube time ago strings into rough time estimations.

Also for some youtube channels a RSS feed is available, however wee still need a fallback because not all channels have RSS.

What still needs to be done

  • Well the extractor still returns a String for the time, so the time ago parser should be used for youtube to return a long instead.
  • The StreamEntity needs to get a row with the creation date.
@theScrabi theScrabi added feature request Issue is related to a feature in the app bounty Whoever solves this gets a bounty: https://app.bountysource.com/teams/newpipe labels Jun 3, 2018
@theScrabi theScrabi mentioned this issue Jun 3, 2018
2 tasks
@ghost
Copy link

ghost commented Jun 4, 2018

Maybe simple marking of a channel with new videos by the gray color in first picture (like on the last picture, where new, unseen videos shown) will be enough. Practically, it isn't so important the number of unseen videos.

@theScrabi
Copy link
Member Author

For me it would be. However I think the UI part isn't that complicated once behind everything is settled, so I guess even the other screens would not be a problem.

@karyogamy
Copy link
Contributor

The subscription Window
Like in a typical RSS app you would see the new/unseen videos of a channel by an Indicator in each item.

The problem using the subscription page to show the unwatched streams is that in order to get that number, a network call has to occur to check if there are newer videos from that channel, which can get costly with increasing subscription count. Of course, we can show outdated data, but I'm not sure how useful that would be.

Orphanes
Maybe these can be used to indicate not yet seen videos.

It should be sufficient to create a call in the StreamHistoryDAO to return the view history for a particular stream id and have another method in the history manager to check if the stream have any history.

The StreamEntity needs to get a row with the creation date.

Which creation date? The day which the video was uploaded or the stream entry was first created? If it's the latter, then it's probably better to keep this data in StreamState table, since StreamEntity contains only passive metadata and shouldn't hold anything info created by the user.

New Videos of a subscribed channel will be highlighted.

Highlighting indicates selection, which might not be a good choice for new videos. Perhaps we can have a separate list for only the new videos, especially in the future we might parse and display subscription's playlists, which will need UI for separating listing anyways.

@justanidea
Copy link
Contributor

😍 thank you all for this work 👍

@Grammost
Copy link
Contributor

Grammost commented Jun 4, 2018

First of all, thank you for this amazing work!👍
I have a few questions/suggestions regarding this:

  1. After what time will the videos in the feed dissapear? (And how long will a video be marked as new, if you don't watch it?)
  2. It would be nice to be able to swipe to the left on a video, for example, to mark a video as "seen". Swiping to the right could add the video to a specific playlist that the user choses, like "Watch Later" or "Favorites".

@jancborchardt
Copy link

Very cool @theScrabi, especially for the feed window this is an important improvement. 🚀

Some design feedback:

Subscriptions

  • The bubble with unread count seems to hang a bit too far lot the left?
  • Additionally it might be nice to bold the entries which have unread items, as that makes it directly apparent when reading the text.
  • Also maybe something to consider is to sort the channels by amount of unwatched updates? Then you don’t need to scroll down the list to check if there’s still something unwatched, but the relevant info will be at the top.
  • Channels which are completely watched could then be sorted by most recent update up top, so you can see which are active and which stale.

Feeds

  • To give an even better overview of the time and to break the list up a bit, maybe some section headers would be nice. Like "Yesterday", "This week", "Last week", "2 weeks ago", "3 weeks ago", "Last month" etc. See Nextcloud Notes app for comparison.
  • If there’s multiple videos by the same channel after each other, they could possibly collapsed? Or show the most recent first, and below just an entry And 3 more videos from ContraPoints. That way if there is one very prolific channel you are subscribed to, it doesn’t completely take over your feed.

Channel

  • The grey highlight looks a bit strange, like it’s selected or something. Bolding the text would look nicer (like in email or newsreader apps)

What do you think?

@gregordr
Copy link
Contributor

gregordr commented Jun 5, 2018

Amazing! I have been hoping for this since I downloaded NewPipe :)

@TomJansen
Copy link

Very nice! Will the feed window be a tab just like the subscriptions tab? (will the replace the feed tab that is now in place)

@gregordr
Copy link
Contributor

@TomJansen #1461 As soon as this is merged you can chose your tabs to your will.

@theScrabi
Copy link
Member Author

@karyogamy I know it's cost full, but in my opinion its not an argument against having such a way of getting info, because we are already fetching the data from all of these channels.

If we want to update our subscreption feed we can maybe create some checks like:

  • only update if phone is charged
  • only update if wifi available
  • only update at some point of time in the date ... or just all two hours
  • manuel update, with a warning if phone is not chared/in wifi

I know its ugly, but in my opinion better than having nothing :) ... ore YTs new "we know better what you like" subscription policy.

@gregordr
Copy link
Contributor

@theScrabi Did you think about adding an optional login option, then we could fetch subscriptions&recommended videos directly from youtube? I dont know if it's possible, but with microG it seems doable?

@TomJansen
Copy link

@theScrabi maybe a refresh button? Or a pull down to refresh?

@theScrabi
Copy link
Member Author

theScrabi commented Jun 14, 2018

@theScrabi Did you think about adding an optional login option, then we could fetch subscriptions&recommended videos directly from youtube

Login to google will not come. This would go against the original scope of NewPipe.

@theScrabi maybe a refresh button? Or a pull down to refresh?

yes.

@karyogamy
Copy link
Contributor

manuel update, with a warning if phone is not chared/in wifi

In that case this should be fine, so long as the users have a way to disable/defer full subscription update, especially during app startup. IIRC, each subscription on youtube takes about 160kb, so it really adds up quickly.

Showing outdated data is at least better than nothing =D

@theScrabi
Copy link
Member Author

Showing outdated data is at least better than nothing =D

right, and say what you want but I guess one update per day ... for yt that's enough.

@martinsvoboda1101
Copy link

Just ordering the feed by date is the one thing that would make NewPipe the ultimate YouTube app for me.

@jancborchardt
Copy link

@theScrabi do you have any comments on my feedback above?

@theScrabi
Copy link
Member Author

Nope. You bring up some good ideas.

@jancborchardt
Copy link

@theScrabi ok, cool. Happy to help with any design / UX questions, will watch this issue, and feel free to cc me on stuff. :)

@tmbgreaves
Copy link

This would be a great step forward for the app! I'd love to see it happen, and have added an encouragement bounty :-)

Thanks for all the work to make this such a good app already -- it's greatly appreciated here.

@Jiikuy
Copy link
Contributor

Jiikuy commented Oct 6, 2018

I really think this would be a great feature in the app, and I will also try to help (if I can). How do you plan to implement the feed? My idea would be to go over each channel and look up its latest 2 or 3 videos and then make a list of all the videos sorted by time and show it in the feed. I don't that would be optimal, but it would work.

@bendem
Copy link

bendem commented Apr 3, 2019

Love the app's goals but there is no way I can switch to an app that doesn't show me the most recently uploaded video. I added a 20$ bounty in the hope it helps a little bit in getting it done.

@JeffAlyanak
Copy link

Love the app's goals but there is no way I can switch to an app that doesn't show me the most recently uploaded video. I added a 20$ bounty in the hope it helps a little bit in getting it done.

It might be that their data model doesn't readily allow for that functionality, but seeing as how SkyTube (https://github.com/ram-on/SkyTube) is able to show you a chronological feed of your subscriptions it must be possible.

@bendem
Copy link

bendem commented Apr 3, 2019

seeing as how SkyTube (https://github.com/ram-on/SkyTube) is able to show you a chronological feed of your subscriptions it must be possible.

They said it, SkyTube uses the youtube API which provides that information, NewPipe won't. I'm ok with that, it's a bit harder, but they seem to have plans so I'm not worried.

@omarroth
Copy link

omarroth commented Apr 9, 2019

Also for some youtube channels a RSS feed is available, however wee still need a fallback because not all channels have RSS.

Could you provide an example? I have not encountered this. RSS feeds appear to be provided for all channels, including those that are region-blocked, for example kananishinoSMEJ. RSS, channel page.

Recently Invidious has implemented support for push notifications provided by YouTube, which uses PubSubHubbub to send notifications to an HTTP server. This is much faster than polling but requires a server that notifications can be sent to.

For pushing notifications to clients, there's an open issue here: iv-org/invidious#469 that may be of interest. Polling is absolutely a valid option, but I expect the above proposal would be much faster and friendlier for mobile devices, since you wouldn't need to pull all channels in a user's feed.

@Stypox Stypox added discussion This needs to be discussed before anything is done GUI Issue is related to the graphical user interface pr-open labels Aug 18, 2019
@Stypox Stypox added feed Issue is related to the feed and removed pr open labels May 6, 2020
@opusforlife2
Copy link
Collaborator

Rethink after #2309.

@MD77MD MD77MD mentioned this issue Oct 30, 2020
3 tasks
@triallax triallax changed the title Propper Feed UI Proper Feed UI Jan 31, 2021
This was referenced Sep 4, 2021
@br4nnigan
Copy link

I just wish the "whats new" view, which is currently only hidden in the main menu would be available as a tab.

I can get the same view if I go to the subscriptions tab, but why does this tab now initialize with the "all items" selected and already showing all your new videos from subscriptions? I have to first point to "all items" which is just one tap on touch displays but on my android tv the interface is bugged, I first have to go down to one subscription item, then press up and I'm able to select "all items".

So my suggestion is to initialize that view with "all items" selected OR make "whats new" available as a tab (there's plenty of room)

@opusforlife2
Copy link
Collaborator

This has more or less been implemented. I'm closing this. Please open a new issue for changing the current look or behaviour further. Remember to check for duplicates. The feed label, especially, has several open issues giving suggestions.

@caryoscelus
Copy link

hi all,
i'm still seeing my bounty on this. can someone please collect it (or let me get it back at least)?

@opusforlife2
Copy link
Collaborator

@theScrabi Do you have access to the bounty?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty Whoever solves this gets a bounty: https://app.bountysource.com/teams/newpipe discussion This needs to be discussed before anything is done feature request Issue is related to a feature in the app feed Issue is related to the feed GUI Issue is related to the graphical user interface
Projects
None yet
Development

No branches or pull requests