mirror of
https://github.com/inventree/inventree-website.git
synced 2025-06-12 18:15:34 +00:00
use python script for updates
This commit is contained in:
47
.github/get_stats.py
vendored
Normal file
47
.github/get_stats.py
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
from enum import Enum
|
||||
import json
|
||||
from pathlib import Path
|
||||
from urllib.request import urlopen, Request
|
||||
|
||||
file_name = Path('_data/general/stats.yml')
|
||||
|
||||
class ReturnMode(Enum):
|
||||
data = 0
|
||||
header = 1
|
||||
|
||||
def get_data(url, key=None, default=0, mode: ReturnMode=ReturnMode.data):
|
||||
"""Fetches data from remote endpoint"""
|
||||
httprequest = Request(url, headers={"Accept": "application/json"})
|
||||
|
||||
with urlopen(httprequest) as response:
|
||||
if mode == ReturnMode.data:
|
||||
data = response.read().decode()
|
||||
data = json.loads(data)
|
||||
|
||||
elif mode == ReturnMode.header:
|
||||
data = dict(response.headers.items())
|
||||
|
||||
if key:
|
||||
data = data.get(key, default)
|
||||
|
||||
return data
|
||||
|
||||
docker = get_data('https://hub.docker.com/v2/repositories/inventree/inventree', 'pull_count')
|
||||
gh_data = get_data('https://api.github.com/repos/inventree/inventree')
|
||||
stars = gh_data.get('stargazers_count', 0)
|
||||
forks = gh_data.get('forks_count', 0)
|
||||
# See https://stackoverflow.com/a/60458265/17860466 # to enabble anon add `&anon=true`
|
||||
link = get_data('https://api.github.com/repos/inventree/inventree/contributors?per_page=1', mode=ReturnMode.header).get('Link')
|
||||
contributors = link.split('page=')[-1].split('>')[0]
|
||||
|
||||
# Write data
|
||||
file_name.write_text(
|
||||
f"""stats:
|
||||
- name: Docker pulls
|
||||
number: {docker}
|
||||
- name: GitHub Stars
|
||||
number: {stars}
|
||||
- name: Forks
|
||||
number: {forks}
|
||||
- name: Contributors
|
||||
number: {contributors}""")
|
Reference in New Issue
Block a user