yametrika: скрипт для простого отчёта о посещаемости с Яндекс.метрики


Здравствуйте. В посте я писал про скрипт статистики. Сейчас хочу ещё раз рассказать о том, что он делает, а также как его использовать.

Функционал:

  1. Берёт api токен, смотрит список счётчиков, добавляет их id и названия в массив;
  2. Проходит по циклу массива в другой функции и вызывает информацию о посещаемости;
  3. Формирует новый массив, в котором добавляется название, количество посетителей и просмотров за вчера;
  4. В index.php вызывается функция, формирующая массив из П.3;
  5. Выводится заголовок h1 и таблица со столбцами: сайт (это же и название), посетителей, просмотров.

никакого дизайна нет.

Перед работой со скриптом:

  1. Начинаем регистрацию нового приложения на странице https://oauth.yandex.ru/client/new
  2. В «Название» пишем любое удобное для вас название, в раскрывающемся списке «Яндекс.Метрики» ставим галочку на «Получение статистики, чтение параметров своих и доверенных счётчиков». Отмечаем
    Отмечаем "Веб-сервисы" и кликаем по "Подставить URL для разработки".
  3. После нажатия по кнопке "Создать приложение" получаем для дальнейших действий «Id приложения» и «Пароль приложения» (нам нужен только id)
  4. Введите получившийся код в адрес, заменив "", и нажмите "разрешить" на появившейся странице:
    https://oauth.yandex.ru/authorize?response_type=token&client_id=

Установка скрипта

Нужно, чтобы у вас на сервере/хостинге был php.

  • Либо перейдите в папку, куда планируете закидывать скрипт, через консоль и введите команду
    git clone https://github.com/denis-skripnik/yametrika
    либо скачайте архив и распакуйте его;
  • Перейдите в папку yametrika;
  • Откройте functions.php и измените значение переменной $authToken из первой функции: сюда надо вставить вместо "*" ваш токен, полученный после разрешения доступа.
  • Сохраняем и открываем страницу сайт.ру/yametrika-master (или без папки, если копировали в корень).

    Для разработчиков

    1. Используется функция, позволяющая передать в заголовках http api токен и другую информацию:
      function curl_file_get_contents($url)
      {
      $authToken = '***';
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-yametrika+json', 'Authorization: OAuth' . $authToken]);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
      $obj = curl_exec($ch);
      curl_close($ch);
      return $obj;
      }
    2. Вторая получает список счётчиков и возвращает название и id каждого:
      function counters_list() {
      $url = 'https://api-metrika.yandex.net/management/v1/counters';
      $params = array(
      'sort' => 'Hits',
      'status' => 'Active'
      );
      $obj = curl_file_get_contents($url . '?' . http_build_query($params));
      $obj = json_decode($obj, true);
      $counters = $obj['counters'];
      $list = [];
      foreach ($counters as $num => $counter) {
      $list[$num] = ['id' => $counter['id'], 'site' => $counter['name']];
      }
      return $list;
      }
    3. Третья проходит по циклу со списком id счётчиков и добавляет в массив информацию для вывода на странице:
      function my_counters() {
      $list_counters = counters_list();
      $my_counters = [];
      foreach ($list_counters as $num => $counter) {
      $url = 'https://api-metrika.yandex.ru/stat/v1/data';
      $params = array(
      'ids' => $counter['id'],
      'metrics' => 'ym:pv:users,ym:pv:pageviews',
      'code_status' => 'CS_OK',
      'date1' => 'yesterday',
      'date2' => 'yesterday'
      );
      $obj = curl_file_get_contents($url . '?' . http_build_query($params));
      $obj = json_decode($obj, true);
      $my_counters[$num] = ['site' => $counter['site'], 'result' => $obj['data'][0]['metrics']];
      }
      return $my_counters;
      }
    4. В index.php производится вывод:
      require_once 'functions.php';
      $data = my_counters();
      echo '<h1>Статистика за вчерашний день по всем сайтам аккаунта</h1>
      <table><thead><tr><th>Сайт</th><th>Посетителей</th><th>Просмотров</th></tr></thead>';
      foreach ($data as $yametrika) {
      echo '<tr><td>'.$yametrika['site'].'<td>'.$yametrika['result'][0].'</td><td>'.$yametrika['result'][1].'</td></tr>';
      }
      echo '</table>';

Всё

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

Благодарю за внимание. До встречи в новых постах.


Comments 3


Здравствуйте, @denis-skripnik. Вы получили 100% апвот от UPRomo за сожженные GBG. Продвигали сей пост в очереди: @upromo.
Апвоут UPRomo увеличивает общую выплату за пост примерно на 131.579 GBG.

После сжигания GBG путём клика по кнопке "Продвинуть" под постом на golos.id или аналогичной на golos.io (она появляется после нажатия на 3 точки) пост попадает в очередь.
Находящийся на первом месте до начала следующего раунда получит ап. Остальные же - позже. Ваш пост будет находиться в очереди на ап до момента выплаты, после неё происходит удаление оттуда, сожженные GBG возвратить не возможно.
Все участники UPRomo имеют шанс попасть в промо, если количество сожженных токенов >= суммы одного из находящихся в топ 20 постов.
Кроме того, в UPRomo есть рейтинги сжигающих за месяц.


Делегат @denis-skripnik на golos.id или golos.io.

26.06.2019 09:36
1

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
shafarevich, chugoi, spinner, andrvik, boddhisattva, ili, cats, t3ran13, cryptobandera, maksina, ksantoprotein, dr-boo, midnight, maryatekun, sterh, optimist, nefer, kudesnikaltay, max-max, photofreediver, polyakov, dmitrijv, ramzansamatov, d0z4t0r, zaria, anykeycheg, benken, abloud, turkish-r, alexfisher, wallyt, prifix, vp-cosmos, oleg257, acidgarry, student61, narin, borisss, sergiy, volv, zlata777, tatyanamishenko, semitsvetik, olgaxx, lilia, brainmechanic, zolotova1703, tnam0rken, voltash, voronchihin, dayver, gans91, shal891, kalter, kvg, denispavlov, verdon, candy777, apnigrich, rosava, renat242, veta-less, qm7, chin, hyipov, pkrugloff, arhiopteriks, littleboo, bumex2008, lelya, tom123, virt, naiger, massatela, carpe-diem, cryptenthusiast, boltyn, dignityinside, marko44, mixtrum, status7, sevaev, mirgais, vitalson, mjataura, denisya, arsar, blange, m0ssa99, goodnews, siddxa, marigold, jahspear, astrofilosof, dim447, charisma, evgeniy73, kanenakat, samael27, yurij12, egoryana, lvivrugby, esperos, chimborazo, nerengot, korzhimanov, felicita, seagull15, criptomir, atvalevsky, upper, evgeniybb, doublingseason, tapejara, dany2323, necrogenesis, wenderccc, alte, andristrendnews, erased
Поэтому я тоже проголосовал за него!

Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!


Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"


dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:

27.06.2019 05:12
0

@denis-skripnik, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:

  • Голосов - 4 позицию - 584 Голосов
  • Потенциальных Выплаты - 3 позицию - 479,684 GBG
27.06.2019 06:31
0