Untitled

 avatar
unknown
python
2 years ago
2.7 kB
18
Indexable
# import necessary libraries
from bs4 import BeautifulSoup
import requests
import re
import openai
from flask import Flask, render_template, request
from flaskwebgui import FlaskUI
import random

FAQ = Flask(__name__)
faqg=FlaskUI(FAQ)



@FAQ.route("/")
def start():
    generate_web_list()
    return render_template("start.html",list=website_list)

@FAQ.route("/",methods=["POST"])
def website_page():
    webpage=request.form.get("article")
    print(webpage)
    heading=heading_gen(webpage)
    qna=gen(webpage)
    return render_template("view.html",link=webpage,title=heading,list_qna=qna)


openai.api_key="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"

website_list=[]

def generate_web_list():
    #response in in jason format 
    response=requests.get("https://www.bajajfinservhealth.in/articles-sitemap-0.xml")
    main_doc=response.text
    web_details= BeautifulSoup(main_doc,'html.parser')
    #to get all the websites to website_list
    for link in web_details.find_all('loc'):
        website_list.append(link.text)
    print(len(website_list))

def heading_gen(url):
    html = requests.get(url)
    soup = BeautifulSoup(html.content, 'html.parser')
    heading = soup.find('h1').get_text()
    return heading

def gen(url):
    article_content = ""

    # url = "https://www.bajajfinservhealth.in/articles/safety-measures-for-employees"
    html = requests.get(url)
    soup = BeautifulSoup(html.content, 'html.parser')
    for i in range(5):
        chosen_p = random.choice(soup.select('p span'))
        article_content += chosen_p.get_text()
    return ques_ans(article_content)

def ques_ans(content):  #to generate questions for text
    
    prompt="list 3 short questions for the given text '"+ content +"'"
    response= openai.Completion.create(engine="text-davinci-001",prompt=prompt, max_tokens=100,temperature=0.1)

    #gets only the text from the output
    questions=response["choices"][0]["text"]
    ques_list=questions.split("\n")
    #to seperate the numbers
    print(ques_list)

    #remove numbering
    for i in range(2,5):
         ques_list[i]=ques_list[i].split(".")[1]

    list_of_qna = []
    # #answering the questions
    for i in range(2,5):
    
        prompt= "Answer in following question one line,"+ques_list[i]
        response= openai.Completion.create(engine="text-davinci-001",prompt=prompt, max_tokens=100)
        answer=response["choices"][0]["text"]

        list_of_qna.append(ques_list[i])
        list_of_qna.append(answer.strip())

    return list_of_qna

    
#to run app
faqg.run()
Editor is loading...