Skip to content

Commit 3b213ff

Browse files
committed
multiple-tokens support implemented
1 parent 1057328 commit 3b213ff

File tree

8 files changed

+36
-43
lines changed

8 files changed

+36
-43
lines changed

README.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,28 @@ docker run -v $(pwd)/output:/app/output checking_repo [--invites] [--commites] [
2424
## Запуск приложения:
2525
1. Логирование commits
2626
```commandline
27-
python3 main.py [-c, --commits] [-t, --token] token (github токен вместо token) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [-b, --branch] branch (branch - название конкретной ветки, откуда брать коммиты или all - логгировать все коммиты изо всех веток)
27+
python3 main.py [-c, --commits] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [-b, --branch] branch (branch - название конкретной ветки, откуда брать коммиты или all - логгировать все коммиты изо всех веток)
2828
```
2929
2. Логирование issues
3030
```commandline
31-
python3 main.py [-i, --issues] [-t, --token] token (github токен вместо token) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
31+
python3 main.py [-i, --issues] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
3232
```
3333
3. Логирование pull requests
3434
```commandline
35-
python3 main.py [-p, --pull_requests] [-t, --token] token (github токен вместо token) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--pr_comments] (если установлен - также выгружаются комментарии к PR)
35+
python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--pr_comments] (если установлен - также выгружаются комментарии к PR)
3636
```
3737
4. Логирование непринятых приглашений в репо
3838
```commandline
39-
python3 main.py --invites [-t, --token] token (github токен вместо token) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
39+
python3 main.py --invites (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
4040
```
4141
5. Логирование вики-репозиториев
4242
```commandline
43-
python3 main.py [-w, --wikis] [-t, --token] token (github токен вместо token) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
43+
python3 main.py [-w, --wikis] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
44+
```
45+
6. Логирование контрибьюторов
46+
```commandline
47+
python3 main.py --contributors (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list] list (list - строка пути к txt файлу со списком репозиториев) --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи)
4448
```
45-
4649

4750

4851
## Получение токена для работы с Google таблицей:
@@ -60,10 +63,15 @@ python3 main.py [-w, --wikis] [-t, --token] token (github токен вмест
6063
## Экспорт таблицы в Google Sheets:
6164

6265
``` commandline
63-
python3 main.py [-p, --pull_requests] [-t, --token] token (github токен вместо token) [-l,--list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--google_token] token.json (файл с google токеном) [--table_id] table_id (id таблицы, указанной в url пути до таблицы) [--sheet_id] sheet_id (id конкретного листа в таблице google)
66+
python3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l,--list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--google_token] token.json (файл с google токеном) [--table_id] table_id (id таблицы, указанной в url пути до таблицы) [--sheet_id] sheet_id (id конкретного листа в таблице google)
6467
```
6568

6669
## Файл со списком репозиториев:
6770

6871
Репозитории хранятся в txt файле. Каждый репозиторий записывается в отдельную строку.
6972
Должно быть указано полное имя репозитория. (Название организации/название репозитория)
73+
74+
## Файл со списком токенов:
75+
76+
Каждый токен записывается в отдельную строку.
77+
Токены должны быть привзязаны к разным github аккаунтам. Токены, привязанные к одному аккаунту имеют общий rate_limit.

commits_parser.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,10 @@ def log_repository_commits(repository: Repository, csv_name, start, finish, bran
5959
sleep(TIMEDELTA)
6060

6161

62-
def log_commits(
63-
client: Github, working_repos, csv_name, start, finish, branch, fork_flag
64-
):
62+
def log_commits(working_repos, csv_name, start, finish, branch, fork_flag):
6563
logger.log_to_csv(csv_name, FIELDNAMES)
6664

67-
for repo in working_repos:
65+
for repo, token in working_repos:
6866
try:
6967
logger.log_title(repo.full_name)
7068
log_repository_commits(repo, csv_name, start, finish, branch)

contributors_parser.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,10 @@ def get_contributors_stats(repository: Repository) -> dict:
7272
return contributors_stats
7373

7474

75-
def log_contributors(
76-
client: Github, working_repos: Generator, csv_name: str, fork_flag: bool
77-
):
75+
def log_contributors(working_repos: Generator, csv_name: str, fork_flag: bool):
7876
logger.log_to_csv(csv_name, FIELDNAMES)
7977

80-
for repo in working_repos:
78+
for repo, token in working_repos:
8179
try:
8280
logger.log_title(repo.full_name)
8381
log_repository_contributors(repo, csv_name)

git_logger.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def get_next_client(self) -> Github:
5757
raise Exception("No github-clients available")
5858

5959
self.cur_client = client
60-
return client["client"]
60+
return client
6161

6262

6363
def get_next_repo(clients: GithubClients, repositories):
@@ -67,13 +67,14 @@ def get_next_repo(clients: GithubClients, repositories):
6767
for repo_name in list_repos:
6868
try:
6969
cur_client = clients.get_next_client()
70-
repo = cur_client.get_repo(repo_name)
70+
repo = cur_client['client'].get_repo(repo_name)
7171
except GithubException as err:
7272
print(f'Github: Connect: error {err.data}')
7373
print(f'Github: Connect: failed to load repository "{repo_name}"')
7474
exit(1)
7575
else:
76-
yield repo
76+
print(cur_client['token'])
77+
yield repo, cur_client['token']
7778

7879

7980
def get_assignee_story(github_object):

invites_parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ def log_repository_invitations(repository: Repository, csv_name):
3636
sleep(TIMEDELTA)
3737

3838

39-
def log_invitations(client: Github, working_repos, csv_name):
39+
def log_invitations(working_repos, csv_name):
4040
logger.log_to_csv(csv_name, FIELDNAMES)
4141

42-
for repo in working_repos:
42+
for repo, token in working_repos:
4343
logger.log_title(repo.full_name)
4444
try:
4545
log_repository_invitations(repo, csv_name)

issues_parser.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,24 +172,20 @@ def log_repository_issues(repository: Repository, csv_name, token, start, finish
172172
sleep(TIMEDELTA)
173173

174174

175-
def log_issues(
176-
clients: GithubClients, working_repo, csv_name, start, finish, fork_flag
177-
):
175+
def log_issues(working_repo, csv_name, start, finish, fork_flag):
178176
logger.log_to_csv(csv_name, FIELDNAMES)
179177

180-
for repo in working_repo:
178+
for repo, token in working_repo:
181179
try:
182180
logger.log_title(repo.full_name)
183-
log_repository_issues(
184-
repo, csv_name, clients.cur_client["token"], start, finish
185-
)
181+
log_repository_issues(repo, csv_name, token, start, finish)
186182
if fork_flag:
187183
for forked_repo in repo.get_forks():
188184
logger.log_title("FORKED:", forked_repo.full_name)
189185
log_repository_issues(
190186
forked_repo,
191187
csv_name,
192-
clients.cur_client["token"],
188+
token,
193189
start,
194190
finish,
195191
)

main.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,10 @@ def main():
151151

152152
if args.commits:
153153
commits_parser.log_commits(
154-
clients, working_repos, csv_name, start, finish, args.branch, fork_flag
154+
working_repos, csv_name, start, finish, args.branch, fork_flag
155155
)
156156
if args.pull_requests:
157157
pull_requests_parser.log_pull_requests(
158-
clients,
159158
working_repos,
160159
csv_name,
161160
start,
@@ -164,17 +163,13 @@ def main():
164163
log_pr_comments,
165164
)
166165
if args.issues:
167-
issues_parser.log_issues(
168-
clients, working_repos, csv_name, start, finish, fork_flag
169-
)
166+
issues_parser.log_issues(working_repos, csv_name, start, finish, fork_flag)
170167
if args.invites:
171-
invites_parser.log_invitations(clients, working_repos, csv_name)
168+
invites_parser.log_invitations(working_repos, csv_name)
172169
if args.wikis:
173170
wikipars.wikiparser(clients, repositories, path_drepo, csv_name)
174171
if args.contributors:
175-
contributors_parser.log_contributors(
176-
clients, working_repos, csv_name, fork_flag
177-
)
172+
contributors_parser.log_contributors(working_repos, csv_name, fork_flag)
178173
if args.export_google_sheets:
179174
export_sheets.write_data_to_table(
180175
csv_name, args.google_token, args.table_id, args.sheet_id

pull_requests_parser.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ def log_repositories_pr(
161161

162162

163163
def log_pull_requests(
164-
clients: GithubClients,
165164
working_repos,
166165
csv_name,
167166
start,
@@ -171,19 +170,17 @@ def log_pull_requests(
171170
):
172171
logger.log_to_csv(csv_name, FIELDNAMES)
173172

174-
for repo in working_repos:
173+
for repo, token in working_repos:
175174
try:
176175
logger.log_title(repo.full_name)
177-
log_repositories_pr(
178-
repo, csv_name, clients.cur_client["token"], start, finish
179-
)
176+
log_repositories_pr(repo, csv_name, token, start, finish)
180177
if fork_flag:
181178
for forked_repo in repo.get_forks():
182179
logger.log_title("FORKED:", forked_repo.full_name)
183180
log_repositories_pr(
184181
forked_repo,
185182
csv_name,
186-
clients.cur_client["token"],
183+
token,
187184
start,
188185
finish,
189186
log_comments,

0 commit comments

Comments
 (0)