Pull to refresh

Работа с API Яндекс.Метрика на Python

Reading time2 min
Views15K
Всем любителям Python и Яндекс.Метрики доброго дня!

Некоторые знают, что с некоторых пор я заделался Web-разработчиком, впрочем это громко сказано. Мой сайт с занимательными задачками, кстати, если кому интересно, попасть туда можно вот по этой ссылке, медленно, но верно, катится в топы поисковиков, благо альтернатив не так много. О посещаемости на сайте я узнаю из отчетов уже полюбившейся мне яндекс.метрики. В принципе, там есть большинство из того, что мне нужно. Но каждый раз ходить на из сайт для того, чтобы посмотреть количество визитеров как-то не фонтан. И вот тут я снова, как нельзя кстати, вспомнил, что в общем-то я программист и учу питон. «Ладно», — подумал я — «заодно и в работе с сетью попрактикуюсь». Сказано-сделано. Через протокол oAuth регистрируем приложение и получаем для него отладочный токен (живет он бессрочно и каждый раз запрашивать его не надо. Так что под наши нужды — самое то!). Для всех интересующихся, под катом привожу код библиотеки, которую можно привязать к любому GUI — интерфейсу:

YMReader.py

А теперь, кратко, что она все-таки умеет.

  • Авторизовываться в яндекс.метрике, используя ID и токен
  • Запрашивать список счетчиков для аккаунта (используется в дальнейшем)
  • Получать статистику за сегодняшний день или за все время работы (Today или Totall в параметре соответствующей функции)
  • Получать список поисковых фраз, по которым люди переходили на ваш сайт
  • Проверять правильность установки счетчика

Сама либа, разумеется ничего по-умолчанию не делает. Для того, чтобы ей воспользоваться, нужно ее импортировать в ваш проект:

import YMReader

 Затем передать ей данные для входа методом SetLoginData в параметрах указав ваш ID и ваш токен. Как вы получите токен — ваше дело, но я решил использовать статичный отладочный (должно же быть хоть что-то через жопу)
Например вот так:

SetLoginData("21535707","49985f415a9a46aab45b70304a557cab") #  в данных изменена пара символов, поэтому при попытке воспользоваться - вернет 403 или 401 ошибку

Ну а теперь, можно пользоваться всеми функциями. Наберите print dir(YMReader), чтобы увидеть, как они называются. Как правило, функции у меня возвращают данные либо в виде словарей (например GetSummary) либо в виде строки (CheckCode). Поэтому, чтобы воспользоваться результатами ничего парсить не требуется. Давайте, для примера, выведем число посетителей для сайта ru-brains.org:
 
import YMReader

YMReader.SetLoginData("21535707","49985f415a9a46aab45b70304a557cab")

print YMReader.GetSummary((YMReader.GetCounters()[1]["URL"]))["Visitors"]

Как видите, все просто!
Либа распространяется под лицензией GPL — так что пользуйтесь сколько хотите!
Всем удачи и безглючного кода!
Tags:
Hubs:
Total votes 10: ↑8 and ↓2+6
Comments7

Articles