Files
UHD_Media_Tool/scripts/mp-sync/ledger.json
T
rootandClaude Opus 5.5 36dc048e89 feat(parser,sites): W5-D port title/zhconv/site parsing gaps found by MP differential
Title recognition (parseRelease / parseReleasePath):
- anime prefix tags (★N月新番, [国漫], 【22年日剧】), category lead bracket, `A / B` cn aliases
- `Name [01]`, `[TV 04]`, `#13`, `名称 12.mkv`, `S01 13-14`, `E13-14` episodes
- lead bracket as title vs group, trailing [Group], YTS.MX/Hall_of_C style groups, 字幕组 suffix
- `[dot.release.name][…]` unbracketing, `Season 2017` as year, leading date not airDate,
  date-only parent dir does not merge as TV
- original disc: Blu-ray + AVC/HEVC/VC-1/MPEG-2 without x26x/H.26x -> BluRay-Disc
- `{[tmdbid=;type=;s=;e=]}` explicit block, bangumi/anilist ids
- bare [1080]/[5.1], DTS-HD MA5.1, £ multi-group, 合集, pinyin title -> cn from subtitle,
  streaming platform table, CHS/CHT/GB/BIG5 in subtitle
zh-map: add 迴滾魷瑯臥駭; document one-to-many chars kept out.
Sites: tbody branch + header-row tightening via movieclaw-import rowSelector (18 definitions),
row-level case/hr/labels include the row itself, subtitle branch (searchType: "subtitles"),
parseSizeMp banker's rounding.
Differential snapshots regenerated; MP test sample sources registered in ledger.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-27 23:09:14 +08:00

400 lines
17 KiB
JSON

