Суббота, 01 февраля 2020 23:40

API Yandex.Metrica: получаем статистику Рекламной Службы Яндекса

Оцените материал
(0 голосов)

Очередной костыль, призванный "облЕгчить и углУбить" на сей раз работу со статистикой Рекламной Сети Яндекса; чуть ранее, если кто помнит, был аналогичный ruby-скрипт для получения и вывода в консоль информации счетчика Яндекс.Метрика.

 

API Yandex.Metrica: получаем статистику Рекламной Службы Яндекса

 

Увидеть на гитхабе.

 

Dev banner 1

 

На случай, если захочется потестить - ссылка на GitHub. Не, я понимаю, что лениво ставить ruby на свою винду, но это ведь (насколько слышал, давно ведь не пользую Windows, да и она меня тоже) всего несколько секунд. Зато потом сколько удовольствия... никого не хочу обидеть, всегда рад случаю в очередной раз повозиться с API Yandex.Metrica, но вот веб-интерфейсы Метрики и Рекламной Сети Яндекса, имхо, ну очччень медленные... кое-где в регионах, коллеги говорят, вообще порой не грузятся.

 

Похоже, поторопился я с оценкой Windows и "всего несколькими секундами": доходят стороной слухи, что на M$ все по-прежнему не радужно. Подробнее см. в комментариях.

Внимание. Описанные далее действия имеют смысл при одном условии: в Метрике должна быть включена опция Показывать отчеты по РСЯ.

 

API у Яши действительно во всех отношениях супер, грех не использовать. Так что пока вот так. Потом чего-нибудь добавлю или урежу, подрефакторю, etc, а сейчас следующим образом:

Устанавливаем ruby.

После чего необходимо установить четыре джема, необходимые скрипту для работы:

  • require 'dotenv/load'
  • require 'typhoeus'
  • require 'json'
  • require 'terminal-table'

Соответственно:

 

gem install dotenv

 

, и остальные три так же. Далее переходим в директорию проекта, находим там скрытый файл .env, который редактируем, ведя ID своего счетчика Яндекс Метрика и токен доступа,

 

Внимание. Получение токена доступа подробно описано в материале Получаем отладочный токен на OAuth-сервере Яндекса.

Вы можете проверить ваш токен на этой страничке, получив посредством API Яндекс Метрика статистику вашего сайта за вчерашний или сегодняшний дни. Приложение не собирает никаких данных, впрочем, если не верите, после теста сгенерируйте токен заново.

 

Сразу затем уже можно запускать магию:

 

ruby src/start.rb

 

Скрипт попросит ввести две даты, начало и конец интересующего вас отчетного периода (после каждого ввода жмем Enter). Сразу после чего в консоль будет выведен перечень страниц событий Рекламной Службы Яндекса, количество визитов постранично и расчетный по ним доход, в конце таблицы (в скрин не влезло) - общая сумма дохода за указанный период.

Для длинных url установлено ограничение (срезается начало, чтоб табличка не рушилась) в 100 знаков, что легко, при желании, может быть изменено:

 

obj['data'].each do |i|
rows << [i['dimensions'][0]['name'].split(//).last(100).join, i['metrics'][0].to_i, i['metrics'][2].round(2)]
end

 

Все "получаемые" из API Yandex.Metrica таким образом "деньги" - это float, в силу чего округляем до второго после запятой знака, имея на выходе рубли и копейки. Например:

 

puts 'Total: ' + obj['totals'][2].round(2).to_s

 

В запросе к API Yandex.Metrica используем следующие параметры:

 

params = {
      'ids' => ENV['IDS_METRIKA'],
      'metrics' => 'ym:s:visits,ym:s:yanShows,ym:s:yanPartnerPrice',
      'dimensions' => 'ym:s:yanUrlHash',
      'lang' => 'en',
      'date1' => date1,
      'date2' => date2,
      'attribution' => 'Last',
      'accuracy' => 'full'
    }

 

, OAuth-токен передадим, как и необходимо, в HTTP-заголовке:

 

headers: {
        Accept: 'application/x-yametrika+json',
        Authorization: 'OAuth' + ENV['AUTH_TOKEN_METRIKA']
      }

 

Вот как-то так.

Продолжение следует...

Последнее изменениеСреда, 29 ноября 2023 15:14

6 комментарии

  • Комментировать Aleksej Понедельник, 10 февраля 2020 13:39 написал Aleksej

    Для себя всегда предпочитаю openSuse (Leap или Tumbleweed), также Fedora. Вероятно, чтобы начать, openSuse Leap - наилучший выбор. Ну или федорку ставьте, пакеты там поновее, чем в Leap.

    Никаких виндоус на рабочем компе у меня нет уже лет 10, подебажить возникшую проблему - для меня, увы, очень проблематично.

  • Комментировать Artem Понедельник, 10 февраля 2020 04:26 написал Artem

    Да, оба скрипта одинаковую ошибку выдают, думаю, что перебороть это - достаточно проблематично. Решил виртуалку линукса сделать, подскажите, какой лучше Линукс поставить (я до этого с ним не работал). Поставил Mint - там не получилось нормально Ruby установить

  • Комментировать Aleksej Пятница, 07 февраля 2020 15:01 написал Aleksej

    А второй скрипт - выдает ту же ошибку? вы ведь, судя по скриншоту, используете не тот, про который в этом материале, а тот, ссылка на который в начале. Т.е. в моем гитхабе на данный момент два скрипта, вытаскивающие в консоль статистику API Yandex.Metrica. Они похожи: но один заточен под данные РСЯ, другой - под иные dimensions/metrics. Репозитории легко находятся по названиям.

    Впрочем, уверен, со вторым скриптом у вас один в один та же трабла вылезет. Увы, переоценил я винду, как была Г (я не о серверах сейчас), так и осталась.

  • Комментировать Artem Пятница, 07 февраля 2020 06:22 написал Artem

    Спасибо, с этим справился, скачал архив для 64 битной винды с curl, файл с libcurl.dll положил в папку C:\Ruby26-x64\bin . Эта проблема решилась, теперь новая, сам уже час с ней борюсь - не выходить решить, может вы чем-то сможете помочь :) Заранее спасибо

  • Комментировать Aleksej Четверг, 06 февраля 2020 14:24 написал Aleksej

    Здравствуйте, после инсталляции 'typhoeus' я не вижу ошибок на вашем скриншоте. Инсталлировали, и что происходит дальше? все еще не работает? Другие три джема установили?

    P.S. Блин, как же все сложно на винде, оказывается. Думаю, ответ на этот вопрос, заданный на SO, содержит исчерпывающее объяснение проблемы 'Could not open library 'libcurl'', также способ решения: https://stackoverflow.com/questions/39377541/how-to-solve-libcurl-not-found-with-rails-on-windows

  • Комментировать Artem Четверг, 06 февраля 2020 12:32 написал Artem

    Здравствуйте, сделал всё по инструкции, но выдаёт ошибку, подскажите, пожалуйста, в чем может быть дело?

Оставить комментарий

Добавьте ваш комментарий

В блоге

Poker onRails

Комментарии в блоге

Заказать сайт

Веб-разработка. Заказать сайт

Вы можете заказать сайт-визитку, блог, корпоративный сайт, интернет-магазин или коммерческий web-портал.