少年ジャンププラスの漫画をダウンロードするライブラリ

2021年2月23日

少年ジャンププラスの漫画をダウンロードするライブラリを作ったので紹介します

ソフトウェア版

2021/10/03にダウンロードするソフトウェアをおまけで作りました
Githubのからプログラムをダウンロードして /php/download.php を実行してください

PHPの実行方法は各自で調べてください

仕組み

まず少年ジャンププラスはガバくて漫画のページのURLの最後に.jsonをつけるとjson形式の情報が見れます
例えば
https://shonenjumpplus.com/episode/XXXXXXXXXXXXXXXXXXならhttps://shonenjumpplus.com/episode/XXXXXXXXXXXXXXXXXX.jsonがapiのurlです

APIから取得できる画像はパズルのように16分割されていてバラバラになっています webクライアント側でつなげて表示しているようです

このライブラリでは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