Skip to content

Latest commit

 

History

History
230 lines (166 loc) · 12.4 KB

File metadata and controls

230 lines (166 loc) · 12.4 KB

Python API for JMComic

简体中文English日本語한국어

JMComicへアクセスするためのPython API(Web版&モバイル版)を提供し、GitHub Actionsダウンローダーも統合しています🚀

GitHub Stars Forks GitHub latest releases PyPI - Downloads Licence

本プロジェクトは、JMのクローラー用のPython APIをカプセル化したものです。

数行のPythonコードだけで、JM上のアルバムをローカルへダウンロードすることができます。ダウンロードされた画像は完全に処理済みです。

🧭 クイックガイド

ご案内:JMのサーバー負荷を軽減するため、一度に大量のダウンロードは控えてください 🙏🙏🙏

introduction.jpg

プロジェクトの紹介

本プロジェクトのコア機能は「アルバムのダウンロード」です。

これを基に、使いやすく、拡張性が高く、また特殊なダウンロード要求にも対応できるフレームワークを設計しました。

現在、主要機能の実装は比較的安定しており、プロジェクトはメンテナンス段階にあります。

ダウンロード機能以外にも、必要に応じて他のJMインターフェースも実装しています。既存の機能は以下の通りです:

  • ログイン
  • アルバム検索(すべての検索条件をサポート)
  • 画像のダウンロードおよびデコード
  • カテゴリ / ランキング
  • アルバム / 各チャプター(エピソード)の詳細
  • 個人のお気に入り
  • インターフェースの暗号化・復号化(APP API)

インストール手順

⚠ まだPythonをインストールしていない場合は、先に 公式のPythonページからダウンロード してインストールをお願いします。 Python 3.12以上の使用を推奨します

  • 公式 pip ソースからインストール(推奨。アップデートもこのコマンドを使用します)

    pip install jmcomic -U
  • ソースコードからインストール

    pip install git+https://github.com/hect0x7/JMComic-Crawler-Python

クイックスタート

1. アルバムのダウンロード方法

以下の簡単なコードを使用するだけで、アルバム JM123 のすべてのチャプター画像をダウンロードできます。

import jmcomic  # モジュールのインポート(事前にインストール必須)
jmcomic.download_album('123')  # ダウンロードしたいアルバムのIDを渡し、アルバム全体をローカルにダウンロード

上記の download_album メソッドには option パラメータが用意されており、JMのドメイン名、ネットワークプロキシ、画像のフォーマット変換、プラグインなどのダウンロード設定を管理できます。

これらの設定項目が必要な場合は、設定ファイルから option オブジェクトを作成し、それを使用してアルバムをダウンロードすることをお勧めします。次の章をご参照ください。

2. Option 設定を利用してアルバムをダウンロード

  1. まず、設定ファイルを作成します。ファイル名を option.yml と仮定します。

    このファイルには固有の記述形式があります。こちらのドキュメントを参照してください → 設定ファイルガイド

    以下は簡単なデモです。ダウンロードした画像を png 形式に変換したい場合、option.yml に以下のように書き込みます。

download:
  image:
    suffix: .png # ダウンロードした画像をpng形式に変換する設定
  1. 続いて、以下の Python コードを実行します。
import jmcomic

# 設定オブジェクトの作成
option = jmcomic.create_option_by_file('あなたの設定ファイルのパス、例: D:/option.yml')
# option オブジェクトを使用してアルバムをダウンロード
jmcomic.download_album(123, option)
# 等価の記述: option.download_album(123)

3. コマンドラインの使用

単にアルバムをダウンロードするだけなら、コマンドラインを使用する方が前述の方法よりもシンプルかつ直接的です。

例えば、Windowsでは win+r キーを押して jmcomic xxx と入力するだけでダウンロードできます。

例:

アルバム123をダウンロードするコマンド

jmcomic 123

アルバム123のチャプター456をダウンロードするコマンド

jmcomic 123 p456

コマンドラインモードも独自の Option 設定をサポートしています。環境変数またはコマンドライン引数を利用できます。

a. コマンドライン引数 --option 経由で設定ファイルのパスを指定

jmcomic 123 --option="D:/a.yml"

