From 905823b1fd22fb76e19fa9dc777d60d1d9a05954 Mon Sep 17 00:00:00 2001 From: Gordon Shumway <39967334+oddluck@users.noreply.github.com> Date: Thu, 5 Dec 2019 07:57:59 -0500 Subject: [PATCH] use google search --- Lyrics/plugin.py | 53 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/Lyrics/plugin.py b/Lyrics/plugin.py index 2d4935e..97a3cff 100644 --- a/Lyrics/plugin.py +++ b/Lyrics/plugin.py @@ -11,8 +11,11 @@ import supybot.plugins as plugins import supybot.ircutils as ircutils import supybot.callbacks as callbacks import supybot.ircmsgs as ircmsgs +from bs4 import BeautifulSoup +import requests import re import pylyrics3 +from fake_useragent import UserAgent try: from supybot.i18n import PluginInternationalization @@ -26,21 +29,49 @@ class Lyrics(callbacks.Plugin): """Retrieves song lyrics""" 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'] + url = re.split('https?://', url)[-1] + url = re.sub("&rct=.*", "", url) + url = "https://{0}".format(url) + title = soup.find("h3").getText() + except Exception: + return + else: + return title, url + + def getlyrics(self, url): + try: + lyrics = pylyrics3.get_lyrics_from_url(url) + lyrics = re.sub('(? - Get song lyrics from Lyrics Wiki. Format searches as artist, song name + Get song lyrics from Lyrics Wiki. Search powered by Google. """ - if ',' in lyric: - lyric = lyric.split(',', 1) + try: + title, url = self.dosearch(lyric) + except Exception: + irc.reply("No results found for {0}".format(lyric)) else: - irc.reply("Lyric searches must be formatted as artist, song name") - return - lyrics = pylyrics3.get_song_lyrics(lyric[0].strip(), lyric[1].strip()) - if lyrics and lyrics != 'None': - lyrics = re.sub('(?