@@ -27,6 +27,8 @@ class Utility():
2727 Save a data list to a pandas table.
2828 get_repo_informations(data_root_dir)
2929 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.
3032 get_repo(repo_owner, repo_name, token, data_root_dir)
3133 Get a repository by owner, name and token.
3234 apply_datetime_format(pd_table, source_column, destination_column=None)
@@ -171,6 +173,47 @@ def get_repo_informations(data_root_dir):
171173 return (repo_data ["repo_owner" ], repo_data ["repo_name" ])
172174 return None , None
173175
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+
174217 @staticmethod
175218 def get_repo (repo_owner , repo_name , token , data_root_dir ):
176219 """
0 commit comments