-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.py
More file actions
51 lines (42 loc) · 2.07 KB
/
Copy pathscript.py
File metadata and controls
51 lines (42 loc) · 2.07 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
import requests
from datetime import datetime
from collections import defaultdict
from requests import Response
def call_api() -> dict:
url: str = "https://api.github.com/emojis"
headers: dict = {
"Accept": "application/vnd.github.v3+json",
"User-Agent": "Python-Requests",
"X-GitHub-Api-Version":"2022-11-28"
}
response: Response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
return dict()
def group_emojis(emojis: dict) -> dict:
grouped_emojis: dict = defaultdict(list)
for key, value in emojis.items():
first_letter: str = key[0].upper()
grouped_emojis[first_letter].append((key, value))
return grouped_emojis
def generate_markdown(grouped_emojis: dict) -> str:
markdown_tables: list = []
total_emojis: int = sum(len(value) for value in grouped_emojis.values())
for letter in sorted(grouped_emojis):
markdown_tables.append(f"## {letter}\n")
markdown_tables.append(f"<details open>\n")
markdown_tables.append(f"<summary>{len(grouped_emojis[letter])} item(s)</summary>\n")
markdown_tables.append("| Code | Result |")
markdown_tables.append("|-----|--------|")
for key, value in grouped_emojis[letter]:
markdown_tables.append(f"| `:{key}:` | <img src='{value}' alt='{key}' width='32px' height='32px'/> |")
markdown_tables.append("</details>\n")
markdown: str = f"# GitHub Emojis\nThis is a list of all emojis available on GitHub (*{total_emojis} items*).\n"
markdown += f">[!NOTE]\n>Last update: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} using [GitHub API](https://docs.github.com/en/rest/emojis/emojis?apiVersion=2022-11-28), generated by [script.py](script.py)\n"
markdown += "\n".join(markdown_tables)
return markdown
def write_markdown(filename: str, markdown_output: str) -> None:
with open(filename, "w", encoding="utf-8") as file:
file.write(markdown_output)
if __name__ == '__main__':
write_markdown('README.md', generate_markdown(group_emojis(call_api())))