{ "kind": "rss", "generatedFrom": { "repo": "MoviePilot", "commit": "e6820a83ab05e8a00eb0e14adf0f357faa965c7e", "function": "app/application/rss.py RssHelper._parse_impl (lxml fallback; parser port -> None)", "rust": "moviepilot_rust.parse_rss_items_fast (reference only)", "tz": "UTC", "generator": "gen-differential.py rss" }, "fields": ["title", "description", "link", "enclosure", "size", "pubdate", "nickname"], "samples": [ { "id": "hw-atom-nons", "input": { "file": "inputs/rss/hw-atom-nons.xml", "sha256": "688a445573de61dcae4982cfaf1bab6164578ef7d1c7e0d179d6fad2bf132fdd" }, "mp": { "status": "ok", "items": [ { "title": "Atom.Entry.One", "description": "atom summary", "link": "https://e.x/details?id=1", "enclosure": "https://e.x/details?id=1", "size": 0, "pubdate": { "kind": "aware", "text": "2026-09-26T13:14:03Z", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "Atom.Entry.Two", "description": "", "link": "https://e.x/details?id=2", "enclosure": "https://e.x/details?id=2", "size": 0, "pubdate": { "kind": "aware", "text": "2026-09-26T21:14:03+08:00", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T13:14:03.000Z" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Atom.Entry.One", "enclosure": "https://e.x/details?id=1", "size": 0, "description": "atom summary", "link": "https://e.x/details?id=1", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "Atom.Entry.Two", "enclosure": "https://e.x/details?id=2", "size": 0, "description": "", "link": "https://e.x/details?id=2", "pubdate": "2026-09-26T13:14:03+00:00" } ] } }, { "id": "hw-expired", "input": { "file": "inputs/rss/hw-expired.txt", "sha256": "4be5a56cf3dd539992cfaec516a0635e10c8f8c6ee24850dbafa3123bef8cf01" }, "mp": { "status": "false_error", "items": [] }, "mp_rust": { "status": "not_called", "note": "RssHelper.__parse_with_rust 对非 < 开头内容直接返回 None" } }, { "id": "hw-rdf", "input": { "file": "inputs/rss/hw-rdf.xml", "sha256": "a84984a7debba7ce9927f0a0323fbcbd4503f74112e6c7b0441654704ee3464a" }, "mp": { "status": "ok", "items": [] }, "mp_rust": { "status": "ok", "items": [ { "title": "RDF.Item.One", "enclosure": "https://e.x/1", "size": 0, "description": "rdf desc", "link": "https://e.x/1", "pubdate": "", "nickname": "alice" } ] } }, { "id": "hw-rss-broken", "input": { "file": "inputs/rss/hw-rss-broken.xml", "sha256": "dced074189dcf0a871fbd5d4fdec78f3c2310117d1900a7bb629434d12479df1" }, "mp": { "status": "ok", "items": [ { "title": "Good.One", "description": "", "link": "https://e.x/1", "enclosure": "https://e.x/1", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Unclosed", "description": "", "link": "https://e.x/2", "enclosure": "https://e.x/2", "size": 0, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "error", "error": "ValueError: ill-formed document: expected ``, but `` was found" } }, { "id": "hw-rss-cdata", "input": { "file": "inputs/rss/hw-rss-cdata.xml", "sha256": "ab3d319aec7b1cd8775b7144c7ebf848178d7cc3cfe6210d938b098ba7560cfa" }, "mp": { "status": "ok", "items": [ { "title": "[BDMV] 奥本海默 Oppenheimer 2023 & more", "description": "

Size: 78.42 GB

", "link": "https://pt.example.com/details.php?id=1", "enclosure": "https://pt.example.com/download.php?id=1&passkey=abcdef0123456789", "size": 84203386470, "nickname": "豆瓣用户A", "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 21:14:03 +0800", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "Plain & Escaped 中文", "description": "desc & more", "link": "https://pt.example.com/details.php?id=2&hit=1", "enclosure": "https://pt.example.com/download.php?id=2", "size": 1024, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 13:14:03 GMT", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "[BDMV] 奥本海默 Oppenheimer 2023 <UHD> & more", "enclosure": "https://pt.example.com/download.php?id=1&passkey=abcdef0123456789", "size": 84203386470, "description": "<p>Size: 78.42 GB</p><img src=\"x.jpg\"/>", "link": "https://pt.example.com/details.php?id=1", "pubdate": "2026-09-26T13:14:03+00:00", "nickname": "豆瓣用户A" }, { "title": "Plain & Escaped <Title> 中文", "enclosure": "https://pt.example.com/download.php?id=2", "size": 1024, "description": "desc & more", "link": "https://pt.example.com/details.php?id=2&hit=1", "pubdate": "2026-09-26T13:14:03+00:00" } ] } }, { "id": "hw-rss-dtd", "input": { "file": "inputs/rss/hw-rss-dtd.xml", "sha256": "b45ee3007c1d8eff9ff1e1f0e262d859826e4dcfaec3ea3a7130508bd1e82c17" }, "mp": { "status": "ok", "items": [] }, "mp_rust": { "status": "ok", "items": [ { "title": "&brand; Title", "enclosure": "https://e.x/1", "size": 0, "description": "", "link": "https://e.x/1", "pubdate": "" } ] } }, { "id": "hw-rss-entities", "input": { "file": "inputs/rss/hw-rss-entities.xml", "sha256": "a8a0d91ca3f75dd6b97d5ad1d19f88319f581d3274aefa69d5a0ef8aa85d6898" }, "mp": { "status": "ok", "items": [ { "title": "Nbsp", "description": "", "link": "https://e.x/1", "enclosure": "https://e.x/1", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Normal.After.Bad", "description": "", "link": "https://e.x/2", "enclosure": "https://e.x/2", "size": 0, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Nbsp Title©2026", "enclosure": "https://e.x/1", "size": 0, "description": "", "link": "https://e.x/1", "pubdate": "" }, { "title": "Normal.After.Bad", "enclosure": "https://e.x/2", "size": 0, "description": "", "link": "https://e.x/2", "pubdate": "" } ] } }, { "id": "hw-rss-link-fallback", "input": { "file": "inputs/rss/hw-rss-link-fallback.xml", "sha256": "d46fae0bfc7e3248d368857c8973443a2b65c60a54a1b1069de7ed84c73e3864" }, "mp": { "status": "ok", "items": [ { "title": "Only.Link.Item", "description": "", "link": "https://pt.example.com/download.php?id=10", "enclosure": "https://pt.example.com/download.php?id=10", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Enclosure.Only", "description": "", "link": "", "enclosure": "magnet:?xt=urn:btih:0123456789abcdef0123456789abcdef01234567&dn=x", "size": 0, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Only.Link.Item", "enclosure": "https://pt.example.com/download.php?id=10", "size": 0, "description": "", "link": "https://pt.example.com/download.php?id=10", "pubdate": "" }, { "title": "Enclosure.Only", "enclosure": "magnet:?xt=urn:btih:0123456789abcdef0123456789abcdef01234567&dn=x", "size": 0, "description": "", "link": "", "pubdate": "" } ] } }, { "id": "hw-rss-nested", "input": { "file": "inputs/rss/hw-rss-nested.xml", "sha256": "41559a6d1dfd2ccbf1ecda6bbb10dfc5518aea2fb56ed2c59052d4782c6766cf" }, "mp": { "status": "ok", "items": [ { "title": "Source.Title.First", "description": "", "link": "https://e.x/1", "enclosure": "https://e.x/1", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Two.Enclosures", "description": "", "link": "", "enclosure": "https://e.x/a.torrent", "size": 100, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Source.Title.First", "enclosure": "https://e.x/1", "size": 0, "description": "", "link": "https://e.x/1", "pubdate": "" }, { "title": "Two.Enclosures", "enclosure": "https://e.x/a.torrent", "size": 100, "description": "", "link": "", "pubdate": "" } ] } }, { "id": "hw-rss-nyaa", "input": { "file": "inputs/rss/hw-rss-nyaa.xml", "sha256": "0e7a8b8b0fa321c6e2b5242b3bba8bdb40a005640111b2efe064b737fbbf86df" }, "mp": { "status": "ok", "items": [ { "title": "[Group] Show - 01 [1080p].mkv", "description": "<a href=\"https://nyaa.example/view/1\">#1</a> | 1.2 GiB", "link": "https://nyaa.example/download/1.torrent", "enclosure": "https://nyaa.example/download/1.torrent", "size": 0, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 13:14:03 -0000", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "[Group] Show - 01 [1080p].mkv", "enclosure": "https://nyaa.example/download/1.torrent", "size": 0, "description": "<a href=\"https://nyaa.example/view/1\">#1</a> | 1.2 GiB", "link": "https://nyaa.example/download/1.torrent", "pubdate": "2026-09-26T13:14:03+00:00" } ] } }, { "id": "hw-rss-pubdate", "input": { "file": "inputs/rss/hw-rss-pubdate.xml", "sha256": "7ce9c000674a73e96ec5408260e4b6292bfecf7578b242706d3d62c7ccd48fb0" }, "mp": { "status": "ok", "items": [ { "title": "rfc822-gmt", "description": "", "link": "https://e.x/1", "enclosure": "https://e.x/1", "size": 0, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 13:14:03 GMT", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "rfc822-offset", "description": "", "link": "https://e.x/2", "enclosure": "https://e.x/2", "size": 0, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 21:14:03 +0800", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "rfc822-no-seconds", "description": "", "link": "https://e.x/3", "enclosure": "https://e.x/3", "size": 0, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 21:14 +0800", "wall": "2026-09-26T21:14:00", "utc": "2026-09-26T13:14:00.000Z" } }, { "title": "rfc822-cst", "description": "", "link": "https://e.x/4", "enclosure": "https://e.x/4", "size": 0, "pubdate": { "kind": "naive", "text": "Sat, 26 Sep 2026 21:14:03 CST", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T21:14:03.000Z" } }, { "title": "iso-z", "description": "", "link": "https://e.x/5", "enclosure": "https://e.x/5", "size": 0, "pubdate": { "kind": "aware", "text": "2026-09-26T13:14:03Z", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "iso-offset", "description": "", "link": "https://e.x/6", "enclosure": "https://e.x/6", "size": 0, "pubdate": { "kind": "aware", "text": "2026-09-26T21:14:03+08:00", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "naive-space", "description": "", "link": "https://e.x/7", "enclosure": "https://e.x/7", "size": 0, "pubdate": { "kind": "naive", "text": "2026-09-26 21:14:03", "wall": "2026-09-26T21:14:03", "utc": "2026-09-26T21:14:03.000Z" } }, { "title": "date-only", "description": "", "link": "https://e.x/8", "enclosure": "https://e.x/8", "size": 0, "pubdate": { "kind": "naive", "text": "2026-09-26", "wall": "2026-09-26T00:00:00", "utc": "2026-09-26T00:00:00.000Z" } }, { "title": "chinese", "description": "", "link": "https://e.x/9", "enclosure": "https://e.x/9", "size": 0, "pubdate": { "kind": "unparsed", "text": "2026年09月26日 21:14:03" } }, { "title": "garbage", "description": "", "link": "https://e.x/10", "enclosure": "https://e.x/10", "size": 0, "pubdate": { "kind": "unparsed", "text": "3小时前" } }, { "title": "no-weekday", "description": "", "link": "https://e.x/11", "enclosure": "https://e.x/11", "size": 0, "pubdate": { "kind": "aware", "text": "26 Sep 2026 13:14:03 +0000", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "wrong-weekday", "description": "", "link": "https://e.x/12", "enclosure": "https://e.x/12", "size": 0, "pubdate": { "kind": "aware", "text": "Mon, 26 Sep 2026 13:14:03 GMT", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "epoch-like", "description": "", "link": "https://e.x/13", "enclosure": "https://e.x/13", "size": 0, "pubdate": { "kind": "unparsed", "text": "1790428443" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "rfc822-gmt", "enclosure": "https://e.x/1", "size": 0, "description": "", "link": "https://e.x/1", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "rfc822-offset", "enclosure": "https://e.x/2", "size": 0, "description": "", "link": "https://e.x/2", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "rfc822-no-seconds", "enclosure": "https://e.x/3", "size": 0, "description": "", "link": "https://e.x/3", "pubdate": "2026-09-26T13:14:00+00:00" }, { "title": "rfc822-cst", "enclosure": "https://e.x/4", "size": 0, "description": "", "link": "https://e.x/4", "pubdate": "2026-09-27T03:14:03+00:00" }, { "title": "iso-z", "enclosure": "https://e.x/5", "size": 0, "description": "", "link": "https://e.x/5", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "iso-offset", "enclosure": "https://e.x/6", "size": 0, "description": "", "link": "https://e.x/6", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "naive-space", "enclosure": "https://e.x/7", "size": 0, "description": "", "link": "https://e.x/7", "pubdate": "2026-09-26T21:14:03+00:00" }, { "title": "date-only", "enclosure": "https://e.x/8", "size": 0, "description": "", "link": "https://e.x/8", "pubdate": "2026-09-26T00:00:00+00:00" }, { "title": "chinese", "enclosure": "https://e.x/9", "size": 0, "description": "", "link": "https://e.x/9", "pubdate": "" }, { "title": "garbage", "enclosure": "https://e.x/10", "size": 0, "description": "", "link": "https://e.x/10", "pubdate": "" }, { "title": "no-weekday", "enclosure": "https://e.x/11", "size": 0, "description": "", "link": "https://e.x/11", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "wrong-weekday", "enclosure": "https://e.x/12", "size": 0, "description": "", "link": "https://e.x/12", "pubdate": "" }, { "title": "epoch-like", "enclosure": "https://e.x/13", "size": 0, "description": "", "link": "https://e.x/13", "pubdate": "" } ] } }, { "id": "hw-rss-size", "input": { "file": "inputs/rss/hw-rss-size.xml", "sha256": "da6e7e28c5a7731d56b56c326fc9809309a5ccdc64a816f013dc10c4cb764898" }, "mp": { "status": "ok", "items": [ { "title": "Size.In.Description", "description": "[Size: 1.50 GB] [Seeders: 12]", "link": "https://pt.example.com/d?id=20", "enclosure": "https://pt.example.com/d?id=20", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Length.NonDigit", "description": "", "link": "", "enclosure": "https://pt.example.com/dl?id=21", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Length.Empty", "description": "", "link": "", "enclosure": "https://pt.example.com/dl?id=22", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Length.Missing", "description": "", "link": "", "enclosure": "https://pt.example.com/dl?id=23", "size": 0, "pubdate": { "kind": "absent" } }, { "title": "Length.Big", "description": "", "link": "", "enclosure": "https://pt.example.com/dl?id=24", "size": 2199023255552, "pubdate": { "kind": "absent" } }, { "title": "Length.Negative", "description": "", "link": "", "enclosure": "https://pt.example.com/dl?id=25", "size": 0, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Size.In.Description", "enclosure": "https://pt.example.com/d?id=20", "size": 0, "description": "[Size: 1.50 GB] [Seeders: 12]", "link": "https://pt.example.com/d?id=20", "pubdate": "" }, { "title": "Length.NonDigit", "enclosure": "https://pt.example.com/dl?id=21", "size": 0, "description": "", "link": "", "pubdate": "" }, { "title": "Length.Empty", "enclosure": "https://pt.example.com/dl?id=22", "size": 0, "description": "", "link": "", "pubdate": "" }, { "title": "Length.Missing", "enclosure": "https://pt.example.com/dl?id=23", "size": 0, "description": "", "link": "", "pubdate": "" }, { "title": "Length.Big", "enclosure": "https://pt.example.com/dl?id=24", "size": 2199023255552, "description": "", "link": "", "pubdate": "" }, { "title": "Length.Negative", "enclosure": "https://pt.example.com/dl?id=25", "size": -1, "description": "", "link": "", "pubdate": "" } ] } }, { "id": "hw-rss-whitespace", "input": { "file": "inputs/rss/hw-rss-whitespace.xml", "sha256": "16a5c3be9b772d946d60714105d36251d0e960b27c44255cef1d020dac3c5de9" }, "mp": { "status": "ok", "items": [ { "title": "\n Spaced.Title.2026.1080p.WEB-DL\n ", "description": "\n line one\n line two\n ", "link": "\n https://pt.example.com/details.php?id=3\n ", "enclosure": " https://pt.example.com/download.php?id=3 ", "size": 0, "pubdate": { "kind": "aware", "text": "\n Sat, 26 Sep 2026 13:14:03 GMT\n ", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Spaced.Title.2026.1080p.WEB-DL", "enclosure": "https://pt.example.com/download.php?id=3", "size": 2048, "description": "line one\n line two", "link": "https://pt.example.com/details.php?id=3", "pubdate": "2026-09-26T13:14:03+00:00" } ] } }, { "id": "tk-atom-basic", "input": { "file": "inputs/rss/tk-atom-basic.xml", "sha256": "6546bb85daeda86320216bcdd447461ce294e143950c98d800aa792855197cb9" }, "mp": { "status": "ok", "items": [] }, "mp_rust": { "status": "ok", "items": [ { "title": "Dune.Part.Two.2024.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.Atmos.7.1-FraMeSToR", "enclosure": "https://audiences.me/details.php?id=812345", "size": 0, "description": "沙丘2 / 沙丘:第二部 | <b>杜比视界</b> 国英双语 中字", "link": "https://audiences.me/details.php?id=812345", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "Keep.Running.S12E01.20240426.2160p.WEB-DL.H265.AAC-LelveTV & Friends", "enclosure": "https://audiences.me/details.php?id=812346", "size": 0, "description": "", "link": "https://audiences.me/details.php?id=812346", "pubdate": "2026-09-26T12:00:00+00:00" }, { "title": "The.Bear.S03.2160p.DSNP.WEB-DL.DDP5.1.Atmos.DV.H.265-FLUX", "enclosure": "https://audiences.me/details.php?id=812347", "size": 0, "description": "", "link": "https://audiences.me/details.php?id=812347", "pubdate": "" } ] } }, { "id": "tk-rss-basic", "input": { "file": "inputs/rss/tk-rss-basic.xml", "sha256": "89de110d3f33af374eef4e0b7a3c3d1221c44ebb02f5a50f48c9ca143158a8af" }, "mp": { "status": "ok", "items": [ { "title": "Dune.Part.Two.2024.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.Atmos.7.1-FraMeSToR", "description": "沙丘2 / 沙丘:第二部 | <b>杜比视界</b> 国英双语 中字", "link": "https://audiences.me/details.php?id=812345", "enclosure": "https://audiences.me/download.php?id=812345&passkey=0123456789abcdef", "size": 84203386470, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 13:14:03 GMT", "wall": "2026-09-26T13:14:03", "utc": "2026-09-26T13:14:03.000Z" } }, { "title": "Keep.Running.S12E01.20240426.2160p.WEB-DL.H265.AAC-LelveTV & Friends", "description": "", "link": "https://audiences.me/details.php?id=812346", "enclosure": "https://audiences.me/download.php?id=812346", "size": 5497558138, "pubdate": { "kind": "aware", "text": "Sat, 26 Sep 2026 12:00:00 GMT", "wall": "2026-09-26T12:00:00", "utc": "2026-09-26T12:00:00.000Z" } }, { "title": "The.Bear.S03.2160p.DSNP.WEB-DL.DDP5.1.Atmos.DV.H.265-FLUX", "description": "", "link": "https://audiences.me/details.php?id=812347", "enclosure": "https://audiences.me/details.php?id=812347", "size": 0, "pubdate": { "kind": "absent" } } ] }, "mp_rust": { "status": "ok", "items": [ { "title": "Dune.Part.Two.2024.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.Atmos.7.1-FraMeSToR", "enclosure": "https://audiences.me/download.php?id=812345&passkey=0123456789abcdef", "size": 84203386470, "description": "沙丘2 / 沙丘:第二部 | <b>杜比视界</b> 国英双语 中字", "link": "https://audiences.me/details.php?id=812345", "pubdate": "2026-09-26T13:14:03+00:00" }, { "title": "Keep.Running.S12E01.20240426.2160p.WEB-DL.H265.AAC-LelveTV & Friends", "enclosure": "https://audiences.me/download.php?id=812346", "size": 5497558138, "description": "", "link": "https://audiences.me/details.php?id=812346", "pubdate": "2026-09-26T12:00:00+00:00" }, { "title": "The.Bear.S03.2160p.DSNP.WEB-DL.DDP5.1.Atmos.DV.H.265-FLUX", "enclosure": "https://audiences.me/details.php?id=812347", "size": 0, "description": "", "link": "https://audiences.me/details.php?id=812347", "pubdate": "" } ] } } ], "deviations": { "hw-expired.status": { "kind": "mp_bug", "note": "站点返回纯文本过期提示时,MP _parse_impl 先判\"不是 < 开头\"直接 return False,_rss_expired_msg 只在异常分支比较、实际不可达,调用方 TorrentsChain.rss 永远走不到 None→__renew_rss_url 续期;本项目 parseFeed 先识别过期文案抛 FeedError('expired')。" }, "hw-rdf.count": { "kind": "mp_bug", "note": "RSS 1.0(RDF)默认命名空间 http://purl.org/rss/1.0/,MP Python 回退的 xpath './/item' 不带命名空间 → 0 条(Rust 快路径能解析出 1 条);本项目 removeNSPrefix 后解析出 1 条。" }, "hw-rss-broken.count": { "kind": "intentional", "note": "缺少 </rss> 且含未闭合 <title>:MP lxml recover=True 容错解析出 2 条(第二条标题 'Unclosed');本项目 fast-xml-parser 非容错,只得到 1 条(未抛错)。容错恢复会产出错误字段,不跟随。" }, "hw-rss-cdata#0.enclosure": { "kind": "intentional", "note": "本项目 enclosureUrl 为脱敏形态(passkey=[REDACTED]),真实值由 unredactUrl 在内存还原;MP 原样返回含 passkey 的 URL(SA5/任务书:含 passkey 的 URL 不得入日志/库)。" }, "hw-rss-dtd.status": { "kind": "intentional", "note": "含内部 DTD/ENTITY 声明:MP resolve_entities=False,标题只剩实体引用前文本为空 → 跳过,返回 [](Rust 快路径返回 1 条);本项目预检直接拒绝整份 Feed(FeedError forbidden_dtd,防 XXE/billion laughs)。" }, "hw-rss-entities#0.title": { "kind": "intentional", "note": "未声明的 HTML 实体  /©:MP lxml recover 在未知实体处截断,标题变成 'Nbsp';本项目不展开非 XML 预定义实体,原样保留 ' '/'©' 字面量。两边都不是理想结果,本项目不丢信息;可考虑补 HTML 命名实体表。" }, "hw-rss-nested#0.title": { "kind": "mp_bug", "note": "MP 用 './/title'(后代任意层)取第一个,<item> 内 <source><title> 在前时取到来源标题;本项目只取 item 直接子元素 title。" }, "hw-rss-pubdate#3.pubdate": { "kind": "intentional", "note": "'... 21:14:03 CST':dateutil 不认识 CST(UnknownTimezoneWarning)返回 naive → 按 MP 宿主本地时区解释;JS Date.parse 按美国中部时间(-06:00)解析。中国站点写 CST 通常指 +08:00,两边都可能错,建议在 RSS 源配置时区后统一处理。" }, "hw-rss-pubdate#7.pubdate": { "kind": "intentional", "note": "纯日期 '2026-09-26':dateutil → naive 本地午夜;JS Date.parse 按 ISO 规则视为 UTC 午夜。仅宿主时区非 UTC 时出现(condition=local_tz_not_utc)。", "condition": "local_tz_not_utc" }, "hw-rss-whitespace#0.description": { "kind": "intentional", "note": "同 hw-rss-whitespace#0.title(首尾空白)。" }, "hw-rss-whitespace#0.enclosure": { "kind": "intentional", "note": "enclosure@url 两端空格:MP 原样,本项目属性值同样 trim。" }, "hw-rss-whitespace#0.link": { "kind": "intentional", "note": "同 hw-rss-whitespace#0.title;MP 的 link 带换行,直接用作详情 URL 会失败。" }, "hw-rss-whitespace#0.size": { "kind": "intentional", "note": "enclosure@length=' 2048 ':MP str.isdigit() 不通过 → 0;本项目属性 trim 后为 2048。" }, "hw-rss-whitespace#0.title": { "kind": "intentional", "note": "MP 取 lxml .text 不 strip,保留换行与缩进;本项目 fast-xml-parser trimValues=true 去首尾空白(README 尚未登记,建议补)。" }, "tk-atom-basic.count": { "kind": "mp_bug", "note": "标准 Atom(xmlns=http://www.w3.org/2005/Atom)下 MP Python 回退 './/entry' 匹配不到命名空间元素 → 0 条(Rust 快路径 3 条);本项目 3 条。无命名空间的 Atom 两边一致(见 hw-atom-nons)。" }, "tk-rss-basic#0.enclosure": { "kind": "intentional", "note": "同 hw-rss-cdata#0.enclosure:passkey 脱敏。" } } }