-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathget_repos.py
More file actions
51 lines (39 loc) · 1.45 KB
/
get_repos.py
File metadata and controls
51 lines (39 loc) · 1.45 KB
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
import requests
import json
from source import TOKEN
from logging_config import logging
logger = logging.getLogger(__name__)
def get_repositories():
headers = {'Authorization': f'token {TOKEN}'}
repositories = []
url = 'https://api.github.com/search/repositories'
page = 1
page_amount = 10
while page <= page_amount:
params = {'q': 'language:python', 'per_page': 100, 'page': page}
logger.info(f'Происходит запрос к GitHub API: {page}/{page_amount}')
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
repos = data.get('items', [])
if not repos:
break
repositories.extend(
[
{'name': repo['name'], 'owner': repo['owner']['login']}
for repo in repos
]
)
page += 1
else:
logger.error(
f'Ошибка при получении списка репозиториев: {response.status_code}'
)
break
with open('repositories.json', 'w') as file:
json.dump(repositories, file)
logger.info(
f'Список репозиториев сохранен в файле "repositories.json". Всего репозиториев: {len(repositories)}'
)
if __name__ == '__main__':
get_repositories()