BKSalman / ytdlp-gui

a GUI for ytdlp written in Rust
GNU General Public License v3.0
222 stars 9 forks source link

Proposal: Resumable downloads for long queues #28

Open sgtrusty opened 2 months ago

sgtrusty commented 2 months ago

Rationale

Resumable downloads for long queues.

In that lib, you can provide a link and it gets added to the download queue. Starting this issue because this is the only gui source project I found with compatibility with my setup (arch linux). Tooling is also nice, I am a rust newbie but I have contributed to open source python / javascript libs in the past so I can definitely put some initiative here. I also think that the nix streamlining will be interesting to look at for me.

Solution

  1. Links being downloaded are added to a queue and put in an output folder when complete.
  2. In case program is exited or system becomes down, queue will be saved and transfer progresses.
    • Transfer progresses are not so important here functionally, since yt-dlp already takes care of that. We just need to know which urls to resume downloading.
  3. Et voilà, this program grows a little bit in scope but adapts to my need.

Reference images

BKSalman commented 2 months ago

Good idea, just needs a little bit of ui change, maybe adding an arrow button next to the download button that toggles the download queue list view, also not too complicated since resuming downloads is handled by yt-dlp.

A PR is welcome if you want to contribute this feature, otherwise I can get on it when I'm free :)

BKSalman commented 2 months ago

Also not sure if iced (or iced-aw) provides a table widget to display the download queue and stuff

sgtrusty commented 1 month ago

@BKSalman I found this one in python https://github.com/axcore/tartube

Not sure if still feasible for me to do this, but feel free to keep open for time being.

Edit: thread for more gui's

BKSalman commented 1 month ago

Np, thank you for sharing other nice projects :), could be a decent source of inspiration

BKSalman commented 1 month ago

started a new branch for this feature, hopefully I can have enough free time to finish it quickly