Spaces:
Build error
Build error
| import gradio as gr | |
| import requests | |
| import openai # We will use OpenAI's API to generate the descriptions | |
| # OpenAI API Key (You need to set your API key here) | |
| openai.api_key = "your-openai-api-key-here" | |
| # Function to generate AI-based description for each contributor | |
| def generate_contributor_description(contributor_name, contributions): | |
| prompt = f"Generate an in-depth analysis of the contribution of {contributor_name} to a GitHub repository, with {contributions} commits. Focus on the impact, type of contributions, and significance of their work." | |
| response = openai.Completion.create( | |
| engine="text-davinci-003", # Use the appropriate model for text generation | |
| prompt=prompt, | |
| max_tokens=150, | |
| temperature=0.7 | |
| ) | |
| return response.choices[0].text.strip() | |
| # Function to fetch repository details from GitHub and generate descriptions for contributors | |
| 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 and their contributions (commit count) | |
| contributors = [] | |
| if contributors_url: | |
| contributors_data = requests.get(contributors_url).json() | |
| for contributor in contributors_data: | |
| contributors.append({ | |
| 'login': contributor['login'], | |
| 'contributions': contributor['contributions'] | |
| }) | |
| # Prepare the text for repository details | |
| result = f"Repository: {repo_url}\nStars: {stars}\nForks: {forks}\nOpen Issues: {issues}\n\nContributors' Contributions:\n" | |
| # Add AI-generated descriptions for each contributor | |
| for contributor in contributors: | |
| contributor_name = contributor['login'] | |
| contributions = contributor['contributions'] | |
| description = generate_contributor_description(contributor_name, contributions) | |
| result += f"{contributor_name} with {contributions} contributions: {description}\n" | |
| 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"), | |
| title="GitHub Repository Analysis Tool", | |
| description="Enter a GitHub repository URL to get an in-depth analysis of contributors' contributions using AI, including stars, forks, issues, and a detailed description of each contributor's work." | |
| ) | |
| # Launch the app | |
| iface.launch() | |