Читаем Изучаем Python полностью

<p>Сводка самых популярных репозиториев</p>

При построении визуализации этих данных на диаграмму необходимо нанести более одного репозитория. Напишем цикл для вывода информации о каждом репозитории, возвращаемом вызовом API, чтобы все эти репозитории можно было включить в визуализацию:

python_repos.py

...

# Анализ информации о репозиториях.

repo_dicts = response_dict['items']

print("Repositories returned:", len(repo_dicts))

(1) print("\nSelected information about each repository:")

(2)for repo_dict in repo_dicts:

. .print('\nName:', repo_dict['name'])

. .print('Owner:', repo_dict['owner']['login'])

. .print('Stars:', repo_dict['stargazers_count'])

. .print('Repository:', repo_dict['html_url'])

. .print('Description:', repo_dict['description'])

В точке (1) выводится приветственное сообщение. В точке (2) перебираются все словари в repo_dicts. Внутри цикла выводится имя каждого проекта, его владелец, количество звезд, URL на GitHub и краткое описание проекта:

Status code: 200

Total repositories: 713067

Repositories returned: 30

Selected information about each repository:

Name: httpie

Owner: jkbrzt

Stars: 16101

Repository: https://github.com/jkbrzt/httpie

Description: CLI HTTP client; user-friendly cURL replacement featuring

intuitive UI, JSON support, syntax highlighting, wget-like downloads,

extensions, etc.

Name: django

Owner: django

Stars: 15028

Repository: https://github.com/django/django

Description: The Web framework for perfectionists with deadlines.

...

Name: powerline

Owner: powerline

Stars: 4315

Repository: https://github.com/powerline/powerline

Description: Powerline is a statusline plugin for vim, and provides

statuslines and prompts for several other applications, including zsh, bash,

tmux, IPython, Awesome and Qtile.

В этих результатах встречаются интересные проекты; возможно, вам стоит присмотреться к некоторым из них… Но не увлекайтесь, потому что мы собираемся создать визуализацию, которая существенно упростит чтение результатов.

<p>Проверка ограничений частоты обращений API</p>

Многие API ограничивают частоту обращений; иначе говоря, существует предел для количества запросов в определенный промежуток времени. Чтобы ­узнать, не приближаетесь ли вы к ограничениям GitHub, введите в браузере адрес https://api.github.com/rate_limit. Вы получите ответ, который выглядит примерно так:

{

"resources": {

. ."core": {

. . "limit": 60,

. . "remaining": 58,

. . "reset": 1426082320

. .},

(1) . ."search": {

(2) . . "limit": 10,

(3) . . "remaining": 8,

(4) . . "reset": 1426078803

. .}

},

"rate": {

. ."limit": 60,

. ."remaining": 58,

. ."reset": 1426082320

}

}

В этих данных нас интересует частота обращений для поискового API (1) . В точке (2) видно, что предельная частота составляет 10 запросов в минуту и что на текущую минуту осталось еще 8 запросов (3). Значение reset представляет Unix-время, или эпохальное время (число секунд, прошедших с полуночи 1 января 1970 года) момента, когда произойдет сброс квоты (4). При достижении предельного количества обращений вы получите короткий ответ, уведомляющий о достижении предела API. Если вы достигнете предела, просто подождите, пока квота будет сброшена.

Примечание

Многие API требуют регистрации и получения ключа API для совершения вызовов. На момент ­написания для GitHub такого требования не было, но, если вы получите ключ API, предельная частота обращений для ваших программ значительно увеличится.

<p>Визуализация репозиториев с использованием Pygal</p>

Теперь, с появлением интересных данных, мы построим визуализацию, демонстрирующую относительную популярность проектов Python в GitHub. Мы построим интерактивную столбцовую диаграмму: высота каждого столбца будет представлять количество звезд у проекта. Щелчок на столбце будет открывать домашнюю страницу проекта на GitHub. Первая попытка выглядит так:

python_repos.py

import requests

import pygal

from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS

# Создание вызова API и сохранение ответа.

URL = 'https://api.github.com/search/repositories?q=language:python&sort=star'

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']

(1) names, stars = [], []

for repo_dict in repo_dicts:

(2) . .names.append(repo_dict['name'])

. .stars.append(repo_dict['stargazers_count'])

# Построение визуализации.

(3)my_style = LS('#333366', base_style=LCS)

(4)chart = pygal.Bar(style=my_style, x_label_rotation=45, show_ legend=False)

chart.title = 'Most-Starred Python Projects on GitHub'

chart.x_labels = names

(5)chart.add('', stars)

chart.render_to_file('python_repos.svg')

Перейти на страницу:

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных