Skip to content

Commit c4ac604

Browse files
committed
change
1 parent 24c597f commit c4ac604

3 files changed

Lines changed: 1482 additions & 6 deletions

File tree

api/index copy.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# -*- coding: UTF-8 -*-
2+
import requests
3+
from http.server import BaseHTTPRequestHandler
4+
import json
5+
import re
6+
headers = {
7+
"accept": "text/html",
8+
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
9+
"if-none-match": 'W/"ef80211272199b848c3cee5f9135b72d"',
10+
"priority": "u=1, i",
11+
"sec-ch-ua": '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
12+
"sec-ch-ua-mobile": "?0",
13+
"sec-ch-ua-platform": '"macOS"',
14+
"sec-fetch-dest": "empty",
15+
"sec-fetch-mode": "cors",
16+
"sec-fetch-site": "same-origin",
17+
"x-requested-with": "XMLHttpRequest"
18+
}
19+
def list_split(items, n):
20+
return [items[i:i + n] for i in range(0, len(items), n)]
21+
def getdata(name):
22+
gitpage = requests.get("https://github.com/" + name + "?action=show&controller=profiles&tab=contributions&user_id=" + name, headers=headers)
23+
# 写个正则匹配 datastr 中data-date 和 data-leve
24+
# data-level="(\d+)"
25+
pattern = r'data-date="(\d{4}-\d{2}-\d{2})" id="contribution-day-component-\d-\d{1,2}" data-level="(\d+)"'
26+
matches = re.findall(pattern, gitpage.text)
27+
# 转成map {"2024-01-28":0,"2024-02-04":0,"2024-02-11":0}
28+
datemap = {item[0]:item[1] for item in matches}
29+
# 转成list ["2024-01-28","2024-02-04","2024-02-11"] 并且日期排序
30+
datadate = [item[0] for item in matches]
31+
datadate.sort()
32+
datalist = []
33+
datacount=0
34+
# 循环datadate 生成datalist
35+
for item in datadate:
36+
itemObj = {"date": item, "count": datemap[item]}
37+
datalist.append(itemObj)
38+
# datemap[item]} 是字符串
39+
datacount+=int(datemap[item])
40+
datalistsplit = list_split(datalist, 7)
41+
return {
42+
"total": datacount,
43+
"contributions": datalistsplit
44+
}
45+
class handler(BaseHTTPRequestHandler):
46+
def do_GET(self):
47+
path = self.path
48+
user = path.split('?')[1]
49+
data = getdata(user)
50+
self.send_response(200)
51+
self.send_header('Access-Control-Allow-Origin', '*')
52+
self.send_header('Content-type', 'application/json')
53+
self.end_headers()
54+
self.wfile.write(json.dumps(data).encode('utf-8'))
55+
return
56+

0 commit comments

Comments
 (0)