ImageX-Clone-16 / app.py
clone3's picture
Update app.py
0ba984d
raw
history blame
1.85 kB
import tinydb
import gradio as gr
db = tinydb.TinyDB("books.json")
table = db.table("books")
def add_book(title, author):
# Create a dictionary to store the book information
book = {"title": title, "author": author}
# Insert the book into the table
table.insert(book)
# Return a confirmation message
return f"Added {title} by {author} to the database."
def get_books_by_title(title):
# Query the database to get books with the specified title
books = table.search(tinydb.where("title") == title)
# Format the books as a string for display
books_str = "\n".join([f"{book['title']} by {book['author']}" for book in books])
return books_str
def update_author_by_title(title, new_author):
# Fetch the existing author for the book
existing_author = table.search(tinydb.where("title") == title)[0].get("author")
# Update the author of the book with the specified title
table.update({"author": new_author}, tinydb.where("title") == title)
return f"Updated author for the book '{title}' from '{existing_author}' to '{new_author}'."
def process_data(option, title, author):
if option == "Insert":
return add_book(title, author)
elif option == "Fetch":
if title:
return get_books_by_title(title)
else:
return get_all_books()
elif option == "Update":
if title and author:
return update_author_by_title(title, author)
else:
return "Title and author are required for update."
else:
return "Invalid option"
demo = gr.Interface(
fn=process_data,
inputs=[
gr.Radio(["Insert", "Fetch", "Update"], label="Select Operation"),
gr.Textbox(label="Title"),
gr.Textbox(label="Author"),
],
outputs=gr.Textbox(label="Result")
)
demo.launch()