Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
# Function to fetch repository details from GitHub | |
def analyze_github_repo(repo_url): | |
# Extract the username and repo name from the GitHub URL | |
if "github.com" not in repo_url: | |
return "Please provide a valid GitHub repository URL." | |
parts = repo_url.split('/') | |
if len(parts) < 5: | |
return "URL should be in the format: https://github.com/username/repository" | |
user, repo = parts[3], parts[4] | |
# GitHub API endpoint to get repository details | |
api_url = f"https://api.github.com/repos/{user}/{repo}" | |
response = requests.get(api_url) | |
# Check if repository exists | |
if response.status_code == 404: | |
return "Repository not found." | |
# Parse the response | |
data = response.json() | |
# Extract relevant information | |
stars = data.get('stargazers_count', 'N/A') | |
forks = data.get('forks_count', 'N/A') | |
issues = data.get('open_issues_count', 'N/A') | |
contributors_url = data.get('contributors_url', None) | |
# Get number of contributors | |
contributors = "N/A" | |
if contributors_url: | |
contributors_data = requests.get(contributors_url).json() | |
contributors = len(contributors_data) | |
# Return the analysis result | |
result = ( | |
f"Repository: {repo_url}\n" | |
f"Stars: {stars}\n" | |
f"Forks: {forks}\n" | |
f"Open Issues: {issues}\n" | |
f"Contributors: {contributors}" | |
) | |
return result | |
# Gradio interface for the tool | |
iface = gr.Interface( | |
fn=analyze_github_repo, | |
inputs=gr.Textbox(label="Enter GitHub Repository URL", placeholder="https://github.com/username/repository"), | |
outputs=gr.Textbox(label="Repository Analysis", placeholder="Analysis will be displayed here..."), | |
title="GitHub Repository Analysis Tool", | |
description="Enter a GitHub repository URL to get basic analytics including stars, forks, issues, and contributors." | |
) | |
# Launch the app | |
iface.launch() | |