ПРИМЕЧАНИЕ
Подобные простые вызовы должны возвращать полный набор результатов, поэтому значе-
ние, связанное с 'incomplete_results’, можно достаточно безопасно игнорировать . Но, если
ваша программа выдает более сложные вызовы API, обязательно проверяйте это значение .
Работа со словарем ответа
Итак, полученная при вызове API информация хранится в словаре, и мы можем
заняться работой с данными. Для начала построим сводку с обобщенными сведе-
ниями — это позволит убедиться в том, что вызов вернул ожидаемую информацию,
и перейти к анализу интересующих данных.
python_repos.py
import requests
# Создание вызова API и сохранение ответа.
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
print("Status code:", r.status_code)
# Сохранение ответа API в переменной.
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# Анализ информации о репозиториях.
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# Анализ первого репозитория.
repo_dict = repo_dicts[0]
print("\nKeys:", len(repo_dict))
for key in sorted(repo_dict.keys()):
print(key)
В точке выводится значение, связанное с
'total_count'
, которое представляет
общее количество репозиториев Python в GitHub.
Значение, связанное с
'items'
, представляет собой список со словарями, каждый
из которых содержит данные об одном репозитории Python. В точке этот список
словарей сохраняется в
repo_dicts
. Затем программа выводит длину
repo_dicts
,
чтобы пользователь видел, по какому количеству репозиториев имеется инфор-
мация.
Чтобы получить первое представление об информации, возвращенной по каждому
репозиторию, программа извлекает первый элемент из
repo_dicts
и сохраняет его
в
repo_dict
. Затем программа выводит количество ключей в словаре — это зна-
чение определяет объем доступной информации . В точке выводятся все ключи
словаря; по ним можно понять, какая информация включена в ответ.
Из сводки начинает вырисовываться более четкая картина полученных данных:
Status code: 200
Total repositories: 713062
366 Глава 17 • Работа с API
Repositories returned: 30
Keys: 68
archive_url
assignees_url
blobs_url
...
url
watchers
watchers_count
API GitHub возвращает подробную информацию о каждом репозитории: в
repo_
dict
68 ключей . Просмотр ключей дает представление о том, какую информацию
можно извлечь о проекте. (Чтобы узнать, какую информацию можно получить
через API, следует либо прочитать документацию, либо проанализировать инфор-
мацию в коде, как мы и поступаем.)
Прочитаем значения некоторых ключей
repo_dict
:
python_repos.py
...
# Анализ информации о репозиториях.
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# Анализ первого репозитория.
repo_dict = repo_dicts[0]
print("\nSelected information about first repository:")
print('Name:', repo_dict['name'])
print('Owner:', repo_dict['owner']['login'])
print('Stars:', repo_dict['stargazers_count'])
print('Repository:', repo_dict['html_url'])
print('Created:', repo_dict['created_at'])
print('Updated:', repo_dict['updated_at'])
print('Description:', repo_dict['description'])
В программе выводятся значения, связанные с некоторыми ключами словаря пер-
вого репозитория. В точке выводится имя проекта. Владельца проекта представ-
ляет целый словарь, поэтому в точке ключ
owner
используется для обращения
к словарю, представляющему владельца, после чего ключ
login
используется для
получения регистрационного имени владельца. В точке выводится количество
звезд, заработанных проектом, и URL репозитория GitHub проекта. Далее выво-
дится дата создания и последнего обновления репозитория . В завершение
выводится описание репозитория; вывод должен выглядеть примерно так:
Status code: 200
Total repositories: 713065
Repositories returned: 30
Selected information about first repository:
Name: httpie
Owner: jkbrzt
Stars: 16101
Использование API веб-приложений 367
Repository: https://github.com/jkbrzt/httpie
Created: 2012-02-25T12:39:13Z
Updated: 2015-07-13T14:56:41Z
Description: CLI HTTP client; user-friendly cURL replacement featuring
intuitive UI, JSON support, syntax highlighting, wget-like downloads,
extensions, etc.
Из вывода видно, что на момент написания книги самым «звездным» проектом
Python на GitHub был проект HTTPie, владельцем которого является пользователь
jkbrzt, и звезды этот проект получил более чем от 16 000 пользователей GitHub. Мы
видим URL репозитория проекта, дату создания (февраль 2012 г.) и то, что проект
недавно обновлялся. Наконец, из описания следует, что HTTPie помогает выдавать
вызовы HTTP из терминала (CLI — сокращение от «Command Line Interface»,
то есть «интерфейс командной строки»).
Сводка самых популярных репозиториев
При построении визуализации этих данных на диаграмму необходимо нанести
более одного репозитория. Напишем цикл для вывода информации о каждом ре-
позитории, возвращаемом вызовом API, чтобы все эти репозитории можно было
включить в визуализацию:
Достарыңызбен бөлісу: |