fix(api): Restructure archive parsing to iterate through archive items

This commit is contained in:
Aron BenDaniel
2026-01-06 13:20:18 -05:00
committed by Dhanush R
parent 6c1a145577
commit 68eb4a22b7
+19 -5
View File
@@ -174,12 +174,26 @@ async def handle_download(
story_zip = await fetch_story_content_zip(story_id, cookies)
archive = ZipFile(story_zip, "r")
part_trees: list[BeautifulSoup] = [
clean_tree(
part["title"], part["id"], archive.read(str(part["id"])).decode("utf-8")
# Transform part metadata into an easily-indexable dictionary
part_id_title_dictionary = {
str(part["id"]): part["title"] for part in metadata["parts"]
}
part_trees: list[BeautifulSoup] = []
for id in archive.namelist():
if (
id not in part_id_title_dictionary
): # If a part is deleted and the old story_zip is cached, this is needed to avoid a KeyError exception
continue
part_trees.append(
clean_tree(
part_id_title_dictionary[id],
id,
archive.read(id).decode("utf-8"),
)
)
for part in metadata["parts"]
]
images = (
[await fetch_tree_images(tree) for tree in part_trees]