1 unstable release
0.1.0 | Jun 27, 2022 |
---|
#13 in #manga
20KB
322 lines
TCBScans Manga Viewer
Retrieves manga chapters for an input chapter and series data. Series and chapter ids can be retrieved from this tool too.
DISCLAIMER: I am not licensed or affiliated with TCBScans or Viz Media and this repository is meant for informational purposes only. Please delete the retrieved pages after reading.
Installation
// Cargo.toml
[dependencies]
tcbscans = "0.1.0"
Usage
Available methods:
series::get_series()
: Retrieves the list of available series from TCBScans.chapters::get_chapters(...)
: Retrieves all available chapters for a series.manga::get_pages(...)
: Retrieves all page links for a chapter from a series.download::save_chapter_pages(...)
: Save the mange page images for a chapter.
Series Module
The series
module is responsible for looking up all the supported series from TCBScans. The returned id
and slug
parameters can be used to retrieve chapter and manga info.
Example
use tcbscans::series::{self, Series};
let all_series: Vec<Series> = series::get_series();
for s in all_series {
println!("{:?}", &s);
}
Results
Series { id: "1", name: "Ace Novel - Manga Adaptation", slug: "ace-novel-manga-adaptation" }
Series { id: "8", name: "Attack on Titan", slug: "attack-on-titan" }
Series { id: "3", name: "Black Clover", slug: "black-clover" }
Chapters Module
The chapters
module is responsible for looking up all the available chapters from a series. Options for chapters::get_chapters(..)
:
series_obj: &series::Series
= TheSeries
object to look up, containing primarily theslug
. The other fields are optionally used for reporting.
Example
use tcbscans::series:Series;
use tcbscans::chapters::{self, Chapter};
let aot: Series = Series {
id: "8", name: "Attack on Titan", slug: "attack-on-titan"
};
let all_chapters: Vec<Chapter> = chapters::get_chapters(&aot);
for chapter in all_chapters {
println!("{:?}", &chapter);
}
Results
Chapter { id: "30", name: "Attack on Titan Chapter 139: Moving Towards that Tree on the Hill", slug: "attack-on-titan-chapter-139" }
Manga Module
The manga
module is responsible for looking up all the page links in a chapter from a series. Options for manga::get_pages(...)
are:
chapter: &chapters::Chapter
= TheChapter
object used to look up the pages of the chapter, containing primarily the slug of the chapter. The other fields are optionally used for reporting.
Example
use tcbscans::chapters::Chapter;
use tcbscans::manga;
let aot: Chapter = Chapter {
id: "", name: "", slug: "attack-on-titan-chapter-139"
};
let all_pages: Vec<String> = manga::get_pages(&aot);
for link in all_pages {
println!("{}", &link);
}
Results
https://cdn.onepiecechapters.com/file/CDN-M-A-N/aotv2_139_vol_01.png
https://cdn.onepiecechapters.com/file/CDN-M-A-N/aotv2_139_vol_02.png
https://cdn.onepiecechapters.com/file/CDN-M-A-N/aotv2_139_vol_03.png
Download Module
The download
module is responsible for downloading and minimizing the chapter pages. The chapter pages will be downloaded into a folder named after the chapter slug
. Image minimization is performed using the imagequant
crate. Options for save_chapter_pages(...)
are:
chapter: &chapters::Chapter
= TheChapter
object used to look the pahes of the chapter, containing primarily the slug of the chapter. The other fields are optionally used for reporting.directory: &str
= The parent directory to save all the chapter pages. A folder with the chapter slug will be created in this directory. If a chapter directory is already created, the chapter will not be redownloaded.
Example
use tcbscans::chapters::Chapter;
use tcbscans::download;
let aot: Chapter = Chapter {
id: "", name: "", slug: "attack-on-titan-chapter-139"
};
let dir = "images/";
download::save_chapter_pages(&aot, dir);
Results
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page28.png
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page42.png
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page49.png
CLI Usage
This crate is also packaged with a CLI tool for exploring the TCBScans data.
Download manga chapters from TCBScans
USAGE:
tcbscans <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
chapters List all chapters for a supported series
help Print this message or the help of the given subcommand(s)
manga Save an entire chapter to disk
series List all supported series
Get Series
>>> tcbscans series
{"id":"1","name":"Ace Novel - Manga Adaptation","slug":"ace-novel-manga-adaptation"}
{"id":"8","name":"Attack on Titan","slug":"attack-on-titan"}
{"id":"3","name":"Black Clover","slug":"black-clover"}
Get Chapters
>>> tcbscans chapters --help
List all chapters for a supported series
USAGE:
tcbscans chapters [OPTIONS]
OPTIONS:
--download <DOWNLOAD> Download all chapters of the series to a directory
-h, --help Print help information
-i, --id <ID> Id of the series
-s, --slug <SLUG> Slug name of the series
>>> tcbscans chapters --id 8
{"id":"30","name":"Attack on Titan Chapter 139: Moving Towards that Tree on the Hill","slug":"attack-on-titan-chapter-139"}
Download Manga
>>> tcbscans manga --help
Save an entire chapter to disk
USAGE:
tcbscans manga [OPTIONS] <SERIES> <DIRECTORY>
ARGS:
<SERIES> Slug name of the series
<DIRECTORY> Directory to save the chapter
OPTIONS:
-h, --help Print help information
-i, --id <ID> Id of the chapter
-s, --slug <SLUG> Slug name of the chapter
>>> tcbscans manga attack-on-titan --id 30 images/
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page28.png
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page42.png
images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page49.png
Docker
The CLI can be built and run via a Docker container. Pre-built containers can be found at: https://hub.docker.com/repository/docker/minormending/tcbscans
>>> docker build -t tcbscans .
>>> docker run -v /home/user/images/:/images/:rw tcbscans manga attack-on-titan --id 30 /images/
/images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page28.png
/images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page42.png
/images/attack-on-titan-chapter-139/attack-on-titan-chapter-139-page49.png
Dependencies
~6.5–9MB
~161K SLoC