RepoPilotOpen in app →

JavScraper/Emby.Plugins.JavScraper

Emby/Jellyfin 的一个日本电影刮削器插件,可以从某些网站抓取影片信息。

Concerns

Stale and unlicensed — last commit 2y ago

worst of 4 axes
Use as dependencyConcerns

no license — legally unclear; last commit was 2y ago…

Fork & modifyConcerns

no license — can't legally use code; no tests detected…

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isConcerns

no license — can't legally use code; last commit was 2y ago…

  • 6 active contributors
  • Stale — last commit 2y ago
  • Single-maintainer risk — top contributor 94% of recent commits
Show 3 more →
  • No license — legally unclear to depend on
  • No CI workflows detected
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: publish a permissive license (MIT, Apache-2.0, etc.); 1 commit in the last 365 days
  • Fork & modify ConcernsMixed if: add a LICENSE file
  • Deploy as-is ConcernsMixed if: add a LICENSE file

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Great to learn from" badge

Paste into your README — live-updates from the latest cached analysis.

RepoPilot: Great to learn from
[![RepoPilot: Great to learn from](https://repopilot.app/api/badge/javscraper/emby.plugins.javscraper?axis=learn)](https://repopilot.app/r/javscraper/emby.plugins.javscraper)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/javscraper/emby.plugins.javscraper on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: JavScraper/Emby.Plugins.JavScraper

Generated by RepoPilot · 2026-05-10 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/JavScraper/Emby.Plugins.JavScraper shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

AVOID — Stale and unlicensed — last commit 2y ago

  • 6 active contributors
  • ⚠ Stale — last commit 2y ago
  • ⚠ Single-maintainer risk — top contributor 94% of recent commits
  • ⚠ No license — legally unclear to depend on
  • ⚠ No CI workflows detected
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live JavScraper/Emby.Plugins.JavScraper repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/JavScraper/Emby.Plugins.JavScraper.

What it runs against: a local clone of JavScraper/Emby.Plugins.JavScraper — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in JavScraper/Emby.Plugins.JavScraper | Confirms the artifact applies here, not a fork | | 2 | Default branch master exists | Catches branch renames | | 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 4 | Last commit ≤ 701 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>JavScraper/Emby.Plugins.JavScraper</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of JavScraper/Emby.Plugins.JavScraper. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/JavScraper/Emby.Plugins.JavScraper.git
#   cd Emby.Plugins.JavScraper
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of JavScraper/Emby.Plugins.JavScraper and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "JavScraper/Emby.Plugins.JavScraper(\\.git)?\\b" \\
  && ok "origin remote is JavScraper/Emby.Plugins.JavScraper" \\
  || miss "origin remote is not JavScraper/Emby.Plugins.JavScraper (artifact may be from a fork)"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "Emby.Plugins.JavScraper/Plugin.cs" \\
  && ok "Emby.Plugins.JavScraper/Plugin.cs" \\
  || miss "missing critical file: Emby.Plugins.JavScraper/Plugin.cs"
test -f "Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs" \\
  && ok "Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs" \\
  || miss "missing critical file: Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs"
test -f "Emby.Plugins.JavScraper/JavMovieProvider.cs" \\
  && ok "Emby.Plugins.JavScraper/JavMovieProvider.cs" \\
  || miss "missing critical file: Emby.Plugins.JavScraper/JavMovieProvider.cs"
test -f "Emby.Plugins.JavScraper/JavIdRecognizer.cs" \\
  && ok "Emby.Plugins.JavScraper/JavIdRecognizer.cs" \\
  || miss "missing critical file: Emby.Plugins.JavScraper/JavIdRecognizer.cs"
test -f "Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs" \\
  && ok "Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs" \\
  || miss "missing critical file: Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 701 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~671d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/JavScraper/Emby.Plugins.JavScraper"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

An Emby/Jellyfin plugin that scrapes Japanese adult film metadata and images from sites like JavBus, JavDB, FC2, and AVSOX by recognizing JAV identification numbers (番号) in filenames. It uses a CloudFlare Worker-based jsproxy proxy to bypass geographic restrictions and includes features for translating titles/genres via Baidu API, extracting actress faces, and organizing media automatically. Monolithic C# plugin: core scraper abstract base (Scrapers/AbstractScraper.cs) with site-specific implementations (JavBus.cs, JavDB.cs, FC2.cs, etc.); JavMovieProvider/JavPersonProvider handle Emby integration; Configuration folder manages plugin settings; Data folder contains Entity Framework models (ApplicationDbContext.cs, Metadata.cs, Plot.cs); Baidu subfolder isolates translation service; Extensions folder provides utilities. Single .csproj entry point.

👥Who it's for

Emby/Jellyfin server administrators who manage Japanese adult film libraries and want automated metadata enrichment, genre/title translation, and actress profile images without manual curation. Primarily Chinese-speaking users given the UI and documentation language.

🌱Maturity & risk

Actively maintained with broad feature support (7 scraper sources, proxy protocols, Baidu translation integration, scheduled tasks). The codebase shows ~400KB C# indicating substantial complexity. However, no visible CI/CD pipeline, test suite, or GitHub stats provided in repo data—typical for niche Emby plugins. Production-ready for its intended use case but community-driven, not enterprise-backed.

High dependency on third-party scraper sites (JavBus, JavDB, FC2, etc.) that may change structure or block scraping—evidenced by multiple scraper implementations suggesting frequent breakage. No visible test suite increases regression risk when updating scrapers. Single-maintainer risk typical of adult-content plugins. CloudFlare Worker proxy dependency means single point of failure for non-self-hosted deployments.

Active areas of work

Cannot determine from provided metadata—no commit history, PR list, or issues visible. Repo description and file structure suggest active maintenance (multiple scrapers, recent Jellyfin config support), but specific current work is opaque.

🚀Get running

git clone https://github.com/JavScraper/Emby.Plugins.JavScraper.git
cd Emby.Plugins.JavScraper
dotnet restore Emby.Plugins.JavScraper.sln
dotnet build Emby.Plugins.JavScraper/Emby.Plugins.JavScraper.csproj
# Output: Emby.Plugins.JavScraper/bin/Release/JavScraper.dll

Daily commands: This is a library DLL, not a standalone app. Build with dotnet build and deploy JavScraper.dll to Emby plugins directory (e.g., /volume1/Emby/plugins on Synology, emby/programdata/plugins on Windows), then restart Emby Server.

🗺️Map of the codebase

  • Emby.Plugins.JavScraper/Plugin.cs — Main plugin entry point that registers scrapers, providers, and tasks with Emby/Jellyfin; all contributors must understand the plugin lifecycle
  • Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs — Base class for all metadata scrapers (JavBus, JavDB, FC2, etc.); defines the core scraping interface that every new source must implement
  • Emby.Plugins.JavScraper/JavMovieProvider.cs — Emby/Jellyfin movie metadata provider that orchestrates scraper selection and metadata fetching; critical integration point
  • Emby.Plugins.JavScraper/JavIdRecognizer.cs — JAV ID extraction logic from filenames/folder names; fundamental for matching movies to metadata sources
  • Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs — Plugin settings schema (proxy config, scraper preferences, organization rules); required for understanding configuration flow
  • Emby.Plugins.JavScraper/Http/HttpClientEx.cs — HTTP client wrapper with proxy support (HTTP/HTTPS/SOCKS5); handles all network requests to scraper sources
  • Emby.Plugins.JavScraper/Data/ApplicationDbContext.cs — Entity Framework context for persisting metadata translations and image face centers; local data storage layer

🛠️How to make changes

Add a new scraper source (e.g., new JAV website)

  1. Create new class inheriting from AbstractScraper in Scrapers folder (Emby.Plugins.JavScraper/Scrapers/NewSource.cs)
  2. Implement required abstract methods: GetMetadata(), GetImages(), GetActors() using your source's HTML/API (Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs)
  3. Register the new scraper in Plugin.cs CreateInstance() or scrapers list (Emby.Plugins.JavScraper/Plugin.cs)
  4. Add proxy configuration if the source requires it in Plugin.cs (Emby.Plugins.JavScraper/Http/HttpClientEx.cs)
  5. Update configuration UI to allow users to enable/disable the new source (Emby.Plugins.JavScraper/Configuration/ConfigPage.html)

Enhance JAV ID recognition pattern

  1. Update regex patterns for new JAV ID formats in Recognize() method (Emby.Plugins.JavScraper/JavIdRecognizer.cs)
  2. Test with existing scrapers that use the recognized ID (Emby.Plugins.JavScraper/Scrapers/AbstractScraper.cs)

Add metadata translation feature for new language

  1. Extend Baidu translation service or add new translation provider (Emby.Plugins.JavScraper/Services/TranslationService.cs)
  2. Update ApplicationDbContext to store translations in new language (Emby.Plugins.JavScraper/Data/ApplicationDbContext.cs)
  3. Add configuration option to enable/disable translation (Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs)

Implement new scheduled task (e.g., periodic metadata refresh)

  1. Create new task class implementing IScheduledTask interface (Emby.Plugins.JavScraper/JavOrganizeTask.cs)
  2. Register task in Plugin.cs GetScheduledTasks() method (Emby.Plugins.JavScraper/Plugin.cs)
  3. Add configuration options for task timing/behavior (Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs)

🪤Traps & gotchas

Baidu API credentials: BodyAnalysisService.cs requires API Key + Secret; feature silently degrades if unconfigured. Scraper site blocking: Each scraper (JavBus.cs, JavDB.cs, FC2.cs, AVSOX.cs, etc.) may break if target site changes HTML structure—no fallback error recovery visible. CloudFlare Worker jsproxy timeout: Default proxy may enforce rate limits; requires self-hosted jsproxy for heavy use (documented in cf-worker/README.md). File naming sensitivity: JavIdRecognizer.cs regex is case/format-dependent; uncommon JAV number formats may fail to match. Database migrations: ApplicationDbContext.cs has no migration folder visible—first-run setup path unclear.

🏗️Architecture

💡Concepts to learn

  • Metadata Provider Pattern (Emby/MediaBrowser) — JavMovieProvider and JavPersonProvider inherit IRemoteMetadataProvider; understanding this interface is critical to integrating scraped data into Emby's media library
  • Entity Framework Core & DbContext — ApplicationDbContext.cs persists metadata, translations, and image metadata; modifying schema requires understanding EF migrations and relationship mapping
  • HTML Scraping / DOM Parsing — Every scraper (JavBus.cs, JavDB.cs, FC2.cs) parses HTML to extract titles, genres, actress names, and image URLs; brittle to site layout changes
  • SOCKS5 Proxy Protocol — JavWebProxy.cs and ProxyHttpClientHandler.cs support SOCKS5 for routing through proxy servers; essential for bypassing geo-blocks on Japanese sites
  • Baidu Translate API Integration — BaiduFanyiService.cs automates title/genre/plot translation from Japanese to Chinese; requires API credentials and quota management
  • Regex-based ID Recognition — JavIdRecognizer.cs uses regex to extract JAV numbers (番号) from filenames; accuracy directly impacts scraper matching success
  • CloudFlare Worker Serverless Proxy — cf-worker/ deploys jsproxy on CloudFlare Workers to bypass geographic restrictions; single point of failure for non-self-hosted users and subject to rate limits
  • StrmAssistant/StrmAssistant — Alternative Emby/Jellyfin JAV metadata plugin; competitive solution for same use case
  • MediaBrowser/Emby.Plugins.MusicBrainz — Example Emby plugin architecture using RemoteMetadataProvider pattern; best practice reference
  • EtherDream/jsproxy — Upstream jsproxy project that JavScraper's CloudFlare Worker variant (cf-worker/) is based on; critical for understanding proxy mechanism
  • xinxin8816/gfriends — Actress face image repository that JavScraper's Gfriends.cs scraper pulls from; data source for female profile pictures
  • jellyfin/jellyfin-plugin-template — Official Jellyfin plugin boilerplate; reference for plugin lifecycle and configuration patterns

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add unit tests for JavIdRecognizer.cs scraper ID parsing logic

The JavIdRecognizer.cs file is critical for identifying JAV catalog IDs from filenames, which is the foundation for all metadata scraping. Currently, there are no visible test files in the repo. Adding unit tests would ensure reliability across different ID formats (e.g., AVSOX format, FC2 format, various punctuation styles) and prevent regressions when updating recognition patterns.

  • [ ] Create Emby.Plugins.JavScraper.Tests project alongside main plugin
  • [ ] Write test cases for JavIdRecognizer covering: standard formats (ABC-123), FC2 IDs, hyphenless variants, and edge cases
  • [ ] Add tests for each scraper's ID format expectations (AVSOX, JavBus, JavDB, R18, MgsTage, Jav123)
  • [ ] Integrate tests into CI workflow (see next PR)

Implement GitHub Actions CI workflow for building and testing on multiple .NET versions

The repo contains multiple C# projects (.csproj files) but has no visible GitHub Actions workflow. Adding CI would catch build failures early, ensure compatibility with different .NET target frameworks, and validate the plugin builds correctly across commits. This is essential for a multi-platform plugin used by both Emby and Jellyfin users.

  • [ ] Create .github/workflows/dotnet-build.yml to build Emby.Plugins.JavScraper.csproj on .NET 6.0+ and Framework 4.6.2+
  • [ ] Add separate build step for Emby.Actress project
  • [ ] Include test execution step (integrate with PR #1 above)
  • [ ] Add artifact upload for release builds (.nupkg files)

Extract and document scraper implementations with interface-based registry pattern

Currently, Scrapers folder contains 10+ concrete scraper classes (AVSOX.cs, JavBus.cs, JavDB.cs, FC2.cs, etc.) but there's no visible abstraction layer for registration and switching. The AbstractScraper.cs suggests a base class exists, but the strategy pattern isn't formalized. Refactoring to a scraper registry would: (1) make it easier to add/remove/toggle scrapers in config, (2) enable dynamic scraper loading, (3) reduce coupling in JavMovieProvider.cs and JavPersonProvider.cs.

  • [ ] Create IScraper interface (if not already in AbstractScraper) with defined contract for GetMetadata, GetImages, etc.
  • [ ] Build ScraperRegistry class in Emby.Plugins.JavScraper/Scrapers/ that maintains a dictionary of scraper implementations
  • [ ] Refactor Scrapers/AVSOX.cs, JavBus.cs, JavDB.cs, R18.cs, FC2.cs, MgsTage.cs, Jav123.cs to explicitly implement IScraper
  • [ ] Update JavMovieProvider.cs and JavPersonProvider.cs to use registry instead of direct instantiation
  • [ ] Add unit tests for registry resolution (ties to PR #1)

🌿Good first issues

  • Add test coverage for JavIdRecognizer.cs: Create unit tests in a new Tests/ folder covering regex patterns for common JAV number formats (e.g., 'SSNI-123', 'FC2-1234567', 'R18-12345'). Currently no test files visible, making refactoring risky.
  • Document proxy configuration for each source: Some scrapers (JavBus, JavDB) may not need proxy while others (FC2, AVSOX) require it. Add a configuration matrix in README or create ProxySetting attribute on each Scraper subclass to auto-configure bypass rules.
  • Implement retry logic in scraper HTTP calls: AbstractScraper.cs and site-specific scrapers lack exponential backoff for transient failures (network timeouts, 429 rate limits). Add a retry decorator using Polly to improve reliability when scraper sites throttle.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 7ef5fbf — 增加图片URL (JavScraper)
  • 799984b — manifest.json 增加 checksum (JavScraper)
  • 941a6bd — 更新编码 (JavScraper)
  • 7e74758 — 增加 Jellyfin 的 manifest.json 文件,支持在线更新了。 (JavScraper)
  • 5f1d97e — fix (JavScraper)
  • 861dc69 — Jellyfin 增加 IsSubtitleFile 方法 (JavScraper)
  • 613451d — 增加计划任务:修复缺失的中文字幕标签,需要手动在“计划任务”中执行。 (JavScraper)
  • c3797b8 — fix (JavScraper)
  • f414eb1 — 增加公众评分,目前支持fc2club.net、javdb8.com (JavScraper)
  • 33bcef7 — FC2 url 更新 (JavScraper)

🔒Security observations

  • High · Proxy Service Architecture Vulnerability — Emby.Plugins.JavScraper/Http/JavWebProxy.cs, cf-worker/. The plugin relies on a CloudFlare Worker-based proxy service (modified jsproxy) to access metadata sources. This introduces a critical trust boundary: all traffic to scraping targets flows through an external proxy. This creates risks of man-in-the-middle attacks, data interception, and potential compromise of the proxy infrastructure affecting all users. Fix: Implement certificate pinning, validate proxy responses cryptographically, add integrity checks, and document the security assumptions. Consider hosting the proxy on infrastructure you control or use official APIs where available.
  • High · Unvalidated External Data Parsing — Emby.Plugins.JavScraper/Scrapers/ (all scraper implementations). Multiple scraper files (AVSOX.cs, JavBus.cs, JavDB.cs, R18.cs, etc.) parse HTML/JSON from external sources without apparent input validation. This creates XSS risks when scraped data is displayed in the Emby/Jellyfin UI, and potential XXE/Deserialization attacks if JSON parsing is improperly configured. Fix: Implement strict input validation and sanitization for all external data. Use parameterized HTML parsing, escape output for display contexts, and implement content security policies. Validate data schema against expected format before processing.
  • High · Potential SQL Injection in Database Layer — Emby.Plugins.JavScraper/Data/ApplicationDbContext.cs. The ApplicationDbContext and data persistence layer (Metadata.cs, Plot.cs, Translation.cs) use Entity Framework. Without verified code review of query construction, raw string concatenation in LINQ or EF could introduce SQL injection vulnerabilities, especially if user input from scrapers influences query construction. Fix: Ensure all EF Core queries use parameterized queries and LINQ expressions exclusively. Never concatenate user input into raw SQL. Implement database access logging and audit trails for data modifications.
  • Medium · Missing HTTPS Validation for External Requests — Emby.Plugins.JavScraper/Http/HttpClientEx.cs, Emby.Plugins.JavScraper/Http/ProxyHttpClientHandler.cs. HttpClientEx.cs and ProxyHttpClientHandler.cs handle HTTP requests to external scraping sources. Without verified certificate validation and strict HTTPS enforcement, the plugin could be vulnerable to SSL/TLS downgrade attacks and MITM interception of scraped content. Fix: Enforce HTTPS-only connections, implement certificate pinning for critical endpoints, disable SSL/TLS version negotiation below TLS 1.2, and validate certificate chains. Log all certificate validation failures.
  • Medium · Configuration Data Not Encrypted at Rest — Emby.Plugins.JavScraper/Configuration/PluginConfiguration.cs. PluginConfiguration.cs and related configuration files store plugin settings including proxy configuration, API credentials, and user preferences. If stored in plaintext without encryption, this exposes sensitive configuration data and credentials. Fix: Implement encryption for sensitive configuration values. Use platform-specific credential storage mechanisms (Windows DPAPI, Linux keyring). Never log configuration containing credentials or sensitive URLs.
  • Medium · Insufficient Authorization in Image/Content APIs — Emby.Plugins.JavScraper/Services/ImageProxyService.cs, Emby.Plugins.JavScraper/Services/ImageService.cs. ImageProxyService.cs and ImageService.cs provide image proxy/serving functionality. Without proper authorization checks, unauthorized users could potentially enumerate or access all cached images, or the service could be exploited as a general-purpose image proxy. Fix: Implement authentication and authorization checks before serving images. Restrict image serving to authenticated Emby/Jellyfin users. Implement rate limiting to prevent abuse. Validate image URLs to prevent path traversal attacks.
  • Medium · Unsafe HTML Configuration Pages — Emby.Plugins.JavScraper/Configuration/ (all .html files). Configuration pages (ConfigPage.html, JavOrganizationConfigPage.html) are served to users. Without Content Security Policy headers and proper output encoding, these could be vectors for reflected/stored XSS attacks if configuration data is user-controllable. Fix: Implement strict Content Security Policy

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Concerning signals · JavScraper/Emby.Plugins.JavScraper — RepoPilot