File size: 2,030 Bytes
77f290b
 
 
 
08a78c1
77f290b
2db37b1
 
77f290b
1373b5f
08a78c1
454cd9e
6fb0159
454cd9e
08a78c1
 
77f290b
 
2db37b1
77f290b
 
 
 
 
 
 
 
 
 
2db37b1
77f290b
2db37b1
 
 
77f290b
2db37b1
 
77f290b
 
 
 
 
 
 
 
2db37b1
77f290b
 
 
 
 
 
 
2db37b1
6e3c928
2db37b1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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...")