From 3106861a4254f4464a55bc8a93d33d078d8e5b5e Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Fri, 17 Feb 2023 23:32:02 -0800 Subject: [PATCH] [BACKEND] Additional filtering on root parent search (#445) * [BACKEND] Additional filtering on root parent search * update failing test --- src/ytdl_sub/entries/entry_parent.py | 15 ++++++++++----- .../chapters/test_chapters_from_comments.json | 6 +++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ytdl_sub/entries/entry_parent.py b/src/ytdl_sub/entries/entry_parent.py index 97ba4365..24e184af 100644 --- a/src/ytdl_sub/entries/entry_parent.py +++ b/src/ytdl_sub/entries/entry_parent.py @@ -215,15 +215,20 @@ class EntryParent(BaseEntry): Sometimes the root-level parent is disconnected via playlist_ids Find it if it exists. """ - def _url_matches(webpage_url: str): - return webpage_url in url or url in webpage_url + def _url_matches(parent: "EntryParent"): + return parent.webpage_url in url or url in parent.webpage_url + + def _uid_is_uploader_id(parent: "EntryParent"): + return parent.uid == parent.uploader_id top_level_parents = [ - parent - for parent in parents - if parent.num_children() == 0 and _url_matches(parent.webpage_url) + parent for parent in parents if parent.num_children() == 0 and _url_matches(parent) ] + # If more than 1 parent exists, assume the uploader_id is the root parent + if len(top_level_parents) > 1: + top_level_parents = [parent for parent in parents if _uid_is_uploader_id(parent)] + match len(top_level_parents): case 0: return None diff --git a/tests/resources/expected_downloads_summaries/plugins/chapters/test_chapters_from_comments.json b/tests/resources/expected_downloads_summaries/plugins/chapters/test_chapters_from_comments.json index 67e3fd84..028c8716 100644 --- a/tests/resources/expected_downloads_summaries/plugins/chapters/test_chapters_from_comments.json +++ b/tests/resources/expected_downloads_summaries/plugins/chapters/test_chapters_from_comments.json @@ -1,7 +1,7 @@ { ".ytdl-sub-chapters_from_comments-download-archive.json": "122723ce8d257eebb05178daa26141f6", "JMC/JMC - Move 78 - Automated Improvisation [Full Album]-thumb.jpg": "c12e6a6f242680d1096a1a99d74a62c6", - "JMC/JMC - Move 78 - Automated Improvisation [Full Album].info.json": "ee8437e52186219ff510214138f00e28", - "JMC/JMC - Move 78 - Automated Improvisation [Full Album].mp4": "8b8a9a731a19bc37feb091559f97ebbc", + "JMC/JMC - Move 78 - Automated Improvisation [Full Album].info.json": "6654b2b5bbf4e7dfb51f2c5e3138df63", + "JMC/JMC - Move 78 - Automated Improvisation [Full Album].mp4": "5bd2291db1ee7848ff5d8ed0fdb98782", "JMC/JMC - Move 78 - Automated Improvisation [Full Album].nfo": "7a65b184d24c68fc0ec5380432250f5b" -} +} \ No newline at end of file