Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
import base64 # This is a built-in module, no need to install | |
def get_repo_contents(repo_url): | |
# Extract owner and repo name from the URL | |
parts = repo_url.split('/') | |
owner = parts[-2] | |
repo = parts[-1] | |
# GitHub API endpoint | |
api_url = f"https://api.github.com/repos/{owner}/{repo}/contents" | |
# Send GET request to GitHub API | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
return response.json() | |
else: | |
st.error(f"Error fetching repository contents: {response.status_code}") | |
return None | |
def get_file_content(file_url): | |
response = requests.get(file_url) | |
if response.status_code == 200: | |
content = base64.b64decode(response.json()['content']).decode('utf-8') | |
return content | |
else: | |
st.error(f"Error fetching file content: {response.status_code}") | |
return None | |
def search_in_content(content, query): | |
lines = content.split('\n') | |
results = [] | |
for i, line in enumerate(lines): | |
if query.lower() in line.lower(): | |
results.append(f"Line {i+1}: {line.strip()}") | |
return results | |
st.title("GitHub Repository Explorer") | |
repo_url = st.text_input("Enter GitHub Repository URL:") | |
if repo_url: | |
contents = get_repo_contents(repo_url) | |
if contents: | |
st.write("Files in the repository:") | |
for item in contents: | |
if item['type'] == 'file': | |
st.write(f"- {item['name']}") | |
selected_file = st.selectbox("Select a file to view:", [item['name'] for item in contents if item['type'] == ⬤ |