FreeTubeApp / FreeTube

An Open Source YouTube app for privacy
https://freetubeapp.io/
GNU Affero General Public License v3.0
13.13k stars 815 forks source link

Dynamic Playlists/Watch Queue #547

Open deepspaceaxolotl opened 3 years ago

deepspaceaxolotl commented 3 years ago

I can say I really appreciate the direction Freetube is going in terms of customisability, it's quite heartening. On that topic, I would like to pitch in to keep the Watch Later button in the corner of videos/as an option under the player alongside that tab, as well as, rather than in place of, the upcoming on-the-fly playlists. I never used the Watch Later feature on YouTube, but have found it very useful in Freetube, especially with navigating in only one tab, and for keeping up with many subscriptions.

A separate Favourites tab would also be nice so I don't have to mix my 'bookmarked' videos and those I want to watch later, but just the functionality that's present in the old app would be enough for me to upgrade right away. (And exporting this list/these lists would be great! Another reason I sadly can't test out the new rewrite, losing my watch later videos.)

And of course, switches in the settings for showing or hiding those tabs (in conjunction with other distraction-free mode options) would be a great idea.

GilgusMaximus commented 3 years ago

Thanks for the appreciation. First I'd like to say that I would appreciate it a lot if the issue templates are used in the future. Makes everything tidier.

1) The dynamic playlist was a proposal from #413 and #519. Its concrete implementation is yet to be discussed and probably 2 releases away with the playlists coming up just in the next release. Your idea only has differences at a few points. So your proposal will definitely be included in the discussion.

2) With custom playlists in the next release you can make as many playlists as you want, including a favorites playlist. An additional tab wouldn't differ much from a normal playlist, However the idea of adding a favorite button so the video gets added to a favorites playlist could be a good compromise.

3) That depends on the concrete implementation of the UI. That is usually something Preston does.

deepspaceaxolotl commented 3 years ago

Oh, apologies! Am still a bit confused with the etiquette here, this wasn't really a bug report so I just went with a paragraph style... I'll keep it in mind for next time if it comes up.

Thank you for the response, and for linking those issues about custom playlists! Yeah, I'm liking the direction of flexibility you are heading in. I guess tabs aren't that big of a thing really, just would miss the button in the corner of video thumbnails as it's super easy to access, which is good for a click-and-forget feature like Watch Later. ^^;

nothub commented 1 year ago

I have placed a bounty on this issue ticket via bountysource.com, I would really enjoy to have list that I can throw some videos into directly from the subscriptions overview and then watch them all at once.

https://app.bountysource.com/issues/93260922-favorites-watch-later-dynamic-playlists-watch-queue-not-just-one

Victor239 commented 1 year ago

Good idea. I've just doubled the bounty.

samarthdave commented 7 months ago

looks like this issue is still up for grabs? also app.bountysource.com doesn't seem to be working at the moment but I'll take a look at that once it comes back online (ERR_NAME_NOT_RESOLVED on chrome)

would it be worthwhile to add a Youtube API integration? you would add your API key and all your remote playlists would populate locally? Watch Later, liked, etc. would be ported over?

either way, it'd be great to have a controlled Queue of videos to go thru as I consume content passively while working and I think handing off that responsibility back to Youtube for those tasks is ideal. Let me know what you all think

Victor239 commented 7 months ago

https://bountysource.com/ is up, not sure about the subdomain.

YouTube API integration is a nice-to-have, but not for the MVP feature IMO. I personally don't have any playlists on my account and intend to use the feature solely locally, but I can imagine the utility for others.

samarthdave commented 6 months ago

Yeah I clicked the sign in button on the homepage and it redirected to https://app.bountysource.com/signin which is still down. I'll wait for it to get resolved I guess

In the meantime, do you use the Favorite feature to maintain a queue of videos you want to watch? I haven't managed to get it sorting videos in the order I prefer

Victor239 commented 6 months ago

Yes I do, but without being able to have playlists it doesn't get that much use.

kommunarr commented 4 months ago

@PikachuEXE has implemented this functionality with #4234. Is there any specific feature requested in the original issue description that is not yet implemented?

deepspaceaxolotl commented 4 months ago

