From 6ae5daf45578a24d405bdee557ef2d52cd010f99 Mon Sep 17 00:00:00 2001 From: W0rmsy Date: Tue, 7 Jul 2020 15:32:33 +0200 Subject: [PATCH] Fix ysearch command --- util.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/util.py b/util.py index 647ec4d..8fb9d48 100644 --- a/util.py +++ b/util.py @@ -337,12 +337,23 @@ def youtube_search(query): global log try: + results = None r = requests.get("https://www.youtube.com/results", params={'search_query': query}, timeout=5) - results = re.findall(r"watch\?v=(.*?)\".*?title=\"(.*?)\".*?" - "(?:user|channel).*?>(.*?)<", r.text) # (id, title, uploader) + results = re.findall(r"(watch\?v=(?P[^\"\r\n]*)\".*?title=\"(?P[^\r\n\"]*)\".*?(?:user|channel)[^>]*" + r">(?P<uploader>[^<\"\n\r]*)<)|(\"videoId\":\"(?P<videoid2>[^\"]*)\").*?\"title\":{\"runs\":\[{" + r"\"text\":\"(?P<title2>[^\"]*)\".*?\"ownerText\":{\"runs\":\[{\"text\":\"(?P<uploader2>[^\"]*)" + r"\"", r.text) # (catch1, id1, title1, uploader1, catch2, id2, title2, uploader2,) if len(results) > 0: - return results + finalResults = None + finalResults = [] + if results[0][0] != "": + for entry in results: + finalResults.append([entry[1], entry[2], entry[3]]) + else: + for entry in results: + finalResults.append([entry[5], entry[6], entry[7]]) + return finalResults except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError, requests.exceptions.Timeout): error_traceback = traceback.format_exc().split("During")[0]