|
|
import requests |
|
|
from bs4 import BeautifulSoup |
|
|
import gradio as gr |
|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") |
|
|
|
|
|
|
|
|
def scrape_content(url): |
|
|
response = requests.get(url) |
|
|
soup = BeautifulSoup(response.content, 'html.parser') |
|
|
|
|
|
|
|
|
title = soup.find('title').get_text() |
|
|
paragraphs = soup.find_all('p') |
|
|
content = '\n'.join([para.get_text() for para in paragraphs]) |
|
|
|
|
|
return title, content |
|
|
|
|
|
|
|
|
def create_flashcards(content): |
|
|
|
|
|
prompt = os.getenv("FLASHCARD_PROMPT") |
|
|
|
|
|
headers = { |
|
|
"Authorization": f"Bearer {DEEPSEEK_API_KEY}", |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
|
|
|
data = { |
|
|
"model": "deepseek-chat", |
|
|
"messages": [ |
|
|
{"role": "system", "content": prompt}, |
|
|
{"role": "user", "content": content} |
|
|
], |
|
|
"max_tokens": 500, |
|
|
"temperature": 0.7 |
|
|
} |
|
|
|
|
|
response = requests.post( |
|
|
"https://api.deepseek.com/v1/chat/completions", |
|
|
headers=headers, |
|
|
json=data |
|
|
) |
|
|
|
|
|
response_json = response.json() |
|
|
flashcards = response_json["choices"][0]["message"]["content"].strip() |
|
|
return flashcards |
|
|
|
|
|
|
|
|
def process_url(url): |
|
|
if not url: |
|
|
return "No URL provided." |
|
|
|
|
|
title, content = scrape_content(url) |
|
|
flashcards = create_flashcards(content) |
|
|
|
|
|
|
|
|
file_path = "flashcards.txt" |
|
|
with open(file_path, "w") as file: |
|
|
file.write(f"Title: {title}\n\nFlashcards:\n{flashcards}") |
|
|
|
|
|
return flashcards, file_path |
|
|
|
|
|
|
|
|
def interface_fn(url): |
|
|
flashcards, file_path = process_url(url) |
|
|
return flashcards, file_path |
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=interface_fn, |
|
|
inputs=gr.Textbox(lines=2, placeholder="Enter URL here..."), |
|
|
outputs=["text", gr.File(label="Download Flashcards")], |
|
|
title="The Federal Flash Card Generator", |
|
|
description="An application that helps students prepare for competitive exams like the UPSC, SSC, CLAT, MBA, etc. Enter a News Site URL to generate flashcards for exam preparation. Option to download the response as a text file." |
|
|
) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
iface.launch(share=False) |