@@ -27,6 +27,8 @@ class Utility():
27
27
Save a data list to a pandas table.
28
28
get_repo_informations(data_root_dir)
29
29
Get a repository data (owner and name).
30
+ get_repos(repo_name_pattern, blacklist_pattern, token, data_root_dir)
31
+ Get mutiple repositorys by pattern and token.
30
32
get_repo(repo_owner, repo_name, token, data_root_dir)
31
33
Get a repository by owner, name and token.
32
34
apply_datetime_format(pd_table, source_column, destination_column=None)
@@ -171,6 +173,47 @@ def get_repo_informations(data_root_dir):
171
173
return (repo_data ["repo_owner" ], repo_data ["repo_name" ])
172
174
return None , None
173
175
176
+ @staticmethod
177
+ def get_repos (whitelist_pattern , blacklist_pattern , token , data_root_dir ):
178
+ """
179
+ get_repos(repo_name_pattern, blacklist_pattern, token, data_root_dir)
180
+
181
+ Get mutiple repositorys by pattern and token.
182
+
183
+ Parameters
184
+ ----------
185
+ whitelist_pattern : str
186
+ the whitelist pattern of the desired repository.
187
+ blacklist_pattern : str
188
+ the blacklist pattern of the desired repository.
189
+ token : str
190
+ A valid Github Token.
191
+ data_root_dir : str
192
+ Data root directory for the repositorys.
193
+
194
+ Returns
195
+ -------
196
+ List
197
+ List of Repository objects from pygithub.
198
+
199
+ Notes
200
+ -----
201
+ PyGithub Repository object structure: https://pygithub.readthedocs.io/en/latest/github_objects/Repository.html
202
+
203
+ """
204
+ g = github .Github (token )
205
+ relevant_repos = []
206
+ for repo in g .get_user ().get_repos ():
207
+ if whitelist_pattern == "" or whitelist_pattern == None or whitelist_pattern in repo .name :
208
+ if blacklist_pattern == "" or blacklist_pattern == None or not blacklist_pattern in repo .name :
209
+ repo_dir = Path (data_root_dir , repo .owner .login + "/" + repo .name )
210
+ repo_dir .mkdir (parents = True , exist_ok = True )
211
+ repo_file = Path (repo_dir , Utility .REPO )
212
+ with open (repo_file , 'w' ) as json_file :
213
+ json .dump ({"repo_owner" : repo .owner .login ,"repo_name" :repo .name }, json_file )
214
+ relevant_repos .append (repo )
215
+ return relevant_repos
216
+
174
217
@staticmethod
175
218
def get_repo (repo_owner , repo_name , token , data_root_dir ):
176
219
"""
0 commit comments