#!/usr/bin/python3 import asyncio import os import re import aiohttp from github_stats import Stats ################################################################################ # Helper Functions ################################################################################ def generate_output_folder() -> None: """ Create the output folder if it does not already exist """ if not os.path.isdir("generated"): os.mkdir("generated") ################################################################################ # Individual Image Generation Functions ################################################################################ async def generate_overview(s: Stats) -> None: """ Generate an SVG badge with summary statistics :param s: Represents user's GitHub statistics """ with open("templates/overview.svg", "r") as f: output = f.read() output = re.sub("{{ name }}", await s.name, output) output = re.sub("{{ stars }}", f"{await s.stargazers:,}", output) output = re.sub("{{ forks }}", f"{await s.forks:,}", output) output = re.sub("{{ contributions }}", f"{await s.total_contributions:,}", output) changed = (await s.lines_changed)[0] + (await s.lines_changed)[1] output = re.sub("{{ lines_changed }}", f"{changed:,}", output) output = re.sub("{{ views }}", f"{await s.views:,}", output) output = re.sub("{{ repos }}", f"{len(await s.repos):,}", output) generate_output_folder() with open("generated/overview.svg", "w") as f: f.write(output) async def generate_languages(s: Stats) -> None: """ Generate an SVG badge with summary languages used :param s: Represents user's GitHub statistics """ with open("templates/languages.svg", "r") as f: output = f.read() progress = "" lang_list = "" sorted_languages = sorted( (await s.languages).items(), reverse=True, key=lambda t: t[1].get("size") ) delay_between = 150 for i, (lang, data) in enumerate(sorted_languages): color = data.get("color") color = color if color is not None else "#000000" progress += ( f'' ) lang_list += f"""