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