Skip to content

Instantly share code, notes, and snippets.

@user-grinch
Created March 18, 2022 10:53
Show Gist options
  • Save user-grinch/f2f337483d86c15b5b256624de1603a1 to your computer and use it in GitHub Desktop.
Save user-grinch/f2f337483d86c15b5b256624de1603a1 to your computer and use it in GitHub Desktop.
####################################################################
# GitHub Release Stats v1.0
# Author: Grinch_
# Date: 18-03-2022
####################################################################
# Config
API_TOKEN = "YOUR_TOKEN"
REPO_NAME = "user-grinch/Cheat-Menu"
####################################################################
from github import Github
from typing import List
from datetime import datetime
class Stat:
total_downloads :int = 0
def __init__(self, title :str, tag: str, downloads: int):
self.title = title
self.tag = tag
self.downloads = downloads
Stat.total_downloads += downloads
class GitHubReleaseStats:
def __init__(self):
self.DownloadCount = 0
self.Data = []
self.__g = Github(API_TOKEN)
self.__repo = self.__g.get_repo(REPO_NAME)
def GetStats(self) -> List[Stat]:
self.Data.clear()
for release in self.__repo.get_releases():
downloads :int = 0
for asset in release.get_assets():
downloads += asset.download_count
stat = Stat(release.title, release.tag_name, downloads, release.created_at)
self.Data.append(stat)
return self.Data
def GetAssetDownloads(self, asset_name: str) -> List[Stat]:
self.Data.clear()
for release in self.__repo.get_releases():
for asset in release.get_assets():
if asset.name == asset_name:
stat = Stat(release.title, release.tag_name, asset.download_count)
self.Data.append(stat)
continue
return self.Data
if __name__ == "__main__":
with open("daily_downloads.txt", "a") as f:
handler = GitHubReleaseStats()
stats = handler.GetAssetDownloads("counter.info")
f.write("Date: {} - Total: {}\n".format(datetime.date(datetime.now()), Stat.total_downloads))
for stat in stats:
f.write("{}: {}".format(stat.tag, stat.downloads))
f.write("\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment