Repository navigation
Expand file tree
/
Copy pathtrending.py
More file actions
61 lines (46 loc) · 1.72 KB
/
Copy pathtrending.py
File metadata and controls
61 lines (46 loc) · 1.72 KB
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
58
59
60
61
import argparse
import requests
import json
import os
import sys
parser=argparse.ArgumentParser(description="")
parser.add_argument("--language" ,default="python")
parser.add_argument("--created" ,default="2025-01-01")
parser.add_argument("--limit",default=10 , type =int)
parser.add_argument("--sort", choices=["stars","forks","updated"] ,default="stars")
args = parser.parse_args()
if args.limit <= 0:
print(f"limit {args.limit} is not valid. Limit value should be positive number")
sys.exit(1)
url = f"""https://api.github.com/search/repositories?q=language:{args.language.lower()}+created:>{args.created}&sort={args.sort}&order=desc"""
try:
response = requests.get(url)
if response.status_code == 403:
# Rate limit check here , then sys.exit(1)
remaining = response.headers.get("X-RateLimit-Remaining")
if remaining == "0" :
print("Rate limit exceed. Try again later or a Github token.")
sys.exit(1)
else:
print('Access forbidden (403) . check your request.')
sys.exit(1)
elif response.status_code != 200 :
# Generic error print , then sys.exit(1)
print(f"Error: GitHub returned status {response.status_code}")
sys.exit(1)
else:
data = response.json()
if not data["items"]:
print("We do not find repository ")
else:
for i , repo in enumerate(data["items"][:args.limit]):
print(f"{i+1}. {repo['full_name']} - ⭐ {repo['stargazers_count']}")
print(f" {repo['html_url']}")
except requests.exceptions.RequestException as e :
# this is only for network failure eg. no internet
print(f"Network error: {e}")
sys.exit(1)
# print(args.language)
# print(args.limit)
# print(args.created)
# print(type(args.limit))