From 009d6ceaa3a9e915b4e6517c8c04732d10d99cc2 Mon Sep 17 00:00:00 2001 From: oddluck <39967334+oddluck@users.noreply.github.com> Date: Tue, 25 Feb 2020 04:48:29 +0000 Subject: [PATCH] YouTube/Lyrics/IMDb: add retries --- IMDb/plugin.py | 28 +++++++++++++++------------- Lyrics/plugin.py | 30 ++++++++++++++++-------------- YouTube/plugin.py | 31 +++++++++++++++---------------- 3 files changed, 46 insertions(+), 43 deletions(-) diff --git a/IMDb/plugin.py b/IMDb/plugin.py index 7af0bcd..2abcf8c 100644 --- a/IMDb/plugin.py +++ b/IMDb/plugin.py @@ -55,19 +55,21 @@ class IMDb(callbacks.Plugin): threaded = True def dosearch(self, query): - try: - searchurl = "https://www.google.com/search?&q={0} site:imdb.com/title/".format(query) - ua = UserAgent() - header = {'User-Agent':str(ua.random)} - data = requests.get(searchurl, headers=header) - soup = BeautifulSoup(data.text) - elements = soup.select('.r a') - url = elements[0]['href'] - url = urljoin(url, urlparse(url).path) - except Exception: - return - else: - return url + url = None + i = 0 + while i < 3 and not url: + try: + searchurl = "https://www.google.com/search?&q={0} site:imdb.com/title/".format(query) + ua = UserAgent() + header = {'User-Agent':str(ua.random)} + data = requests.get(searchurl, headers=header) + soup = BeautifulSoup(data.text) + elements = soup.select('.r a') + url = urljoin(elements[0]['href'], urlparse(url).path) + i += 1 + except Exception: + continue + return url def imdb(self, irc, msg, args, query): """ diff --git a/Lyrics/plugin.py b/Lyrics/plugin.py index cf77883..33c22cd 100644 --- a/Lyrics/plugin.py +++ b/Lyrics/plugin.py @@ -53,20 +53,22 @@ class Lyrics(callbacks.Plugin): threaded = True def dosearch(self, lyric): - try: - searchurl = "https://www.google.com/search?&q={0} site:lyrics.fandom.com/wiki/".format(lyric) - ua = UserAgent() - header = {'User-Agent':str(ua.random)} - data = requests.get(searchurl, headers=header) - soup = BeautifulSoup(data.text) - elements = soup.select('.r a') - url = elements[0]['href'] - urljoin(url, urlparse(url).path) - title = soup.find("h3").getText().replace(":", " - ").split('|')[0] - except Exception: - return - else: - return title, url + url = None + i = 0 + while i < 3 and not url: + try: + searchurl = "https://www.google.com/search?&q={0} site:lyrics.fandom.com/wiki/".format(lyric) + ua = UserAgent() + header = {'User-Agent':str(ua.random)} + data = requests.get(searchurl, headers=header) + soup = BeautifulSoup(data.text) + elements = soup.select('.r a') + title = soup.find("h3").getText().replace(":", " - ").split('|')[0] + url = urljoin(elements[0]['href'], urlparse(url).path) + i += 1 + except Exception: + continue + return title, url def getlyrics(self, url): try: diff --git a/YouTube/plugin.py b/YouTube/plugin.py index 5653b00..fd209ef 100644 --- a/YouTube/plugin.py +++ b/YouTube/plugin.py @@ -59,24 +59,23 @@ class YouTube(callbacks.Plugin): def dosearch(self, query): url = None - try: - searchurl = "https://www.google.com/search?&q={0} site:youtube.com".format(query) - ua = UserAgent() - header = {'User-Agent':str(ua.random)} - data = requests.get(searchurl, headers=header) - soup = BeautifulSoup(data.text) - elements = soup.select('.r a') - for i in range(len(elements)): - if 'watch?v=' in elements[i]['href']: - url = elements[i]['href'] - break - except Exception: + k = 0 + while k < 3 and not url: try: - self.dosearch(query) + searchurl = "https://www.google.com/search?&q={0} site:youtube.com".format(query) + ua = UserAgent() + header = {'User-Agent':str(ua.random)} + data = requests.get(searchurl, headers=header) + soup = BeautifulSoup(data.text) + elements = soup.select('.r a') + for i in range(len(elements)): + if 'watch?v=' in elements[i]['href']: + url = elements[i]['href'] + break + k += 1 except Exception: - return None - else: - return url + continue + return url def get_video_id_from_url(self, url): """