KRTirtho / spotube

🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile!
https://spotube.krtirtho.dev/
Other
30.53k stars 1.26k forks source link

[Duplicate] Download Playlist #107

Closed PranavBhattarai closed 1 year ago

PranavBhattarai commented 2 years ago

Currently, if we need something, we have to go one-by-one option. Let's say I go to my playlist or any playlist, and I want to download some of the songs from that playlist, then currently we have to go through this annoying process: i. Play each song and select the download option. ii. Do this until we find all songs you wanted to download.

What I'm asking is: i. [Inside playlist] A Ctrl + touch operation (on desktop) or long touch operation (on mobile), where users can start to select different songs and select the download icon. ii. [Outside playlist] Right-click option in playlist name (on desktop) or long touch option (in mobile), which let the user download the ENTIRE playlist in one go.

Those two things will save a LOT of time. And its basic things which we see in how the file manager works on both desktop and mobile.

Let me know what you think. I think it's very cool to have these things.

KRTirtho commented 2 years ago

Duplicate of https://github.com/KRTirtho/spotube/issues/67

PranavBhattarai commented 2 years ago

@KRTirtho you can close this issue if you want since its a duplicate, and we have problems like this as you stated:

But if we do it for 50-100 tracks at once, YouTube API will immediately block your IP

Now I'm okay with one-at-time download. A sad but get-used-to-situation to heal ourselves.

Edit:

Can't we design SpotTube download in such a way that doesn't violate YT APIs or any APIs by using a queuing technique? If the user selects multiple songs and hit the download option, SpotTube honors that and put it in a queue based on first-in-first-out. And download it serially (and even with the time gap between two downloads if only needed).

A lazy but a smart way to solve this problem without getting caught.

KRTirtho commented 2 years ago

One way to fix the problem is using YouTube Authentication but event it has quota limits

If we do in your suggested way, it might be possible to queue stuff & download. But at this rate using some service that was actually made for this kind of stuff like https://soundiiz.com/ can be a more viable option

PranavBhattarai commented 2 years ago

@KRTirtho While I know there are a couple of hacks to download playlists, songs, etc from other platforms using different tricks, I think SpotTube should also smartly and carefully use one of the oldest of the tricks in the books. One of my favorite ways to get the job done is using advanced Telegram bots. Paste the Spotify Playlist, and BOOM you got yourself songs coming your way on a one-by-one basis. The only limit I see is 100 songs no matter how many songs there are in the playlist.

I don't this is impossible in SpotTube. And since its an app, it can further enhance these capabilities by doing this:

  1. Download songs on a one-by-one basis
  2. Wait if it has reached a certain threshold
  3. Resume the task after some time.
  4. Check if songs have been already downloaded, if it is then stop downloading that song and go to the next one.
  5. The end. We have successfully managed to properly download songs of more than 100s, Better than Telegram bots.

Like Arnold Schwarzenegger said, "Break the rules, not the law". When we are not inside PlayStore, why be shy, why limit ourselves, and WHY not further enhance the possibility.

KRTirtho commented 2 years ago

That's some great ideas but seems like a lot of work. And I've to work on other parts of the project too. It'd be nice if someone implements this feature for the project. Someone like you who is really interested & invested on the idea is a perfect candidate to implement this kind of feature on behalf of the community of Spotube. If possible, it'll be great if you can implement the feature you stated for Spotube on behalf of the OSS community