/cyberdrop-dl

📦🌏 Cyberdrop.me album downloader written in Rust 🦀

Primary LanguageRust

📦🌏 cyberdrop-dl - cyberdrop.me Downloader written in Rust 🦀

cyberdrop-dl_demo

The fastest https://cyberdrop.me album downloader there is, written in Rust as an exercise.

Usage

  • Download single album
$ cyberdrop-dl https://cyberdrop.me/a/album1
  • Download multiple albums
$ cyberdrop-downloader albums.txt
  • or
$ cyberdrop-dl https://cyberdrop.me/a/album1 https://cyberdrop.me/a/album2

Files are saved in current working directory named './cyberdrop-dl'.

How to install

Recomended. Install using cargo. You need Rust toolchain installed, get it here @ https://rustup.rs/

It's that simple

$ cargo install cyberdrop-dl

Docker

No need to build and install via Docker

$ docker run -it --rm -v "$(pwd)"/cyberdrop-dl:/cyberdrop-dl:rw wmw9/cyberdrop-dl cyberdrop-dl https://cyberdrop.me/a/album

TODO

  • Download multiple albums simultaneously
  • Download multiple album files in parallel
  • Accept list of albums.txt via remote URL
  • Custom destination directory via -o flag
  • Integrate with Telegram Bot for easier usage
  • Detect dublicate albums

What I Learned 🧠

  • Tokio runtime (using channels, green threads, Arc<>, Semaphore)
  • HTML scraping
  • Terminal UI (multiple progress bars, spinners)
  • Async/Await
  • Async I/O
  • Working with filesystem
  • Rust basics (HTTP requests, args parsing, error handling)