diff --git a/tests/mixins/test_playlists.py b/tests/mixins/test_playlists.py index b7ed2dc..20dc627 100644 --- a/tests/mixins/test_playlists.py +++ b/tests/mixins/test_playlists.py @@ -49,6 +49,7 @@ def test_get_playlist_2024(self, yt, test_file, owned): ("PLj4BSJLnVpNyIjbCWXWNAmybc97FXLlTk", 200, 0), # no related tracks ("PL6bPxvf5dW5clc3y9wAoslzqUrmkZ5c-u", 1000, 10), # very large ("PLZ6Ih9wLHQ2Hm2d3Cb0iV48Z2hQjGRyNz", 300, 10), # runs in subtitle, not title + ("PL5ZNf-B8WWSZFIvpJWRjgt7iRqWT7_KF1", 10, 10), # track duration > 1k hours ], ) def test_get_playlist_foreign(self, yt_oauth, playlist_id, tracks_len, related_len): diff --git a/ytmusicapi/parsers/_utils.py b/ytmusicapi/parsers/_utils.py index 1131dd5..4df215b 100644 --- a/ytmusicapi/parsers/_utils.py +++ b/ytmusicapi/parsers/_utils.py @@ -67,7 +67,11 @@ def parse_duration(duration): # duration may be falsy or a single space: ' ' if not duration or not duration.strip(): return duration - mapped_increments = zip([1, 60, 3600], reversed(duration.split(":"))) + duration_split = duration.strip().split(":") + for d in duration_split: + if not d.isdigit(): # For e.g: "2,343" + return None + mapped_increments = zip([1, 60, 3600], reversed(duration_split)) seconds = sum(multiplier * int(time) for multiplier, time in mapped_increments) return seconds