AI Slop Code RIsk Monitor

hect0x7/JMComic-Crawler-Python

Python API for JMComic | 提供Python API访问禁漫天堂,同时支持网页端和移动端 | 禁漫天堂GitHub Actions下载器🚀

22.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for hect0x7/JMComic-Crawler-Python, a Python project with 7,547 GitHub stars. SynthScan examined 24,656 lines of code across 96 source files, recording 415 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 22.1 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

22.1
Adjusted Signal
22.1
Raw Pattern Score
100%
Time Factor
2026-10-08
Last Push
7.5K
Stars
Python
Language
24.7K
Lines of Code
96
Files
415
Pattern Hits
2026-10-12
Scan Date
0.12
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 41.8/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 272 finding(s).

Hallucinated Dependency & Supply Chain Risk 12.0/100 · LOW

Are imports declared and package/API names verified? 49 finding(s).

Agent Over-Engineering Ratio 60.1/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 341 finding(s).

PR Review Velocity Impact 69.1/100 · HIGH

Which changes need focused human review? 415 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 11MEDIUM 50LOW 353

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 415 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers244 hits · 236 pts
SeverityFileLineSnippetContext
LOWtests/test_jmcomic/test_jm_client.py10 def test_add_favorite_album_uses_ajax_form_post(self):CODE
LOWtests/test_jmcomic/test_jm_client.py32 def test_delete_favorite_album_uses_ajax_form_post(self):CODE
LOWtests/test_jmcomic/test_jm_client.py71 def test_html_login_failure_raises(self):CODE
LOWtests/test_jmcomic/test_jm_client.py133 def test_detail_property_list(self):CODE
LOWtests/test_jmcomic/test_jm_client.py480 def test_html_forum_comment_id_parsing(self):STRING
LOWtests/test_jmcomic/test_jm_client.py508 def test_html_favorite_total_uses_labeled_count(self):STRING
LOWtests/test_jmcomic/test_jm_client.py657 def test_page_number_in_sync_generator(self):STRING
LOWtests/test_jmcomic/test_jm_client.py666 def test_page_number_in_async_generator(self):STRING
LOWtests/test_jmcomic/test_jm_client.py698 def test_indexed_entity_slice(self):STRING
LOWtests/test_jmcomic/test_jm_favorite.py11 def test_html_delete_favorite_album_uses_ajax_form_post(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py32 def test_api_add_favorite_album_uses_post(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py48 def test_api_delete_favorite_album_uses_post(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py64 def test_api_favorite_album_raises_on_unexpected_type(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py73 def test_async_api_add_favorite_album_uses_post(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py87 def test_async_api_delete_favorite_album_uses_post(self):CODE
LOWtests/test_jmcomic/test_jm_favorite.py102 def test_html_delete_favorite_album_raises_on_failure(self):CODE
LOWtests/test_jmcomic/test_jm_async_api.py21 def test_async_download_photo_by_id(self):CODE
LOWtests/test_jmcomic/test_jm_async_api.py38 def test_async_download_album_by_id(self):CODE
LOWtests/test_jmcomic/test_jm_async_api.py78 def test_async_partial_exception(self):STRING
LOWtests/test_jmcomic/test_jm_download_progress.py96 def test_progress_display_id_adds_prefix_only_once(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py100 def test_downloader_use_logs_before_and_after_class(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py127 def test_async_downloader_use_logs_and_changes_async_default(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py162 def test_sync_progress_is_rendered_before_download_finishes(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py208 def test_default_progress_console_respects_non_interactive_output(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py220 def test_non_interactive_notice_has_stable_text_layout(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py252 def test_log_panel_keeps_latest_six_lines(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py278 def test_plugin_accepts_custom_log_file_and_terminal_lines(self):CODE
LOWtests/test_jmcomic/test_jm_download_progress.py319 def test_non_interactive_progress_only_prints_final_summary(self):STRING
LOWtests/test_jmcomic/test_jm_download_progress.py369 def test_plugin_does_not_close_external_log_handlers(self):STRING
LOWtests/test_jmcomic/test_jm_download_progress.py397 def test_plugin_uses_real_scheduler_without_stdout_or_image_io(self):STRING
LOWtests/test_jmcomic/test_jm_download_progress.py479 def test_plugin_supports_real_async_scheduler_without_network_or_image_io(self):STRING
LOWtests/test_jmcomic/test_jm_download_progress.py551 def test_plugin_is_registered_and_documentation_only_shows_usage(self):STRING
LOWtests/test_jmcomic/test_jm_async_plugin.py16 def test_async_plugin_missing_album_context(self):CODE
LOWtests/test_jmcomic/test_jm_custom.py88 def test_custom_client_empty_domain(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py17 def test_jmcomic_progress_enabled_by_default(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py24 def test_jmcomic_no_progress_arg(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py31 def test_jmcomic_enable_download_progress(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py146 def test_jmv_extract_pure_digits(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py152 def test_jmv_extract_digits_scattered(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py158 def test_jmv_extract_jm_prefix(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py164 def test_jmv_extract_no_digits_exits(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py174 def test_jmv_truncate_list_under_limit(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py180 def test_jmv_truncate_list_at_limit(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py186 def test_jmv_truncate_list_over_limit(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py194 def test_jmv_get_album_detail_real(self):CODE
LOW⚡tests/test_jmcomic/test_jm_cli.py202 def test_jmv_print_album_detail_real(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py43 def test_jmcomic_does_not_enable_progress_twice(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py54 def test_jmcomic_no_progress_context_wraps_option_creation(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py75 def test_jmcomic_falls_back_without_rich(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py88 def test_jmcomic_parse_album_id(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py95 def test_jmcomic_parse_photo_id(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py110 def test_jmcomic_download_album(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py119 def test_entry_points_installed(self):CODE
LOWtests/test_jmcomic/test_jm_cli.py219 def test_jmv_print_truncates_real(self):CODE
LOWtests/test_jmcomic/test_jm_api.py10 def test_callback_is_not_public_download_api(self):CODE
LOWtests/test_jmcomic/test_jm_api.py24 def test_multi_id_shortcuts_do_not_forward_check_exception(self):CODE
LOWtests/test_jmcomic/test_jm_api.py42 def test_download_photo_by_id(self):CODE
LOWtests/test_jmcomic/test_jm_api.py49 def test_download_album_by_id(self):CODE
LOWtests/test_jmcomic/test_jm_api.py115 def test_get_html_domain_all_via_github_deprecated(self):STRING
LOWtests/test_jmcomic/test_jm_async_feature.py15 def test_async_download_use_feature(self):CODE
184 more matches not shown…
Decorative Section Separators46 hits · 141 pts
SeverityFileLineSnippetContext
MEDIUM⚡usage/benchmark_async_vs_sync.py98# ================================================================COMMENT
MEDIUM⚡usage/benchmark_async_vs_sync.py100# ================================================================COMMENT
MEDIUM⚡usage/benchmark_async_vs_sync.py189# ================================================================COMMENT
MEDIUM⚡usage/benchmark_async_vs_sync.py191# ================================================================COMMENT
MEDIUM⚡usage/benchmark_async_vs_sync.py245# ================================================================COMMENT
MEDIUM⚡usage/benchmark_async_vs_sync.py247# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py38# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py40# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py57# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py59# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py143# ================================================================COMMENT
MEDIUMusage/benchmark_async_vs_sync.py145# ================================================================COMMENT
MEDIUM⚡src/jmcomic/jm_async_client.py821 # ======================================================================COMMENT
MEDIUM⚡src/jmcomic/jm_async_client.py823 # ======================================================================COMMENT
MEDIUM⚡src/jmcomic/jm_async_client.py862 # ======================================================================COMMENT
MEDIUM⚡src/jmcomic/jm_async_client.py864 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py92 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py94 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py153 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py155 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py178 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py180 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py222 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py224 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py395 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py397 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py459 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py461 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py502 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py504 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py538 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py540 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py584 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py586 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py612 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py614 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py791 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py793 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py895 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_client.py897 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py68 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py70 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py229 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py231 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py258 # ======================================================================COMMENT
MEDIUMsrc/jmcomic/jm_async_downloader.py260 # ======================================================================COMMENT
Excessive Try-Catch Wrapping42 hits · 43 pts
SeverityFileLineSnippetContext
LOWtests/test_jmcomic/test_jm_client.py263 except Exception as e:STRING
LOWtests/test_jmcomic/test_jm_client.py323 except Exception as e:STRING
MEDIUMtests/test_jmcomic/test_jm_client.py257def search_and_test(case_name, params):CODE
LOWtests/test_jmcomic/test_jm_async_client.py184 except Exception as e:CODE
LOWusage/workflow_download.py91 except Exception:STRING
LOWusage/workflow_download.py123 except Exception:CODE
LOW⚡usage/benchmark_async_vs_sync.py84 except Exception:CODE
LOW⚡usage/benchmark_async_vs_sync.py94 except Exception:CODE
LOW⚡usage/benchmark_async_vs_sync.py184 except Exception as e:CODE
LOW⚡usage/benchmark_async_vs_sync.py238 except Exception as e:CODE
LOWusage/benchmark_async_vs_sync.py159 except Exception as e:CODE
LOWusage/benchmark_async_vs_sync.py209 except Exception as e:CODE
LOW.github/CONTRIBUTING.md147except Exception as e:CODE
LOWassets/docs/sources/tutorial/8_pick_domain.md35 except Exception as e:CODE
LOW⚡src/jmcomic/jm_async_client.py812 except Exception as e:CODE
LOW⚡src/jmcomic/jm_async_client.py856 except Exception as e:CODE
LOWsrc/jmcomic/jm_async_client.py78 except Exception:CODE
LOWsrc/jmcomic/jm_async_client.py294 except Exception as e:CODE
LOWsrc/jmcomic/jm_async_client.py342 except Exception:CODE
LOWsrc/jmcomic/jm_exception.py258 except Exception:CODE
LOWsrc/jmcomic/jm_async_downloader.py117 except Exception as e:CODE
LOWsrc/jmcomic/jm_async_downloader.py170 except Exception as e:CODE
MEDIUMsrc/jmcomic/jm_plugin.py1110def emit(self, record):CODE
LOWsrc/jmcomic/jm_plugin.py135 except Exception as e:CODE
LOWsrc/jmcomic/jm_plugin.py788 except Exception:CODE
LOWsrc/jmcomic/jm_plugin.py1113 except Exception:CODE
LOWsrc/jmcomic/jm_plugin.py1315 except Exception as e:STRING
LOWsrc/jmcomic/jm_plugin.py2032 except Exception as e:STRING
LOWsrc/jmcomic/jm_toolkit.py388 except Exception as e:CODE
LOWsrc/jmcomic/jm_toolkit.py419 except Exception as e:CODE
LOWsrc/jmcomic/jm_client_interface.py91 except Exception as e:CODE
LOWsrc/jmcomic/jm_client_interface.py125 except Exception as e:CODE
MEDIUMsrc/jmcomic/jm_client_interface.py88def json(self) -> Dict:CODE
MEDIUMsrc/jmcomic/jm_client_interface.py122def json(self) -> Dict:CODE
LOWsrc/jmcomic/api.py58 except Exception as e:CODE
LOWsrc/jmcomic/cli.py80 except Exception as e:CODE
LOWsrc/jmcomic/cli.py283 except Exception as e:CODE
LOWsrc/jmcomic/jm_downloader.py84 except Exception as e:CODE
LOWsrc/jmcomic/jm_downloader.py361 except Exception as e:CODE
LOWsrc/jmcomic/jm_client_impl.py123 except Exception as e:CODE
LOWsrc/jmcomic/jm_client_impl.py1269 except Exception:CODE
LOWsrc/jmcomic/jm_client_impl.py1330 except Exception as e:CODE
Unused Imports44 hits · 40 pts
SeverityFileLineSnippetContext
LOWtests/test_jmcomic/test_jm_client.py5CODE
LOWtests/test_jmcomic/test_jm_async_api.py9CODE
LOWtests/test_jmcomic/test_jm_async_plugin.py8CODE
LOWtests/test_jmcomic/__init__.py5CODE
LOWtests/test_jmcomic/__init__.py6CODE
LOWtests/test_jmcomic/test_jm_custom.py1CODE
LOWtests/test_jmcomic/test_jm_cli.py1CODE
LOWtests/test_jmcomic/test_jm_api.py5CODE
LOWtests/test_jmcomic/test_jm_async_feature.py8CODE
LOWtests/test_jmcomic/test_jm_release.py9CODE
LOWtests/test_jmcomic/test_jm_async_client.py8CODE
LOWtests/test_jmcomic/test_jm_exception.py1CODE
LOWtests/test_jmcomic/test_jm_task_context.py9CODE
LOWtests/test_jmcomic/test_jm_async_custom.py6CODE
LOWtests/test_jmcomic/test_jm_download_manifest.py8CODE
LOWtests/test_jmcomic/test_jm_plugin.py1CODE
LOWtests/test_jmcomic/test_jm_feature.py1CODE
LOWusage/workflow_export_favorites.py1CODE
LOWusage/workflow_download.py6CODE
LOWusage/benchmark_async_vs_sync.py15CODE
LOWusage/benchmark_async_vs_sync.py31CODE
LOWusage/benchmark_async_vs_sync.py32CODE
LOWsrc/jmcomic/jm_async_client.py6CODE
LOWsrc/jmcomic/jm_exception.py2CODE
LOWsrc/jmcomic/jm_exception.py6CODE
LOWsrc/jmcomic/jm_async_downloader.py9CODE
LOWsrc/jmcomic/jm_feature.py19CODE
LOWsrc/jmcomic/jm_entity.py4CODE
LOWsrc/jmcomic/jm_entity.py6CODE
LOWsrc/jmcomic/jm_plugin.py8CODE
LOWsrc/jmcomic/jm_plugin.py1099CODE
LOWsrc/jmcomic/__init__.py7CODE
LOWsrc/jmcomic/__init__.py8CODE
LOWsrc/jmcomic/__init__.py9CODE
LOWsrc/jmcomic/__init__.py10CODE
LOWsrc/jmcomic/__init__.py11CODE
LOWsrc/jmcomic/__init__.py12CODE
LOWsrc/jmcomic/jm_toolkit.py7CODE
LOWsrc/jmcomic/jm_client_interface.py1CODE
LOWsrc/jmcomic/api.py4CODE
LOWsrc/jmcomic/jm_downloader.py7CODE
LOWsrc/jmcomic/jm_option.py1CODE
LOWsrc/jmcomic/jm_config.py1CODE
LOWsrc/jmcomic/jm_client_impl.py5CODE
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHusage/workflow_download.py91except Exception:CODE
HIGHusage/workflow_download.py123except Exception:CODE
HIGHusage/benchmark_async_vs_sync.py94except Exception:CODE
HIGHusage/benchmark_async_vs_sync.py84except Exception:CODE
HIGHsrc/jmcomic/jm_plugin.py788except Exception:CODE
HIGHsrc/jmcomic/jm_plugin.py1820except PluginValidationException:CODE
Deep Nesting15 hits · 14 pts
SeverityFileLineSnippetContext
LOWtests/test_jmcomic/test_jm_download_progress.py278CODE
LOWtests/test_jmcomic/test_jm_download_progress.py369CODE
LOWtests/test_jmcomic/test_jm_download_progress.py397CODE
LOWtests/test_jmcomic/test_jm_download_progress.py479CODE
LOWtests/test_jmcomic/test_jm_plugin.py304CODE
LOWtests/test_jmcomic/test_jm_plugin.py418CODE
LOWtests/test_jmcomic/test_jm_plugin.py492CODE
LOWusage/workflow_download.py63CODE
LOWusage/workflow_download.py153CODE
LOWusage/benchmark_async_vs_sync.py249CODE
LOWsrc/jmcomic/jm_async_client.py251CODE
LOWsrc/jmcomic/jm_plugin.py1648CODE
LOWsrc/jmcomic/jm_toolkit.py532CODE
LOWsrc/jmcomic/jm_option.py344CODE
LOWsrc/jmcomic/jm_client_impl.py1308CODE
Cross-Language Confusion4 hits · 12 pts
SeverityFileLineSnippetContext
HIGH⚡src/jmcomic/jm_toolkit.py799 "latest_ep": null,STRING
HIGH⚡src/jmcomic/jm_toolkit.py800 "latest_ep_aid": null,STRING
HIGHsrc/jmcomic/jm_toolkit.py920 "description": null,STRING
HIGHsrc/jmcomic/jm_client_interface.py403 {"date": "12", "signed": null, "bonus": true}STRING
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALtests/test_jmcomic/test_jm_async_custom.py195 second_option.client.postman.meta_data.src_dict.pop('cookies', None)CODE
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOW.github/workflows/download_dispatch.yml61 UPLOAD_NAME:COMMENT
LOWassets/docs/sources/option_file_syntax.md21# 配置客户端相关COMMENT
LOWassets/docs/sources/option_file_syntax.md61 # 以下的写法都可以:COMMENT
LOWassets/docs/sources/option_file_syntax.md101 # base_dir: 根目录。COMMENT
LOWassets/docs/sources/option_file_syntax.md121 # 规则: 根目录 / 本子id / 章节序号 / 图片文件COMMENT
LOWassets/docs/sources/option_file_syntax.md161 # dependencies_strategy: 插件依赖处理策略(默认: failed-fast)COMMENT
LOWassets/docs/sources/option_file_syntax.md261 # 压缩文件插件,配在不同事件下面,效果不一样。可以选择配在 after_album 或者 after_photo 下COMMENT
LOWassets/docs/sources/option_file_syntax.md281 delete_original_file: true # 压缩成功后,删除所有原文件和文件夹COMMENT
LOWsrc/jmcomic/jm_config.py281 # 使用固定时间戳COMMENT
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHsrc/jmcomic/jm_client_impl.py870 Fetches a JM entity (album or chapter) by its JM ID and returns it as an instance of `clazz`. STRING
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc/jmcomic/jm_plugin.py479CODE
LOWsrc/jmcomic/jm_plugin.py1449CODE
LOWsrc/jmcomic/jm_toolkit.py1255CODE