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):
"""