From 3a0a89f7379730c8b04a262e6b9104ea5e9990d8 Mon Sep 17 00:00:00 2001 From: sherl Date: Tue, 8 Jul 2025 14:51:04 +0200 Subject: [PATCH] fix: fixes server error when recommended videos are "LIVE" or "Upcoming" --- ythdd_inv_tl.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ythdd_inv_tl.py b/ythdd_inv_tl.py index 19643e8..afb9871 100644 --- a/ythdd_inv_tl.py +++ b/ythdd_inv_tl.py @@ -73,6 +73,14 @@ def epochToDate(epoch): def dateToEpoch(date: str): return datetime.datetime.fromisoformat(date).timestamp() +def doesContainNumber(string: str, numeric_system: int = 10) -> bool: + try: + number = int(string, numeric_system) + return True + except ValueError: + return False + raise BaseException("doesContainNumber(): Unknown error while determining if a string contains a number") + def trending(): return send(200, [{}]) @@ -445,8 +453,11 @@ def videos(data): related_video['lengthSeconds'] = 0 time_lookup_list = [1, 60, 3_600, 86_400] time_list = safeTraverse(y, ['contentImage', 'thumbnailViewModel', 'overlays', 0, 'thumbnailOverlayBadgeViewModel', 'thumbnailBadges', 0, 'thumbnailBadgeViewModel', 'text'], default="0:0").split(":") - for z in range(len(time_list)): - related_video['lengthSeconds'] += time_lookup_list[z] * int(time_list[len(time_list) - 1 - z]) + if False in map(doesContainNumber, time_list): # works around ['LIVE'] for livestreams or ['Upcoming'] for scheduled videos + pass + else: + for z in range(len(time_list)): + related_video['lengthSeconds'] += time_lookup_list[z] * int(time_list[len(time_list) - 1 - z]) related_views_text = safeTraverse(lmvm, ['metadata', 'contentMetadataViewModel', 'metadataRows', 1, 'metadataParts', 0, 'text', 'content'], default="0").split(" ")[0] related_video['viewCountText'] = safeTraverse(lmvm, ['metadata', 'contentMetadataViewModel', 'metadataRows', 1, 'metadataParts', 0, 'text', 'content'], default="0").split(" ")[0] related_views = 0