README-jp.md
August 3, 2026 · View on GitHub
Python API for JMComic
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
クイックスタート
1. アルバムのダウンロード方法
以下の簡単なコードを使用するだけで、アルバム JM123 のすべてのチャプター画像をダウンロードできます。
import jmcomic # モジュールのインポート(事前にインストール必須)
jmcomic.download_album('123') # ダウンロードしたいアルバムのIDを渡し、アルバム全体をローカルにダウンロード
上記の download_album メソッドには option パラメータが用意されており、JMのドメイン名、ネットワークプロキシ、画像のフォーマット変換、プラグインなどのダウンロード設定を管理できます。
これらの設定項目が必要な場合は、設定ファイルから option オブジェクトを作成し、それを使用してアルバムをダウンロードすることをお勧めします。次の章をご参照ください。
2. 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)
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
4. アルバムの詳細を確認する(jmv コマンド)
jmvコマンドは、ダウンロードせずにアルバムの詳細を素早く確認するために使用します。利用シーン: どこかのサイトで謎の番号を見かけ、それが何のアルバムかすぐに確認したい時。元のテキストをコピーし、Win+Rを押して
jmv [貼り付けた内容]と入力するだけです。任意のテキストから数値を抽出し、それを番号として扱うことができるため、さまざまな形式の番号をそのまま貼り付けるのに便利です。
例:
# 番号を直接入力する
jmv 350234
# 混在したテキストから数値を抽出する (350234 を抽出)
jmv 350これ見たことない234
# Optionファイルを指定する (環境変数もサポート、使用法は上記と同様)
jmv 350234 --option="D:/a.yml"
# -y パラメータ: 実行後、Enterキーの確認を待たずに直接終了する
jmv 350234 -y
出力イメージ:
🔍 検索中... 禁漫番号 - [350234] の詳細
──────────────────────────────────────────────────
📖 タイトル: xxx
🆔 ID: JM350234
🔗 リンク: https://18comic.vip/album/350234/
✍️ 作者: Author1, Author2
──────────────────────────────────────────────────
📅 公開日: 2022-06-15
📅 更新日: 2023-01-01
📄 総ページ数: 50
👀 閲覧数: 2M
❤️ いいね: 77K
💬 コメント: 9801
──────────────────────────────────────────────────
🏷️ タグ: タグ1, タグ2, ...
🎭 キャラクター: キャラA, キャラB, ...
📚 作品: 作品1, 作品2, ...
──────────────────────────────────────────────────
📑 チャプター (2):
第1話 上 (id: 350234)
第2話 下 (id: 350235)
──────────────────────────────────────────────────
[実行終了] Enterキーを押してウィンドウを閉じてください... (次回から -y パラメータを付けると確認をスキップできます)
高度な利用方法
ドキュメントのトップページをご覧ください → jmcomic.readthedocs.io
(ヒント: jmcomicは多数のダウンロード設定項目を提供しています。大部分のダウンロード要件については、関連する項目やプラグインを探すことで実現できる可能性が高いです。)
プロジェクトの特色
-
Cloudflareのボット対策のバイパス機能
-
JM APP インターフェースの最新暗号化アルゴリズムを実装 (1.6.3)
-
Async と Sync の2種類の API に対応
-
様々な利用方法のサポート:
- GitHub Actions: Web上でアルバムIDを直接入力してダウンロード(チュートリアル:GitHub Actions経由でのダウンロード)
- コマンドライン: Pythonのコード不要、簡単操作(チュートリアル:コマンドラインからのダウンロード)
- Pythonコード: 最も本質的かつ強力な利用法(一定のPythonプログラミング知識が必要です)
-
Web版とモバイル版の2つのクライアントをサポートし、設定から簡単に切り替え可能(モバイル版はIP制限がなく圧倒的な互換性を持ち、Web版はエリア制限があるものの高効率)
-
自動再試行およびドメイン切り替えメカニズムのサポート
-
ダウンロードタスク単位での構造化ログ収集に対応
-
マルチスレッドダウンロード(各画像ごとにスレッドの細分化が可能。驚異的な効率)
-
強力な設定オプション
- カスタマイズ無しでもシームレスに動作。
- 設定ファイルからのOption生成・さまざまなフォーマットに対応。
- 設定可能な要素一覧:
リクエストドメインクライアントの実装ディスクキャッシュの利用状況同時にダウンロードするチャプター/画像の数画像フォーマット変換ダウンロードパスの規則構成メタ情報(headers, cookies, proxies)簡体字/繁体字(中国語)の変換など。
-
強力な拡張性
- アルバム/チャプター/画像ダウンロード前後のコールバック関数のカスタムをサポート
- 各種クラスのカスタマイズ対応:
Downloader(スケジューリング担当)Option(設定担当)Client(リクエスト担当)エンティティクラスなど - カスタムログ出力・例外リスナーの実装
- プラグイン(Plugin)システムにより、機能を容易に拡張したり、他者の製作物を利用可能。主要な組み込みプラグインの一例:
ログインプラグイン,最新チャプターのみダウンロードするプラグイン,お気に入りをCSV形式でエクスポートするプラグインすべての画像を1つのPDFファイルに結合するプラグイン,すべての画像を縦長の1つのPNGファイルに結合するプラグインファイル圧縮(Zip)プラグイン,ブラウザのクッキーを自動で抽出するプラグイン,アルバム更新購読プラグインなど
ご利用上の注意点
-
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: 使い方・使用例を実装したスクリプト類