|
|
|
|
|
import gradio as gr |
|
from bs4 import BeautifulSoup |
|
import requests |
|
from transformers import pipeline |
|
from sentence_transformers import SentenceTransformer |
|
import faiss |
|
import numpy as np |
|
import pandas as pd |
|
|
|
|
|
summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") |
|
embedding_model = SentenceTransformer('all-MiniLM-L6-v2') |
|
faiss_index = None |
|
bookmarks = [] |
|
fetch_cache = {} |
|
|
|
def parse_bookmarks(file_content): |
|
|
|
|
|
def fetch_url_info(bookmark): |
|
|
|
|
|
def generate_summary(bookmark): |
|
|
|
|
|
def vectorize_and_index(bookmarks): |
|
|
|
|
|
def display_bookmarks(): |
|
data = [] |
|
for i, bookmark in enumerate(bookmarks): |
|
status = "Dead Link" if bookmark.get('dead_link') else "Active" |
|
css_class = "dead-link" if bookmark.get('dead_link') else "" |
|
data.append({ |
|
'Index': i, |
|
'Title': bookmark['title'], |
|
'URL': bookmark['url'], |
|
'Status': status, |
|
'ETag': bookmark.get('etag', 'N/A'), |
|
'Summary': bookmark.get('summary', ''), |
|
'css_class': css_class |
|
}) |
|
df = pd.DataFrame(data) |
|
return df |
|
|
|
def process_uploaded_file(file): |
|
|
|
|
|
def chatbot_response(user_query): |
|
|
|
|
|
def edit_bookmark(bookmark_idx, new_title, new_url): |
|
|
|
message, updated_df = "Bookmark updated successfully.", display_bookmarks() |
|
return message, updated_df |
|
|
|
def delete_bookmark(bookmark_idx): |
|
|
|
message, updated_df = "Bookmark deleted successfully.", display_bookmarks() |
|
return message, updated_df |
|
|
|
def build_app(): |
|
with gr.Blocks(css="app.css") as demo: |
|
gr.Markdown("# Bookmark Manager App") |
|
|
|
with gr.Tab("Upload and Process Bookmarks"): |
|
upload = gr.File(label="Upload Bookmarks HTML File", type='binary') |
|
process_button = gr.Button("Process Bookmarks") |
|
output_text = gr.Textbox(label="Output") |
|
bookmark_table = gr.Dataframe( |
|
label="Bookmarks", |
|
headers=["Index", "Title", "URL", "Status", "ETag", "Summary"], |
|
datatype=["number", "str", "str", "str", "str", "str"], |
|
interactive=False |
|
) |
|
|
|
process_button.click( |
|
process_uploaded_file, |
|
inputs=upload, |
|
outputs=[output_text, bookmark_table] |
|
) |
|
|
|
with gr.Tab("Chat with Bookmarks"): |
|
|
|
|
|
with gr.Tab("Manage Bookmarks"): |
|
manage_output = gr.Textbox(label="Manage Output") |
|
bookmark_table_manage = gr.Dataframe( |
|
label="Bookmarks", |
|
headers=["Index", "Title", "URL", "Status", "ETag", "Summary"], |
|
datatype=["number", "str", "str", "str", "str", "str"], |
|
interactive=False |
|
) |
|
refresh_button = gr.Button("Refresh Bookmark List") |
|
|
|
with gr.Row(): |
|
index_input = gr.Number(label="Bookmark Index") |
|
new_title_input = gr.Textbox(label="New Title") |
|
new_url_input = gr.Textbox(label="New URL") |
|
|
|
edit_button = gr.Button("Edit Bookmark") |
|
delete_button = gr.Button("Delete Bookmark") |
|
|
|
refresh_button.click( |
|
display_bookmarks, |
|
inputs=None, |
|
outputs=bookmark_table_manage |
|
) |
|
|
|
edit_button.click( |
|
edit_bookmark, |
|
inputs=[index_input, new_title_input, new_url_input], |
|
outputs=[manage_output, bookmark_table_manage] |
|
) |
|
|
|
delete_button.click( |
|
delete_bookmark, |
|
inputs=index_input, |
|
outputs=[manage_output, bookmark_table_manage] |
|
) |
|
|
|
demo.launch() |
|
|
|
if __name__ == "__main__": |
|
build_app() |
|
|