-
Notifications
You must be signed in to change notification settings - Fork 60
/
main.py
127 lines (98 loc) · 3.28 KB
/
main.py
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/python
# -*- coding: utf-8 -*-
from github import Github
from github.Issue import Issue
from github.Repository import Repository
import os
import time
import codecs
from word_cloud import WordCloudGenerator
user: Github
user_name: str
blog_repo: Repository
cur_time: str
blog_name: str
def login():
global user, user_name, blog_name, blog_repo
github_repo_env = os.environ.get('GITHUB_REPOSITORY')
user_name = github_repo_env[0:github_repo_env.index('/')]
blog_name = github_repo_env[github_repo_env.index('/'):]
password = os.environ.get('GITHUB_TOKEN')
user = Github(user_name, password)
blog_repo = user.get_repo(github_repo_env)
print(blog_repo)
def bundle_summary_section():
global blog_repo
global cur_time
global user
global user_name
global blog_name
summary_section = '''
<p align='center'>
<img src="https://badgen.net/github/issues/{0}/{1}"/>
<img src="https://badgen.net/badge/last-commit/{2}"/>
<img src="https://badgen.net/github/forks/{0}/{1}"/>
<img src="https://badgen.net/github/stars/{0}/{1}"/>
<img src="https://badgen.net/github/watchers/{0}/{1}"/>
</p>
<p align='center'>
<a href="https://github.com/johnnian/Blog/issues/74">如果您Fork本仓库,请先阅读:如何基于Github Issues与Github Actions写技术博客?</a><br/>
<a href="https://letgovoc.cn">TIPS:新开设了一个博客,计划输出产品技术系列主题内容,欢迎点击访问</a>
</p>
'''.format(user_name, blog_name, cur_time)
return summary_section
def format_issue(issue: Issue):
return '- %s [%s](%s) \n' % (
issue.created_at.strftime('%Y-%m-%d'),
issue.title,
issue.html_url)
def update_readme_md_file(contents):
with codecs.open('README.md', 'w', encoding='utf-8') as f:
f.writelines(contents)
f.flush()
f.close()
def bundle_list_by_labels_section():
global blog_repo
global user
global user_name
global blog_name
# word cloud
wordcloud_image_url = WordCloudGenerator(blog_repo).generate()
list_by_labels_section = """
<summary>
<a href="https://%s.github.io/%s/"><img src="%s" title="词云" alt="词云"></a>
</summary>
""" % (user_name, blog_name,wordcloud_image_url)
all_labels = blog_repo.get_labels()
for label in all_labels:
temp = ''
count = 0
issues_in_label = blog_repo.get_issues(labels=(label,), state="open")
for issue in issues_in_label:
temp += format_issue(issue)
count += 1
if count > 0:
list_by_labels_section += '''
<details open>
<summary>%s\t[%s篇]</summary>
%s
</details>
''' % (label.name, count, temp)
return list_by_labels_section
def execute():
global cur_time
# common
cur_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 1. login & init rope
login()
# 2. summary section
summary_section = bundle_summary_section()
print(summary_section)
# 3. list by labels section
list_by_labels_section = bundle_list_by_labels_section()
print(list_by_labels_section)
contents = [summary_section, list_by_labels_section]
update_readme_md_file(contents)
print('README.md updated successfully!!!')
if __name__ == '__main__':
execute()