bluenevus's picture
Update app.py
31e9e38 verified
raw
history blame
2.47 kB
import gradio as gr
from datetime import datetime, timedelta
import requests
from bs4 import BeautifulSoup
def get_subdirectories(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a')
subdirectories = [link['href'] for link in links if link['href'].startswith('/docs/gradio/')]
return subdirectories
def generate_release_notes(github_url, github_token, gemini_api_key, start_date, end_date):
# Convert start_date and end_date to datetime objects if they're not already
if isinstance(start_date, str):
start_date = datetime.fromisoformat(start_date).date()
elif isinstance(start_date, datetime):
start_date = start_date.date()
if isinstance(end_date, str):
end_date = datetime.fromisoformat(end_date).date()
elif isinstance(end_date, datetime):
end_date = end_date.date()
# Get subdirectories
base_url = "https://www.gradio.app"
subdirectories = get_subdirectories(base_url + "/docs/gradio/")
full_urls = [base_url + subdir for subdir in subdirectories]
# Your existing function implementation here
# ...
return f"Generated release notes for {github_url} from {start_date} to {end_date}\n\nSubdirectories:\n" + "\n".join(full_urls)
# Set default dates
default_end_date = datetime.now()
default_start_date = default_end_date - timedelta(days=7) # One week ago
# Create Gradio interface
iface = gr.Interface(
fn=generate_release_notes,
inputs=[
gr.Textbox(label="GitHub Repository URL (e.g., https://github.com/MicroHealthLLC/maiko-assistant.git)"),
gr.Textbox(label="GitHub Personal Access Token", type="password"),
gr.Textbox(label="Gemini API Key", type="password"),
gr.DateTime(
label="Start Date",
value=default_start_date.date(),
type="date",
interactive=True,
visible=True
),
gr.DateTime(
label="End Date",
value=default_end_date.date(),
type="date",
interactive=True,
visible=True
)
],
outputs=gr.Textbox(label="Generated Release Notes"),
title="Automated Release Notes Generator",
description="Generate release notes based on GitHub commits using Gemini AI. Select start and end dates to define the time range for commits."
)
# Launch the app with a public link
iface.launch(share=True)