Unverified Commit dcb636ad authored by Noé Lopez's avatar Noé Lopez
Browse files

Refactor into functions

parent 8b4a0464
...@@ -2,28 +2,27 @@ import requests ...@@ -2,28 +2,27 @@ import requests
import json import json
import pandas as pd import pandas as pd
# Repository details def fetch_issues(owner, repo):
owner = "EbookFoundation" '''Return a list of issues from OWNER/REPO.
repo = "free-programming-books" '''
# GitHub API endpoint
# GitHub API endpoint url = f"https://api.github.com/repos/{owner}/{repo}/issues"
url = f"https://api.github.com/repos/{owner}/{repo}/issues" headers = {
headers = {
"Accept": "application/vnd.github+json", "Accept": "application/vnd.github+json",
# "Authorization": "Bearer YOUR_GITHUB_TOKEN" # optional # "Authorization": "Bearer YOUR_GITHUB_TOKEN" # optional
} }
# Fetch issues
# Fetch issues response = requests.get(url, headers=headers)
response = requests.get(url, headers=headers) if response.status_code == 200:
return response.json()
if response.status_code == 200: else:
issues = response.json() raise f"Failed to fetch issues from {owner}/{repo}: status {response.status_code}"
# Extract key fields from each issue def serialize_issue(issue):
data = [] '''Serializes an issue object from the Github API to a dictionary
for issue in issues: of key fields.
data.append({ '''
return {
"id": issue.get("id"), "id": issue.get("id"),
"number": issue.get("number"), "number": issue.get("number"),
"title": issue.get("title"), "title": issue.get("title"),
...@@ -33,12 +32,22 @@ if response.status_code == 200: ...@@ -33,12 +32,22 @@ if response.status_code == 200:
"user_login": issue["user"]["login"] if "user" in issue and issue["user"] else None, "user_login": issue["user"]["login"] if "user" in issue and issue["user"] else None,
"comments": issue.get("comments"), "comments": issue.get("comments"),
"html_url": issue.get("html_url") "html_url": issue.get("html_url")
}) }
def main():
# Repository details
owner = "EbookFoundation"
repo = "free-programming-books"
issues = fetch_issues(owner, repo)
data = []
for issue in issues:
data.append(serialize_issue(issue))
# Convert to DataFrame # Convert to DataFrame
df = pd.DataFrame(data) df = pd.DataFrame(data)
print(df.head()) print(df.head())
df.to_json("github_data.json") df.to_json("github_data.json")
else: if __name__=="__main__":
print(f"Failed to fetch issues: {response.status_code}") main()
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment