#downloader #scraper #cyberdrop

bin+lib cyberdrop-dl

Cyberdrop.me album downloader written in Rust

5 unstable releases

0.3.2 Sep 22, 2021
0.3.1 Jul 15, 2021
0.3.0 Jul 14, 2021
0.2.0 Jul 12, 2021
0.1.0 Jul 7, 2021

#60 in #scraper

MIT license

17KB
243 lines

📦🌏 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 limits)
  • HTML scraping
  • Terminal UI (multiple progress bars, spinners)
  • Async/Await
  • Async I/O
  • Working with filesystem
  • Rust basics (HTTP requests, args parsing, error handling)

Dependencies

~14–31MB
~506K SLoC