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