{
"$comment": "由 scripts/mp-sync/build-ledger.mjs 生成;不要手改(改源码文件头 @mp-source 标签或 ledger.manual.json)。",
"upstream": {
"name": "MoviePilot",
"url": "https://github.com/jxxghp/MoviePilot",
"branch": "v3",
"license": "GPL-3.0"
},
"watchDirs": ["app/modules/indexer/spider", "app/modules/indexer/parser"],
"entries": [
{
"upstream": "app/adapters/network/cloudflare.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "a23a2c44da051cd36f5dca87fe834a9518fee2019a1088aa2eecd88b3cafcca4",
"ours": ["packages/adapters/src/sites/user-parsers/common.ts"],
"source": "tag"
},
{
"upstream": "app/application/mediaserver.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "f034f0be8ba656e3b6d8148f467f39010f1e2fb51c21565ffef1b0ae8e088eac",
"ours": ["packages/adapters/src/emby/client.ts"],
"source": "manual"
},
{
"upstream": "app/application/rss.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "8ea70f712512486dca06a96da2d352f832ef1e1dbb430c815245bf13058f05eb",
"ours": [
"packages/adapters/src/rss/fetch.ts",
"packages/adapters/src/rss/parse.ts",
"packages/adapters/src/rss/rss-link.ts"
],
"source": "manual"
},
{
"upstream": "app/application/site/sites.pyi",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "8fea9a239354f2b7eebeaf912a569ce0fa161e18b9483c49a802d828c5b10c51",
"ours": [
"packages/adapters/src/sites/definitions/schema.ts",
"packages/adapters/src/sites/registry.ts",
"packages/adapters/src/sites/spider/schema.ts"
],
"source": "manual"
},
{
"upstream": "app/chain/download/submission.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "f7cb870e47d644c9a85c6c62e9284f5b3405da09148540bf1eec55479b7212c9",
"ours": [
"packages/adapters/src/sites/mteam/adapter.ts",
"packages/adapters/src/sites/spider/adapter.ts",
"packages/adapters/src/sites/spiders/common.ts"
],
"source": "manual+tag"
},
{
"upstream": "app/domain/site.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "650c795a4def0a11317572c9210aa111c51e564973928d3af3fce8ce2da66107",
"ours": ["packages/adapters/src/sites/user-parsers/common.ts"],
"source": "tag"
},
{
"upstream": "app/foundation/dom.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "6d6accf2cef132e572aabb15da071ee355a3a6b02957fcb9c2e0c4082f863f4e",
"ours": ["packages/adapters/src/sites/user-parsers/dom.ts"],
"source": "tag"
},
{
"upstream": "app/foundation/size.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "7b0b8f50588cbf9b827be2cfbe00044f493ea329730de8b61526cf159b5a1600",
"ours": ["packages/adapters/src/sites/spider/spider.ts"],
"source": "manual"
},
{
"upstream": "app/foundation/temporal.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "74941f460e4069f45cae85636ded26366f80f9869438b2ff0ca092ef5dddb892",
"ours": ["packages/adapters/src/sites/spiders/common.ts", "packages/adapters/src/sites/user-parsers/common.ts"],
"source": "tag"
},
{
"upstream": "app/foundation/text.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "a88c75dc843131cb4a71e041b59386bea1defd332c77087978be854b56177961",
"ours": ["packages/adapters/src/sites/user-parsers/common.ts"],
"source": "tag"
},
{
"upstream": "app/modules/__init__.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "2edada0ea59108b0e69913ae631beffa3f85f7d4675502cc790696b26cf47ab6",
"ours": ["packages/adapters/src/qbittorrent/paths.ts"],
"source": "manual"
},
{
"upstream": "app/modules/_base/downloader.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "84bd8946c8b26dd2bb7caa4983d4407c6a9b28385ff28df947fe412c3d49c3b5",
"ours": ["packages/adapters/src/qbittorrent/torrent.ts"],
"source": "manual"
},
{
"upstream": "app/modules/emby/emby.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "e6468ea34ef2d6beec7219bcf0d5d309578cc0b65c896b91e1a8b6e65967ed6c",
"ours": ["packages/adapters/src/emby/client.ts"],
"source": "manual"
},
{
"upstream": "app/modules/filemanager/storages/local.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "806a1970ca8eb1f500d5273f62e0a5eaa834568cdb1af7d7c5dd92fe0c3d1702",
"ours": ["packages/adapters/src/fs/copy.ts", "packages/adapters/src/fs/move.ts"],
"source": "manual"
},
{
"upstream": "app/modules/filemanager/transhandler.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "13e2bba491acfde28e1f6ed083a639f306a3bbaac585732b994eccae925b9bad",
"ours": ["packages/adapters/src/fs/move.ts"],
"source": "manual"
},
{
"upstream": "app/modules/indexer/__init__.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "e9c5d15fdaa53205e15210d1f19019b9b82716affe075f6b268f6a044d676641",
"ours": [
"packages/adapters/src/sites/registry.ts",
"packages/adapters/src/sites/spider/adapter.ts",
"packages/adapters/src/sites/spiders/adapter.ts",
"packages/adapters/src/sites/spiders/index.ts",
"packages/adapters/src/sites/spiders/map.ts",
"packages/adapters/src/sites/spiders/types.ts",
"packages/adapters/src/sites/user-parsers/registry.ts"
],
"source": "manual+tag"
},
{
"upstream": "app/modules/indexer/parser/__init__.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "0e6c4215b713493a4efdedfb7f42ff9418ec297adc2567b4f596ebaec8120ea3",
"ours": ["packages/adapters/src/sites/user-parsers/base.ts", "packages/adapters/src/sites/user-parsers/types.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/bitpt.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "871d25e570f1fadcd8f214d8ae9f3b07653a053337a5e14a487a96c99a8da3a0",
"ours": ["packages/adapters/src/sites/user-parsers/bitpt.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/discuz.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "12277ba955ce7263c4b1862749443878c0900350ea8d5eb970bb57e1249c279d",
"ours": ["packages/adapters/src/sites/user-parsers/discuz.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/file_list.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "f92e65ed73278c8e68fdd86927cb307e418564580daf8fded3e7a467d7bea7ac",
"ours": ["packages/adapters/src/sites/user-parsers/file-list.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/gazelle.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "c10e5246724b51391fff60f90e17022c0fd5fa2a4151ae69d6c4ee9ad1c5f1c6",
"ours": ["packages/adapters/src/sites/user-parsers/gazelle.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/hddolby.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "a4336d92d603c06953bb957d166f354d7a847eda75d9eaf2bcc96212f6e58c56",
"ours": ["packages/adapters/src/sites/user-parsers/hddolby.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/ipt.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "2b9d04d76606329f32d7f726b5ae478997cdb7ee55f74ff89ab881c641e58bc0",
"ours": ["packages/adapters/src/sites/user-parsers/ipt.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/mtorrent.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "c5d5a3c6f9f5fa5a60e3d65426bdc6620e94e861e0cf27f718595afc61b86165",
"ours": ["packages/adapters/src/sites/user-parsers/mtorrent.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/nexus_audiences.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "1a2d104db7699c8dffbc79546a63dd40108e8fa171f1e7380e886521b0c3698f",
"ours": ["packages/adapters/src/sites/user-parsers/nexus-audiences.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/nexus_hhanclub.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "8850619069d4b9baaac2ef53fbdf5bac88b365b2e3009455ad40593c963c5ccb",
"ours": ["packages/adapters/src/sites/user-parsers/nexus-hhanclub.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/nexus_php.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "39303ae96d9cd198d0145e10539357ac17186be0127eaa92ada36ee3746296d2",
"ours": ["packages/adapters/src/sites/user-parsers/nexus-php.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/nexus_project.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "2b5508cfb2f89efa343515c5b91ae7af95fb9adf4624da6686c4f3b0004f07b0",
"ours": ["packages/adapters/src/sites/user-parsers/nexus-project.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/nexus_rabbit.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "09149b89a7c76b9880d34deedc7335aba3051a81910d333df237614a0a55a98f",
"ours": ["packages/adapters/src/sites/user-parsers/nexus-rabbit.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/rousi.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "1b1ea93de084c20b7001fc22994d87b4f99d5c04773ee25cb1482966fefca205",
"ours": ["packages/adapters/src/sites/user-parsers/rousi.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/small_horse.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "b73b5de97737ca60e46bfecfc580bad6d9c7ee573d01bf6002f0282bcdf229ab",
"ours": ["packages/adapters/src/sites/user-parsers/small-horse.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/sunnypt.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "937f8453fa2b73d06a690ff91e8939cd1478009b4b731f622d6585d9cdbc28cf",
"ours": ["packages/adapters/src/sites/user-parsers/sunnypt.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/tnode.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "c9cb809fc4bffc161f2595cbb6db97b919c83d437e3bdc29374e46e3c46ba74e",
"ours": ["packages/adapters/src/sites/user-parsers/tnode.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/torrent_leech.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "72d1473a3bba5398d1a283995b646f7c93683992c4fa9f6a0d5eb80272754b0b",
"ours": ["packages/adapters/src/sites/user-parsers/torrent-leech.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/unit3d.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "9a4d579deca593b445e80e560ed79c265e9b95cb631bef91e4dca859d020b912",
"ours": ["packages/adapters/src/sites/user-parsers/unit3d.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/yema.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "0f98fd580bad06edebaf81730deb5f11ad7c55ac5ae0d9ebc76ae50c5f828017",
"ours": ["packages/adapters/src/sites/user-parsers/yema.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/parser/zhixing.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "90c8954e73876d9437220bf3a26c8f863d6b4773b54d97ae07321ee0c1b1abc5",
"ours": ["packages/adapters/src/sites/user-parsers/zhixing.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/__init__.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "2513d962fa437f9bf2ca06f5f908b7de8b9bb7b032f80eff283611af38a8b487",
"ours": [
"packages/adapters/src/sites/spider/map.ts",
"packages/adapters/src/sites/spider/schema.ts",
"packages/adapters/src/sites/spider/spider.ts",
"packages/adapters/src/sites/spider/template.ts"
],
"source": "manual"
},
{
"upstream": "app/modules/indexer/spider/haidan.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "75eb802f19f02cf64ed2b7b981026e47369a2d815c6a666c5a9fd70aa86a598e",
"ours": ["packages/adapters/src/sites/spiders/haidan.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/hddolby.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "46a50bd8d49f83a21f59b6273b0378d2342feb78e7f2f5b953eb9d1311c38804",
"ours": ["packages/adapters/src/sites/spiders/hddolby.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/mtorrent.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "a8ab2b822cb24a22c16a8db01e0ef68985435a25b5332d741992f9ff99c10de5",
"ours": [
"packages/adapters/src/sites/mteam/adapter.ts",
"packages/adapters/src/sites/mteam/client.ts",
"packages/adapters/src/sites/mteam/spider.ts",
"packages/adapters/src/sites/spiders/mtorrent.ts"
],
"source": "manual+tag"
},
{
"upstream": "app/modules/indexer/spider/rousi.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "aa13c386a560a97125ac3879b56187c50564d544e925ad9f221bbbefc15e712a",
"ours": ["packages/adapters/src/sites/spiders/rousi.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/sunnypt.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "735b0d721e65ec4006d1ea309b1815635caa7e69e1897643faaa6ca8b84897b8",
"ours": ["packages/adapters/src/sites/spiders/sunnypt.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/tnode.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "a3634a268dbad6cfe45a5c70606b94a4c2fe8f9b351d9b7d6c6499f4a8107fe3",
"ours": ["packages/adapters/src/sites/spiders/tnode.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/torrentleech.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "c965f2bcaea4a50335bcb6e670a9ddb3a96a3f62f59bf3f93deff9cd9e7e28e5",
"ours": ["packages/adapters/src/sites/spiders/torrentleech.ts"],
"source": "tag"
},
{
"upstream": "app/modules/indexer/spider/yema.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "560b62c1ff102d3efa47ad9dc31ba1a5794eae804fc320dbb06f08b72a004f3f",
"ours": ["packages/adapters/src/sites/spiders/yema.ts"],
"source": "tag"
},
{
"upstream": "app/modules/qbittorrent/qbittorrent.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "ab02e97e986f5d4d5441419364ee1e04411f9c9b77323c713e059301d9746390",
"ours": ["packages/adapters/src/qbittorrent/client.ts", "packages/adapters/src/qbittorrent/state.ts"],
"source": "manual"
},
{
"upstream": "app/modules/themoviedb/tmdbapi.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "787553a6f57d8b21e04442d100e098694b9ff7835a2f8d7541b53511606caff8",
"ours": ["packages/adapters/src/tmdb/client.ts", "packages/adapters/src/tmdb/match.ts"],
"source": "manual"
},
{
"upstream": "app/schemas/site.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "e7952ed40b7b5a66d95fe1b07e1d3915601b47c2936ff10ec6880c8a030d0b8f",
"ours": ["packages/adapters/src/sites/user-parsers/types.ts"],
"source": "tag"
},
{
"upstream": "tests/cases/meta.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "3af375cf2c433db9f2dbfd78cb5798718edf26d7414d4ace08a49a02d80a7884",
"ours": ["packages/domain/test/differential/meta-mp.json", "packages/domain/test/differential/meta-samples.json"],
"source": "manual"
},
{
"upstream": "tests/test_rust_accel.py",
"commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e",
"sha256": "0259f245d27832c2ef685178a180dc7ea33f9106b5b5029f6737f199c556bbec",
"ours": ["packages/adapters/test/differential/indexer.json", "scripts/mp-sync/gen-differential.py"],
"source": "manual"
}
]
}