TeamNewPipe / NewPipe

A libre lightweight streaming front-end for Android.
https://newpipe.net
GNU General Public License v3.0
31.44k stars 3.06k forks source link

Easier shuffling of all videos of an uploader or a playlist #6625

Open ghost opened 3 years ago

ghost commented 3 years ago

Checklist

Describe the feature you want

Currently shuffling all videos of a playlist or an uploader's videos is very hard. We need to click on the "Play all" button, start the video to show the episode dropdown menu, click on that menu, click shuffle, then skip to the next video. And we haven't talked about that if the uploader has many videos, only the ones loaded in the list will queue.

I propose lets have a more cleaner UI for channels (as proposed in #5747 and #5746) as well as playlists. And add a shuffle all button that fetches all the videos in a playlist creates a random queue then opens a player.

What happens if there are too much entries should be decided. There could be maybe a warning popup (that can be disabled in the settings preferably) that warns that there are too much entries.

Is your feature request related to a problem? Please describe it

Additional context

Screenshot_NewPipe_2

Currently the playlist UI looks like this.

Screenshot_NewPipe_3

And the channel like this.

I think the 3 sections are unnecessary and the separators take up too much space so it should have either a more compact layout or only icons, including a shuffle all icon:

shuffle

How will you/everyone benefit from this feature?

Easier shuffling, cleaner UI.

PTsuarez commented 2 years ago

I'd love this feature to be added it's one of the stumbling blocks I hit trying to get people I know to use NP playlist randomisation is just so clumsy with multiple actions required.

sudocanttype commented 2 years ago

It doesn't look like this has been implemented yet, I'm going to try my hand at it

litetex commented 2 years ago

Currently shuffling all videos of a playlist or an uploader's videos is very hard. We need to click on the "Play all" button, start the video to show the episode dropdown menu, click on that menu, click shuffle, then skip to the next video.

Okay so

  1. Start playing a playlist
  2. opening the android notifcation / the playlist dropdown-menu
  3. clicking on the shuffle button
  4. (optionally) playing the next video

is hard...

How often does a normal user play a playlist with shuffle mode? I do it almost never. If I want to listen to music (randomly) I download it locally and play it with my media player because that e.g. works without an internet connection šŸ˜‰

@SameenAhnaf I think we should integrate this issue into #5741 (e.g. a option inside the Play all-drop down) as it fit's well better to that topic. What do you think?

sudocanttype commented 2 years ago

Okay so

1. Start playing a playlist

2. opening the android notifcation / the playlist dropdown-menu

3. clicking on the shuffle button

4. (optionally) playing the next video

is hard...

Those 5-10 clicks/swipes could easily be replaced with one click, might as well right?

How often does a normal user play a playlist with shuffle mode? I do it almost never. If I want to listen to music (randomly) I download it locally and play it with my media player because that e.g. works without an internet connection wink

There is a population of people who use newpipe as an alternative for spotify, including me. Plus some people also have playlists in the hundreds to thousands of songs, and mass downloading them is not currently supported by NewPipe, and pirating them off site is unfeasible.

litetex commented 2 years ago

Those 5-10 clicks/swipes could easily be replaced with one click, might as well right?

I think it will never be one click because it will never be the default - unless we add a setting or all people now want a shuffled playlist by default. You will always have to e.g. click the shuffle button and then play the playlist (current situation in your PR) or the "Play-all"-dropdown and then select "Play all randomly" or something similar.

There is a population of people who use newpipe as an alternative for spotify, including me.

Side-note: I'm not sure if NewPipe was built as a Spotify alternative.

Plus some people also have playlists in the hundreds to thousands of songs

Side-note: Also pretty sure that this NewPipe was not designed for this.

and mass downloading them is not currently supported by NewPipe

ā†’ #5482

sudocanttype commented 2 years ago

It wasn't designed or built as a spotify alternative, but people do use it as such since there seems to be no good other option.

I think it will never be one click because it will never be the default - unless we add a setting or all people now want a shuffled playlist by default.

My bad, 2 clicks, but still better than what we have now.

SameenAhnaf commented 2 years ago

@sudocanttype Maybe, https://github.com/TeamNewPipe/NewPipe/issues/1795 is a better alternative. The option in three dots menu isn't obvious.

Btw, I couldn't test the PR APK. Does selecting Shuffle from three dots menu asks for a player or does it just stay enabled?

sudocanttype commented 2 years ago

Does selecting Shuffle from three dots menu asks for a player or does it just stay enabled?

No, hitting shuffle is essentially doing what spotify "shuffle play" does. It shuffles all the songs and adds them to the background queue. It does not do anything permanent, like #1795 button toggle, because it is possible that some people do both watch videos from playlists and listen to music from playlists. It would be a pain to have to go to the settings every time you went from listening to music to watching videos from a playlist.

The option in three dots menu isn't obvious.

That's my bad, I wasn't sure how to give more room to the icons of the menu. Currently, if your screen is wide enough, the icon should appear.

SameenAhnaf commented 2 years ago

I think we should integrate this issue into #5741 (e.g. a option inside the Play all-drop down) as it fit's well better to that topic.

A user may want to shuffle within only next or previous videos. Also, he or she may want to play first two or three videos chronologically and shuffle other ones. That's why, Shuffle should be a play queue option, not integrated into #5741.

It does not do anything permanent, like #1795 button toggle, because it is possible that some people do both watch videos from playlists and listen to music from playlists.

https://github.com/TeamNewPipe/NewPipe/issues/5654 asks for multiple settings and player info. If a user needs to keep different player options for different channels or playlists, that can be considered later. Also, Shuffle can be enabled or disabled pretty easily from notification player. You may continue with #1795 at this moment if you're okay with that change.

sudocanttype commented 2 years ago

You may continue with #1795 at this moment if you're okay with that change.

Okay, is going for a double tap gesture still a no go? I think it would be better to have a dedicated button, rather than a double tap, but honestly, either will work.

SameenAhnaf commented 2 years ago

Sorry, which double tap gesture are you talking about? How is it gonna be implemented for background player?

I think it would be better to have a dedicated button, rather than a double tap.

Idk what most users want as Newpipe is not an audio streaming app. An audio focused user would use Ymusic, AntennaPod or Spotify. Dedicated buttons for three separate players (main, background and popup) make sense neither.

sudocanttype commented 2 years ago

the double tap to background shuffle play feature suggested in #1795. It was considered unorthodox, but it wasn't necessarily a no.

An audio focused user would use Ymusic, AntennaPod or Spotify

The problem is that YouTube music and spotify are both run by companies who will shamelessly sell user data. It also doesn't help that they have ads, which is a turn away for a music app. There isn't another alternative open source project that does this level of audio/video playing. Plus people already use youtube to listen to music, just instead on desktop.

SameenAhnaf commented 2 years ago

I think, most users would find Double tap to enqueue next more relevant as Long press to enqueue is already included.

@litetex Wdyt? You may consider tagging some memebers asking if Remember Shuffle Mode, Shuffle checkbox or Double tap to shuffle is better.

sudocanttype commented 2 years ago

Having a dedicated push to shuffle play button is also an option, like I have implemented. Putting that many gestures and options on 1 button might make it harder to use/learn.

SameenAhnaf commented 2 years ago

The issue author asked this feature for main player to fulfill his personal cases.

We need to click on the "Play all" button, start the video to show the episode dropdown menu, click on that menu, click shuffle, then skip to the next video.

So, Shuffle on Background is a no. Three separate Shuffle buttons make the UI too bloated.

sudocanttype commented 2 years ago

Perhaps putting shuffle play in the menu underneath the 3 dots? I think that's about as intuitive as putting it behind a gesture of a specific button. I just learned now that press holding the background play button enqueues the playlist, and i've been using newpipe for over a year. It'd be easier to find this specific feature this way.

SameenAhnaf commented 2 years ago

I still prefer Remember Shuffle Mode as https://github.com/TeamNewPipe/NewPipe/issues/981 suggests to remember repeat mode. As the buttons are placed in a similar place, they should function similarly too.

sudocanttype commented 2 years ago

Is the idea that newpipe remembers which playlists should be shuffled every time they're played in the background? And if so, how does newpipe handle persistent data?

SameenAhnaf commented 2 years ago

No, it'll be a player info intended to remember last state just like playback speed. It won't be separate for every single playlists or channels.

https://user-images.githubusercontent.com/79245641/157062599-c4c1f1b7-4b21-401c-921d-a01ad457fb27.mp4

sudocanttype commented 2 years ago

Hold on, I have an idea. How about a playlist settings menu that saves preferences individualized for each playlist. Then, the user can customize what each gesture does, "music mode" for always shuffle, and (maybe?) a download button. What do you think?

SameenAhnaf commented 2 years ago

We may also combine https://github.com/TeamNewPipe/NewPipe/issues/5654#issuecomment-782784218 and #1795.

Adding multiple profiles will work like multiple YouTube accounts. Shuffle mode will stay remembered for Music or Comedy profile. Existing playlists or channels could be movable to another profile too.

Wdyt? I think, many users also require separate playback speed, resolution and other stuff for different channels or playlists.

SameenAhnaf commented 2 years ago

Your suggestion could be a UI like following image. But the problem is that it will have to be manually selected for every single playlist or channel.

and (maybe?) a download button.

Bulk download should be implemented as suggested in https://github.com/TeamNewPipe/NewPipe/issues/5940#issuecomment-825590093. Unless, every user will have to put videos into a playlist at first before bulk downloading. I know, I'm overcomplicating things a little. But I'm trying to make the UI as less bloated as possible.

sudocanttype commented 2 years ago

Although I like the idea of creating and using profiles to manage different play modes, I think that is outside the scope of this specific issue. I can try to implement a basic profile system, but I'm not confident in my programming skill. I'm thinking of putting a profile selection dropdown in the main menu(underneath the service selection), and making my own profile settings page. wdyt?

SameenAhnaf commented 2 years ago

My bad! I almost jumped the gun when I found someone like you interested to get all my desires done for free.

Anyway, one of the key reasons why users prefer Newpipe over other apps or websites is that a user can queue videos from multiple platforms, sit back and enjoy. Having separate player info for multiple profiles would question the fact how next tracks should be managed. We might keep other aspects different for multiple profiles, but definitely not player info.

sudocanttype commented 2 years ago

My bad! I almost jumped the gun when I found someone like you interested to get all my desires done for free.

Haha, nah its fine. I will try to implement the profiles though, and we'll see where I get. Should I open a new issue for this?

SameenAhnaf commented 2 years ago

Nope. We might as well go for what @litetex suggested to include in #5741. It gets the job done in the best way. Note that this info will have to be remembered for every single channel and playlist.

A user may want to shuffle within only next or previous videos. Also, he or she may want to play first two or three videos chronologically and shuffle other ones. That's why, Shuffle should be a play queue option, not integrated into #5741.

I forgot that Shuffle button is already in play queue, lol. If a user requires to shuffle a few moments later, he can do so pretty easily.

sudocanttype commented 2 years ago

I forgot that Shuffle button is already in play queue, lol. If a user requires to shuffle a few moments later, he can do so pretty easily.

Not exactly, #875. That's why I want to implement a full fledged shuffle button. I think I will work on #5741 first because it is much more manageable, while slipping in a shuffle play all button somewhere in there. I'll figure out #5654 later, androidx room breaks my brain.

SameenAhnaf commented 2 years ago

There's still a few problems.

  1. Shuffling videos before enqueueing kills chronology completely. Even, having a reversed queue at least lets us have an idea how they are ordered in the playlist.
  2. It doesn't specify if it enables Shuffle in play queue or not. If not, how to shuffle multiple playlists?

Maybe, it should be called Shuffle before enqueueing or Shuffle and enqueue instead?

sudocanttype commented 2 years ago

I think Shuffle and Play is a more in depth/correct description. Keep in mind the goal of this issue is to shuffle all the videos of a playlist and then play them, aka enqueue them. The entire point is to kill chronology completely.

As for full shuffling of the play queue, there has been a bug preventing that for years now. And tbh, I was looking through the code, and I have no idea how to efficiently implement that for large queues.

AbduAmeen commented 2 years ago

I think Shuffle and Play is a more in depth/correct description. Keep in mind the goal of this issue is to shuffle all the videos of a playlist and then play them, aka enqueue them. The entire point is to kill chronology completely.

As for full shuffling of the play queue, there has been a bug preventing that for years now. And tbh, I was looking through the code, and I have no idea how to efficiently implement that for large queues.

Which bug are you referring to?

sudocanttype commented 2 years ago

I think Shuffle and Play is a more in depth/correct description. Keep in mind the goal of this issue is to shuffle all the videos of a playlist and then play them, aka enqueue them. The entire point is to kill chronology completely. As for full shuffling of the play queue, there has been a bug preventing that for years now. And tbh, I was looking through the code, and I have no idea how to efficiently implement that for large queues.

Which bug are you referring to?

875

SameenAhnaf commented 2 years ago

@sudocanttype Hey, is there any update?

5741 works solely on the basis of first selected video. So, I think, repeat and shuffle mode should be remembered on the basis of browser tabs #7658. Wdyt?

sudocanttype commented 2 years ago

Nope, I've been super busy for the last couple weeks. I might look into it again, but no promises. Or honestly, I may choose a more simple issue to try to fix to get more adapted to NewPipe's code structure. I spent a solid 30 minutes trying to figure out how to change the behavior of clicking a playlistitem, and even more time trying to work out how the playlist persistant storage works.

fhteagle commented 2 years ago

+1 for "play random from this channel" one tap button.

-1 for remembering shuffle (unless this can be disabled in settings)

Thanks!

julled commented 1 year ago

I would also like to have a more easy method to activate shuffle. Either by dedicated button or by a setting option which enables shuffle by default for each playlist.

martin-braun commented 1 year ago

@litetex

How often does a normal user play a playlist with shuffle mode? I do it almost never. If I want to listen to music (randomly) I download it locally and play it with my media player because that e.g. works without an internet connection šŸ˜‰

I do it almost always! I maintain a bunch a playlists on my YouTube channel that contain music sets exclusively (30mins+ per video). I do want to shuffle these, or I end up starting at the first set all the time. There I days I play this for 8 hours or more during work.

I'm talking about playlists with more than 500 music sets. I do need this functionality. YouTube makes it pretty easy, why can't NewPipe do the same?

Instead of finding the optimal solution. How about just landing something that just works for the time-being?

Thank you.