Accept qBittorrent hidden padding files
This commit is contained in:
@@ -91,12 +91,21 @@ def normalize_resource(
|
||||
observed_at: datetime | None = None,
|
||||
) -> NormalizedResource:
|
||||
metainfo = decode_metainfo(metainfo_bytes)
|
||||
if len(raw_files) != len(metainfo.files):
|
||||
# qBittorrent/libtorrent may omit torrent padding files from
|
||||
# /torrents/files while keeping them in the exported metainfo.
|
||||
visible_metainfo_files = tuple(
|
||||
item for item in metainfo.files if not item.padding
|
||||
)
|
||||
if len(raw_files) == len(metainfo.files):
|
||||
matched_metainfo_files = metainfo.files
|
||||
elif len(raw_files) == len(visible_metainfo_files):
|
||||
matched_metainfo_files = visible_metainfo_files
|
||||
else:
|
||||
raise ResourceError("qBittorrent and metainfo file counts differ")
|
||||
files = []
|
||||
canonical = True
|
||||
for expected_index, (raw, meta_file) in enumerate(
|
||||
zip(raw_files, metainfo.files, strict=True)
|
||||
zip(raw_files, matched_metainfo_files, strict=True)
|
||||
):
|
||||
index = _integer(raw.get("index"), "file index")
|
||||
if index != expected_index:
|
||||
|
||||
Reference in New Issue
Block a user