Works great, I love the flexibility and customisability! I think the only thing I find myself missing (unless I've just not been able to find the setting) is a grid view like the old watch later/favourites tab, it made it a lot easier to see what I've marked for later at a glance and decide on what to watch. Otherwise, excellent work!

Edit: I see this has been requested already #4708!

deepspaceaxolotl commented 4 months ago

I think since there are other issues addressing the few nitpicks I have left with the new system, I'm going to close this. Thanks to everyone for implementing it!

efb4f5ff-1298-471a-8973-3d47447115dc commented 4 months ago

I'm going to keep this open because the watch queue and dynamic playlists aren't implemented yet and are huge features. If its unclear what these features are let me know and I'll upload some examples

deepspaceaxolotl commented 4 months ago

I'd appreciate that, I'm not very familiar with them!

kommunarr commented 4 months ago

@efb4f5ff-1298-471a-8973-3d47447115dc Same here if you don't mind. I'm not familiar with the nuances of these terms

efb4f5ff-1298-471a-8973-3d47447115dc commented 4 months ago

Here you see me queuing videos. There is a normal Enqueue option and a Enqueue Now option. Enqueue will add the video to the end of the queue. Enqueue Now will put the video after the current playing video in the queue. The on the dynamic playlists part is shown later in the video. Dynamic playlists lets me create a playlist of the videos I just put in a queue so i can watch them later for example.

https://github.com/FreeTubeApp/FreeTube/assets/73130443/0bd536b1-60f7-4a68-b028-9cda386bef36

Here you see me going to a creators channel page and watching one of their playlists. While watching their playlists I decide to add a video to the queue. I decided i have watched enough and create a playlist so i can watch it later. Notice that the video i added to the queue is also added to the list.

https://github.com/FreeTubeApp/FreeTube/assets/73130443/57e7c18c-83dd-4bf4-9230-7311013742b2

This is my own created playlist i start watching. While im watching the video in my playlist I see another video and add it to the queue. Notice that the playlist it self is unaffected by this. I noticed a video in the queue that dont want to watch and remove it. Notice that the playlist itself doesnt change.

https://github.com/FreeTubeApp/FreeTube/assets/73130443/e4c8b770-ba7e-465a-989d-8bdc84a06be3

kommunarr commented 2 months ago

Thanks for explaining. I can get the appeal for this feature, particularly with wanting videos added ad hoc to be "up next" rather than somewhere else when using Autoplay Playlists and/or being far from the top/bottom of the playlist positionally. I would make clear that we should map out our UX ideas for it rather than rely on any existing implementation entirely. Thoughts:

efb4f5ff-1298-471a-8973-3d47447115dc commented 2 months ago

(I think? You would have to show me how reordering a queue, removing a video from the "playlist" queue, and solely adding/removing a video from the currently watched "playlist" all affect the underlying playlist and queue).

Sorry my brain broke a bit when reading this. Could you explain to me what you want me to show you?

shadoxxhd commented 2 months ago

For a quick temporary implementation, I'd suggest the following:

This is already sufficient for a very bare bones play queue implementation, but still has some issues:

However, many aspects are less problematic than you seem to think:

gradually improving that intermediate implementation to a fully featured "local queue" that works well with multiple tabs seems to be more or less straight forward as well:

kommunarr commented 1 month ago

Sorry my brain broke a bit when reading this. Could you explain to me what you want me to show you?

  1. Reorder a queue: does it reorder the actual playlist?
  2. Remove a video from the queue: does it remove it from the actual playlist?
  3. Enqueue a video: does it add it to the actual playlist?
  4. Remove a video from the playlist itself in a separate screen and return to the queue; is it removed now from the queue?
  5. Add a video to the playlist itself in a separate screen and return to the queue; is it added now to the queue?
efb4f5ff-1298-471a-8973-3d47447115dc commented 1 month ago
  1. Reorder a queue: does it reorder the actual playlist?

No.

https://github.com/user-attachments/assets/828870be-9b3a-4dfe-ada0-37ac010f87b0

  1. Remove a video from the queue: does it remove it from the actual playlist?

No.

https://github.com/user-attachments/assets/35016281-0c0f-40f6-91cd-4021dbb75eeb

  1. Enqueue a video: does it add it to the actual playlist?

No.

https://github.com/user-attachments/assets/1a06fb6a-0939-4a37-9ca4-4b6c736f6fe4

  1. Remove a video from the playlist itself in a separate screen and return to the queue; is it removed now from the queue?

No.

https://github.com/user-attachments/assets/953cf993-f341-4731-b814-c842e5ab6368

  1. Add a video to the playlist itself in a separate screen and return to the queue; is it added now to the queue?

No.

https://github.com/user-attachments/assets/0fa1084c-d415-4b18-b41c-3a7cafc0eb23

kommunarr commented 1 month ago

Thanks so much for testing and confirming these behaviors! If I'm understanding correctly, it seems like opening any playlist is actually cloning it as a transient queue, and any action you take on one from that point has no effect on the other. It's kinda weird compared to how I currently use FreeTube, where I often want to add + enqueue, or perma-remove, and now doing this actions together is made more inconvenient by this different process in exchange for the greater flexibility to do them individually. It's kinda weird of a model to me because the main benefit of a queue from my perspective is customized control over the ordering, not finer granularity over the addition/removal process, where I have to make a conscious decision if this is a video I want to watch in this session, save for later, or otherwise have to make two selections to punt the choice.

It's interesting to contrast with @shadoxxhd's suggested behavior:

add a button next to the "Favorite" button on videos, that adds videos to a "queue" playlist instead (just needs an icon, so the "enqueue" vs "insert in queue" question isn't that important)

Under this proposed model, playlists work as they do today until you "create" a queue from scratch. It presumably acts the same in terms of operations, but it makes a clearer distinction to the user of "being in a playlist" versus "being in a queue", where perhaps there would be less confusion around whether any operations affect the underlying playlist, you have to manually add videos to that queue instead of starting out from an initial place, and you could have an option for bulk-adding those videos to a playlist. That has the aforementioned tradeoff of having to manually curate the queue's elements, and questions around what happens when you want the playlist videos "open" as they are today in a box for new additions to the queue once you're watching a new video "in the queue".

I'm not familiar with how YT does this, but it seems like you're saying they have something like this, which I wasn't familiar with. I want to learn more, talk about, and try these systems out before we can even draft the requirements for this proposed feature, as it seems like it's a pretty meaty system to add for arguable upside. We'd need to rate on such factors like UX mental model familiarity, learning curve, utility, and maintainability.