Skip to content

Commit a202760

Browse files
authored
Add min_stars filtering option to WriteFile and run_by_gql functions
1 parent 948bf0a commit a202760

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

source/process.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from datetime import datetime
33
import os
44
import pandas as pd
5+
import argparse
56
from common import get_graphql_data, write_text, write_ranking_repo
67
import inspect
78

@@ -148,7 +149,7 @@ def get_all_repos(self):
148149

149150

150151
class WriteFile(object):
151-
def __init__(self, repos_stars, repos_forks, repos_languages):
152+
def __init__(self, repos_stars, repos_forks, repos_languages, min_stars=None):
152153
self.repos_stars = repos_stars
153154
self.repos_forks = repos_forks
154155
self.repos_languages = repos_languages
@@ -175,13 +176,19 @@ def __init__(self, repos_stars, repos_forks, repos_languages):
175176
for i in range(len(languages)):
176177
lang = languages[i]
177178
lang_md = languages_md[i]
179+
if min_stars is not None:
180+
if lang not in repos_languages or not repos_languages[lang]:
181+
continue
182+
top_repo_stars = repos_languages[lang][0]['stargazers_count']
183+
if top_repo_stars < min_stars:
184+
continue
178185
self.repo_list.append({
179186
"desc": "Forks",
180187
"desc_md": "Forks",
181188
"title_readme": lang_md,
182189
"title_100": f"Top 100 Stars in {lang_md}",
183190
"file_100": f"{lang}.md",
184-
"data": repos_languages[lang],
191+
"data": repos_languages[lang] if lang in repos_languages else [],
185192
"item": lang,
186193
})
187194

@@ -247,20 +254,25 @@ def save_to_csv(self):
247254
print('Save data to Data/github-ranking-' + save_date + '.csv')
248255

249256

250-
def run_by_gql():
257+
def run_by_gql(min_stars=None):
251258
ROOT_PATH = os.path.abspath(os.path.join(__file__, "../../"))
252259
os.chdir(os.path.join(ROOT_PATH, 'source'))
253260

254-
processor = ProcessorGQL() # use Github GraphQL API v4
261+
processor = ProcessorGQL()
255262
repos_stars, repos_forks, repos_languages = processor.get_all_repos()
256-
wt_obj = WriteFile(repos_stars, repos_forks, repos_languages)
263+
wt_obj = WriteFile(repos_stars, repos_forks, repos_languages, min_stars=min_stars)
257264
wt_obj.write_head_contents()
258265
wt_obj.write_readme_lang_md()
259266
wt_obj.save_to_csv()
260267

261268

262269
if __name__ == "__main__":
270+
parser = argparse.ArgumentParser(description='Generate GitHub ranking')
271+
parser.add_argument('--min-stars', type=int, default=None,
272+
help='Minimum star count threshold for filtering languages')
273+
args = parser.parse_args()
274+
263275
t1 = datetime.now()
264-
run_by_gql()
276+
run_by_gql(min_stars=args.min_stars)
265277
print("Total time: {}s".format((datetime.now() - t1).total_seconds()))
266278

0 commit comments

Comments
 (0)