import time import requests import time import os import zipfile import json from core.conversion import get_api_link from core.conversion import noop_logger def fetch_code(zip_file): zip_content_dict = {} for file_name in zip_file.namelist(): if ((file_name.lower().endswith(".py") | (file_name.lower().endswith(".ipynb")) | (file_name.lower().endswith(".md")))): file_content = zip_file.open(file_name).read().decode("utf-8") zip_content_dict[file_name] = file_content return zip_content_dict def fetch_repo_stars(repo_url, token, log_fn=noop_logger): headers = {"Authorization": f"token {token}"} api_url = get_api_link(repo_url) api_url = api_url.replace("/zipball/", "") # Sending GET request to GitHub API response = requests.get(api_url, headers=headers) if response.status_code == 200: return json.loads(response.content)["stargazers_count"] if (response.status_code == 404): log_fn("ERROR", "Repository private.") def fetch_readmes(zip): readme_files = [readme for readme in zip.namelist() if (readme.lower().endswith("readme.md") & (len(readme.split("/")) == 2))] readmes = [] for readme_file in readme_files: readmes.append(zip.open(readme_file).read().decode("utf-8")) return readmes def fetch_license(zip): license_files = [license for license in zip.namelist() if (("LICENSE" in license) & (len(license.split("/")) == 2))] license = None if (len(license_files) > 0): license = zip.open(license_files[0]).read().decode("utf-8") return license def fetch_openalex(paper_name, year, log_fn=noop_logger): api_url = f"https://api.openalex.org/works?filter=default.search:{paper_name},publication_year:{year}" response = requests.get(api_url) if response.status_code == 200: return response.json() else: log_fn("WARNING", "Could not find OpenAlex information for paper.") def init_llm(log_fn=noop_logger): log_fn("LOG", "Initializing LLM...")