Manga Downloadr
I just bought a new Kindle Paperwhite and so happens it's the perfect form factor to read good old, black and white, mangas.
So I decided to automate the process of fetching manga images from MangaReader.net, optimize and compile them into PDF files that fit the Kindle resolution.
Installation
Setup your environment with:
sudo apt-get install imagemagick
sudo gem install bundler
And install manga-downloadr with:
gem install manga-downloadr
Usage
And then execute:
$ manga-downloadr -u http://www.mangareader.net/onepunch-man -d /tmp/onepunch-man
In this example, all the pages of the "One Punch Man" will be downloaded to the directory "/tmp/onepunch-man" and they will have the following filename format:
/tmp/onepunch-man/Onepunch-Man-Chap-00038-Pg-00011.jpg
You can turn on HTTP cache to be able to resume an interrupted process later if you want:
$ manga-downloadr -u http://www.mangareader.net/onepunch-man -d /tmp/onepunch-man --cache
Development
Tests are in Rspec:
bundle exec rspec
Version 2.0 is a complete rewrite, following what was learned writing my Elixir version.
This is basically a port of the Crystal version.
Elixir has superb parallelism and concurrency through Erlang's OTP architecture so it's easy to process hundreds of parallel requests, limited only to what MangaReader can respond.
Crystal is also super fast (because its compiled to native code) and has very good concurrency (through the use of Go-like CSP channels).
This Ruby version uses native Threads. Because this is I/O intensive, we assume we can run several HTTP requests concurrently. But because Threads have significantly more overhead than Elixir or Crystal architectures, we will be limited by Ruby's MRI interpreter.
There is not a test mode you can use for benchmark purposes:
time bin/manga-downloadr --test
# or in JRuby:
# time jruby --dev -S bin/manga-downloadr --test
This will use One-Punch Man as a test sample and you can also turn on the cache to not have external I/O interference
time bin/manga-downloadr --test --cache
Contributing
- Fork it ( https://github.com/akitaonrails/manga-downloadr/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
TODO
- Version 2.0 removes the crash-recovery (saving state) from Version 1.0 - could be reimplemented
- Move MangaReader specifics to a different class
- Add support for MangaFox and other manga sites