lyricsummarizer / app.py
citizendeeplearner's picture
Update app.py
29c2ae8
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 8 20:02:01 2022
@author: User
"""
import streamlit as st
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
from transformers import pipeline
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
chromeOptions.add_argument("--no-sandbox")
chromeOptions.add_argument("--disable-setuid-sandbox")
chromeOptions.add_argument("--remote-debugging-port=9222") # this
chromeOptions.add_argument("--disable-dev-shm-using")
chromeOptions.add_argument("--disable-extensions")
chromeOptions.add_argument("--disable-gpu")
chromeOptions.add_argument("start-maximized")
chromeOptions.add_argument("disable-infobars")
chromeOptions.add_argument(r"user-data-dir=.\cookies\\test")
driver = webdriver.Chrome(chrome_options=chromeOptions)
#driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
st.title('Music Lyrics Summarizer')
st.subheader('A Summary of the lyrics of your favourite English songs, prepared by AI')
def get_lyrics(inp):
lyrics_text=[]
strung_together=''.join(inp.split(' '))
initial="https://www.google.com/search?q="
str_=f"{initial}{strung_together}+lyrics&oq="
driver.get(str_)
src = driver.page_source
soup = BeautifulSoup(src, 'lxml')
lyrics_soup = soup.find_all('div', {'class': 'ujudUb'})
for span_tags in lyrics_soup:
span_content=soup.find_all('span', {'jsname': 'YS01Ge'})
for embedded_lyrics in span_content:
lyrics_text.append(embedded_lyrics.get_text())
return lyrics_text
inp=st.text_input(label='Insert song name and artist name:')
st.caption('Please wait while the AI tries to read the lyrics of your song from Google and understand it.')
lyrics=get_lyrics(inp)
transcript=''
for i in lyrics:
transcript+=i+'.'+' '
summarizer = pipeline("summarization", model="knkarthick/MEETING-SUMMARY-BART-LARGE-XSUM-SAMSUM-DIALOGSUM")
def summarize(lyrics):
try:
summed=summarizer(transcript[:len(transcript)],max_length=200,min_length=100)
except IndexError:
summed=summarizer(transcript[:3000],max_length=200,min_length=100)
return summed[0]['summary_text']
summary=summarize(transcript[:len(transcript)-10])
#print(summary)
st.caption("<-> You have a cool music taste. But what's cooler is my ability to understand music <->")
st.write(summary)
st.stop()