JMComicへアクセスするためのPython API(Web版&モバイル版)を提供し、GitHub Actionsダウンローダーも統合しています🚀
本プロジェクトは、JMのクローラー用のPython APIをカプセル化したものです。
数行のPythonコードだけで、JM上のアルバムをローカルへダウンロードすることができます。ダウンロードされた画像は完全に処理済みです。
🧭 クイックガイド
- チュートリアル: GitHub Actionsを使ってダウンロードする
- チュートリアル: お気に入りのデータをエクスポートしてダウンロードする
- タワーブロードキャスト: 機長のみなさん、参加とコード提供を歓迎します
ご案内:JMのサーバー負荷を軽減するため、一度に大量のダウンロードは控えてください 🙏🙏🙏
本プロジェクトのコア機能は「アルバムのダウンロード」です。
これを基に、使いやすく、拡張性が高く、また特殊なダウンロード要求にも対応できるフレームワークを設計しました。
現在、主要機能の実装は比較的安定しており、プロジェクトはメンテナンス段階にあります。
ダウンロード機能以外にも、必要に応じて他のJMインターフェースも実装しています。既存の機能は以下の通りです:
- ログイン
- アルバム検索(すべての検索条件をサポート)
- 画像のダウンロードおよびデコード
- カテゴリ / ランキング
- アルバム / 各チャプター(エピソード)の詳細
- 個人のお気に入り
- インターフェースの暗号化・復号化(APP API)
⚠ まだPythonをインストールしていない場合は、先に 公式のPythonページからダウンロード してインストールをお願いします。 Python 3.12以上の使用を推奨します
-
公式 pip ソースからインストール(推奨。アップデートもこのコマンドを使用します)
pip install jmcomic -U
-
ソースコードからインストール
pip install git+https://github.com/hect0x7/JMComic-Crawler-Python
以下の簡単なコードを使用するだけで、アルバム JM123 のすべてのチャプター画像をダウンロードできます。
import jmcomic # モジュールのインポート(事前にインストール必須)
jmcomic.download_album('123') # ダウンロードしたいアルバムのIDを渡し、アルバム全体をローカルにダウンロード上記の download_album メソッドには option パラメータが用意されており、JMのドメイン名、ネットワークプロキシ、画像のフォーマット変換、プラグインなどのダウンロード設定を管理できます。
これらの設定項目が必要な場合は、設定ファイルから option オブジェクトを作成し、それを使用してアルバムをダウンロードすることをお勧めします。次の章をご参照ください。
-
まず、設定ファイルを作成します。ファイル名を
option.ymlと仮定します。このファイルには固有の記述形式があります。こちらのドキュメントを参照してください → 設定ファイルガイド
以下は簡単なデモです。ダウンロードした画像を png 形式に変換したい場合、
option.ymlに以下のように書き込みます。
download:
image:
suffix: .png # ダウンロードした画像をpng形式に変換する設定- 続いて、以下の Python コードを実行します。
import jmcomic
# 設定オブジェクトの作成
option = jmcomic.create_option_by_file('あなたの設定ファイルのパス、例: D:/option.yml')
# option オブジェクトを使用してアルバムをダウンロード
jmcomic.download_album(123, option)
# 等価の記述: option.download_album(123)単にアルバムをダウンロードするだけなら、コマンドラインを使用する方が前述の方法よりもシンプルかつ直接的です。
例えば、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)
-
様々な利用方法のサポート:
- GitHub Actions: Web上でアルバムIDを直接入力してダウンロード(チュートリアル:GitHub Actions経由でのダウンロード)
- コマンドライン: Pythonのコード不要、簡単操作(チュートリアル:コマンドラインからのダウンロード)
- Pythonコード: 最も本質的かつ強力な利用法(一定のPythonプログラミング知識が必要です)
-
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: 使い方・使用例を実装したスクリプト類
