マンガ図書館Z mangaz.com プレミアム会員向けのスクリプト: 毎月の無料枠でのPDFダウンロードを自動化.
Perl
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README.md
mangaz-dl.pl

README.md

mangaz-dl.pl

概要

マンガ図書館Z の「プレミアム会員」になると、作品PDFファイルの購入が毎月1冊無料になります。

https://www.mangaz.com/prm/guide

mangaz-dl.pl は、毎月の無料枠での購入+ダウンロードの作業を自動化するスクリプトです。

必要なもの

  • perl
  • WWW::Mechanize
  • YAML
  • Web::Scraper

準備

  1. mangaz-dl.plを実行

        ./mangaz-dl.pl
    
  2. 設定ファイル mangaz-dl.yml のテンプレートが作られるので、これを編集

    ---
    account:
      email: メールアドレス
      password: パスワード
    download_folder: ダウンロード先フォルダのパス
    downloads: {}
    purchased: {}
    queue:
      - 購入予定の書籍ID1
      - 購入予定の書籍ID2
      - ..
    
    • 購入予定の書籍ID は、マンガ図書館Zの作品ページURL末尾の数字。
        http://www.mangaz.com/book/detail/127351
                                            ↑この部分
    
    • 毎月、上から順に無料枠で購入される。
  3. mangaz-dl.pl を cron とか launchd などで自動実行する。

    • このスクリプトからの購入処理は月に1回しか行われないので、月1回の実行ではなく、数日〜1週ごととかに実行する設定で構わない。(ネットワークエラーで購入・ダウンロード失敗した場合などを考えるとその方がよい)

    • 今月(設定した最初の月)にすでに無料枠で購入済みの場合は、実行の度に購入に失敗してエラーが表示される。この場合は mangaz-dl.yml に「今月購入済み」とするダミーデータを入れる。(下記例: YYYYMM は今月の年月6桁、数字の1は本来書籍IDだが、ダミーの数字でかまわない)

           purchased:
             YYYYMM: 1
      

      これ以降は各月の購入内容が記録されていくので、データを自分で追加する必要はない。

運用

  • mangaz-dl.pl は下記の場合に何かメッセージを(標準出力に)出力するので、メールなどで受け取れる様にしておいて、対応する。
    • 購入・書籍名取得・ダウンロードに失敗した場合は、いろいろなんとかする。
    • 購入予定の書籍が空になっていた場合は、予定を追加する。
    • 書籍のダウンロードに成功した場合は、書籍を読んだり整理したりする。

トラブった時向けのガイド

  • 購入が成功すると mangaz-dl.yml の purchased に購入年月と 書籍ID が記録され downloads に 書籍ID に対する 注文ID が記録される。

     downloads:
       書籍ID1: 注文ID
     purchased:
       YYYYMM: 書籍ID1
     queue:
       - 書籍ID1(ダウンロード待ち)
       - 書籍ID2(購入予定)
       - ..
    
  • 購入成功後、サーバのファイル作成を待つため、スクリプトは90秒 sleep する。

  • queue に 書籍ID が存在して、かつ downloads に登録がある書籍はダウンロード待ちになっている。

  • ダウンロード待ちの書籍は mangaz-dl.pl 実行の度に、購入の有無や成功不成功にかかわらず全てダウンロードが試みられる。

  • ダウンロードが成功した書籍は mangaz-dl.yml の queue から取り除かれる。 downloads や purchased の記録はそのまま。

     downloads:
       書籍ID1: 注文ID
     purchased:
       YYYYMM: 書籍ID1
     queue:
       - 書籍ID2(購入予定)
       - ..