少年ジャンププラスの漫画をダウンロードするライブラリを作ったので紹介します
仕組み
まず少年ジャンププラスはガバくて漫画のページのURLの最後に.jsonをつけるとjson形式の情報が見れます
例えば
https://shonenjumpplus.com/episode/XXXXXXXXXXXXXXXXXXならhttps://shonenjumpplus.com/episode/XXXXXXXXXXXXXXXXXX.jsonがapiのurlです
APIから取得できる画像はパズルのように16分割されていてバラバラになっています 普段はクライアント側でつなげているようです
このライブラリではGDライブラリを使って16分割されている漫画をもとに戻しています
インポート
GDライブラリが必要です 多分最初から入ってると思うのでダウンロードする必要はないです
apt-get install php7.0-gd
jumppuls_downloader をロードします
include('jumppuls_downloader.php');
使い方
$instance = new jumppuls_downloader();
$instance->auto_list_download("https://shonenjumpplus.com/episode/xxxxxxxxxxxxx", true,1); //URL 次の話をダウンロードするか 遅延(sec)
第2引数をtrueにすると次のエピソードを全てダウンロードします
応用
download("https://shonenjumpplus.com/episode/xxxxxxxxxxxxx");
function download($url)
{
$instance = new jumppuls_downloader();
$instance->json_download($url);
if (!file_exists("output")) {
mkdir("output", 0755);
}
$page = $instance->list["readableProduct"]["pageStructure"]["pages"][0];
$instance->file = $instance->list["readableProduct"]["title"];
if ($page["type"] == "main") {
$instance->h = $page["height"];
$instance->w = $page["width"];
$instance->download($page["src"]);
$instance->processing();
$instance->output("./output/");
}
if ($instance->list["readableProduct"]["nextReadableProductUri"] != null) {
download($instance->list["readableProduct"]["nextReadableProductUri"]);
}
}
1ページ目だけを全てダウンロードするコードのサンプルです
ライセンス
jumppuls_downloader is under MIT License