mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-29 11:46:17 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
3.7 KiB
3.7 KiB
コマンド ab-plugin
ab-plugin は autobangumi-sdk の wheel と一緒にインストールされます。依存は ab_sdk だけで、AutoBangumi 本体のインストールは不要です。
uv tool install ./autobangumi_sdk-0.5.0-py3-none-any.whl
# プロジェクト内の場合:uv add ./autobangumi_sdk-0.5.0-py3-none-any.whl
wheel は 4.0 beta / 正式版の GitHub Release の添付ファイルです。PyPI には公開しません。コントラクトテストには pytest が必要です:uv add --dev pytest(または autobangumi-sdk[test] をインストール)。
new
ab-plugin new <id> [--kind rename|notifier|search] [--dir .]
<id>/ ディレクトリを作成します。
<id>/
├── plugin.toml
├── <id のアンダースコア形>/__init__.py # プラグインのコード
├── tests/test_contract.py # ab_sdk.testing のスイートを継承
├── pyproject.toml # 開発専用。パッケージには含まれません
└── README.md
id に使えるのは小文字、数字、ハイフンだけです。ディレクトリが既にあると実行を拒否します。ダウンローダーのひな形はありません。ダウンローダーには実際のバックエンドが必要で、そのままコントラクトを通るひな形には意味がないためです。
validate
ab-plugin validate [path]
マニフェストのフィールド、sdk の範囲に現在の SDK が含まれるか、エントリモジュールの有無、フロントエンドのエントリファイルの有無を検証します。ネイティブ拡張(.so / .pyd / .dylib / .dll)を含むディレクトリは拒否します。問題があると終了コードは 1 です。
pack
ab-plugin pack [path] [-o dist]
検証してから dist/<id>-<バージョン>.zip を作成します。内容は zip のルートに置かれ、署名付きカタログのパッケージと同じ構成です。tests/、pyproject.toml、uv.lock、キャッシュ、dist/ は除外されます。ファイルの順序とタイムスタンプは固定なので、同じ内容からは同じ sha256 が得られます。
dev
ab-plugin dev [path] [--config-dir config]
- プラグインディレクトリを
<config-dir>/plugins/local/<id>にシンボリックリンクします。 - ホストの設定ファイル(
config_dev.json、なければconfig.json)にplugins.dev_mode、plugins.allow_unsigned、plugins.enabled.<id>を書き込みます。 - 設定ファイルがないと実行を拒否します。先に AutoBangumi を一度起動してください。
- 動作中の AB は設定ファイルを再読み込みしません。一度再起動してください。以後、
dev_modeが 1 秒ごとにローカルプラグインのディレクトリを確認し、ファイルが変わるとそのプラグインをリロードします。読み込みに失敗したプラグインも監視されるので、ソースを直すと自動で復旧します。 dev_modeが監視するのはローカルディレクトリだけです。pip パッケージは監視しません。新しく現れたプラグインディレクトリは、次の設定変更か再起動まで検出されません。
開発ループ
ab-plugin new my-notify --kind notifier
cd my-notify
uv run pytest # コントラクトテスト
ab-plugin dev . # リンクしてホットリロードを有効化。AB を一度再起動
# コードを変更 → AB が自動でリロード → WebUI で確認
ab-plugin pack .