b. 環境変数 JM_OPTION_PATH にオプションファイルのパスを設定(推奨)

環境変数の設定方法は Google 等で検索してください。または powershell コマンドを使用: setx JM_OPTION_PATH "D:/a.yml" (再起動後に反映されます)

jmcomic 123

高度な利用方法

ドキュメントのトップページをご覧ください → jmcomic.readthedocs.io

(ヒント: jmcomicは多数のダウンロード設定項目を提供しています。大部分のダウンロード要件については、関連する項目やプラグインを探すことで実現できる可能性が高いです。)

プロジェクトの特色

  • Cloudflareのボット対策のバイパス機能

  • JM APP インターフェースの最新暗号化アルゴリズムを実装 (1.6.3)

  • 様々な利用方法のサポート:

  • Web版モバイル版の2つのクライアントをサポートし、設定から簡単に切り替え可能(モバイル版はIP制限がなく圧倒的な互換性を持ち、Web版はエリア制限があるものの高効率

  • 自動再試行およびドメイン切り替えメカニズムのサポート

  • マルチスレッドダウンロード(各画像ごとにスレッドの細分化が可能。驚異的な効率)

  • 強力な設定オプション

    • カスタマイズ無しでもシームレスに動作。
    • 設定ファイルからのOption生成・さまざまなフォーマットに対応。
    • 設定可能な要素一覧:リクエストドメイン クライアントの実装 ディスクキャッシュの利用状況 同時にダウンロードするチャプター/画像の数 画像フォーマット変換 ダウンロードパスの規則構成 メタ情報(headers, cookies, proxies) 簡体字/繁体字(中国語)の変換 など。
  • 強力な拡張性

    • アルバム/チャプター/画像ダウンロード前後のコールバック関数のカスタムをサポート
    • 各種クラスのカスタマイズ対応: Downloader(スケジューリング担当) Option(設定担当) Client(リクエスト担当) エンティティクラス など
    • カスタムログ出力・例外リスナーの実装
    • プラグイン(Plugin)システムにより、機能を容易に拡張したり、他者の製作物を利用可能。組み込みプラグインの一例:
      • ログインプラグイン
      • ハードウェアリソース監視プラグイン
      • 最新チャプターのみダウンロードするプラグイン
      • ファイル圧縮(Zip)プラグイン
      • クライアントプロキシプラグイン
      • 特定拡張子の画像ダウンロードプラグイン
      • QQメール送信プラグイン
      • ログトピックフィルタプラグイン
      • ブラウザのクッキーを自動で抽出するプラグイン
      • お気に入りをCSV形式でエクスポートするプラグイン
      • すべての画像を1つのPDFファイルに結合するプラグイン
      • すべての画像を縦長の1つのPNGファイルに結合するプラグイン
      • Webブラウザからローカルのチャプターを閲覧するプラグイン
      • アルバム更新購読プラグイン
      • 画像数の少ないチャプターをスキップするプラグイン
      • 重複ファイルの検出・削除プラグイン
      • パス文字列置換プラグイン
      • 高度な再試行プラグイン
      • 表紙ダウンロードプラグイン

ご利用上の注意点

  • Python 3.12以上を推奨します。現在の最小互換バージョンは3.9です。

    注意: Python 3.9 およびそれ以前のバージョンは2025年に完全にサポート終了 (EOL) となっており、3.9以下のバージョンを使用すると、サードパーティ製ライブラリの非互換性の問題がいつでも発生する可能性があります。

  • 個人のプロジェクトであるため、ドキュメントやサンプルコードの更新が遅れることがあります。ご不明な点はIssueにてご質問ください。

ディレクトリ構造のご紹介

  • .github: GitHub Actions 用の設定ファイル
  • assets: コードやスクリプト以外のリソースファイル・画像類
    • docs: ドキュメントテキスト
    • option: オプションファイルのサンプル・テンプレート
  • src: ソースコード本体
    • jmcomic: jmcomic パッケージ
  • tests: テスト環境(unittestを利用した構成)
  • usage: 使い方・使用例を実装したスクリプト類

特別な感謝

画像分割と連結アルゴリズム + JMモバイル版APIの実装と参照

Repo Card