GitHub-Tool / app.py
Not-Grim-Refer's picture
Update app.py
f1f576a
raw
history blame
2.4 kB
import streamlit as st
from github import Github
from github import UnknownObjectException
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
st.set_page_config(page_title="GitHub File Search", page_icon=":mag_right:")
access_token = "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"
def find_file(repo, path, filename):
contents = repo.get_contents(path)
for content in contents:
if content.type == "dir":
result = find_file(repo, content.path, filename)
if result:
return result
elif content.name == filename:
return content
return None
def get_repositories_with_file(filename):
g = Github(access_token)
repositories = g.search_repositories(query=f"filename:{filename}", sort="stars", order="desc")
repo_info = []
for repo in repositories:
try:
content = find_file(repo, "", filename)
if content:
repo_info.append({
"name": repo.name,
"description": repo.description,
"url": repo.html_url
})
except UnknownObjectException as e:
logger.warning(f"File '{filename}' not found in repository '{repo.full_name}'.")
st.warning(f"File '{filename}' not found in repository '{repo.full_name}'.")
return repo_info
def app():
st.title("GitHub File Search")
st.write("Enter a file name to search for on GitHub:")
filename = st.text_input("File name")
if filename:
repo_info = get_repositories_with_file(filename)
if len(repo_info) > 0:
st.success(f"Found {len(repo_info)} repositories with the file '{filename}':")
for repo in repo_info:
st.write(f"- **{repo['name']}**: {repo['description']}")
st.write(f" URL: [{repo['url']}]({repo['url']})")
else:
logger.warning(f"No repositories found with the file '{filename}'.")
st.warning(f"No repositories found with the file '{filename}'.")
st.sidebar.title("GitHub File Search Options")
show_logs = st.sidebar.checkbox("Show Logs")
if show_logs:
st.sidebar.subheader("Logs")
with open("app.log", "r") as log_file:
logs = log_file.read()
st.sidebar.text(logs)
if __name__ == "__main__":
app()