×
Ruby on Rails: постинг твитов через Twitter API (04 нояб 2017)

Практикуемся в Ruby on Rails.

Идея API Яндекс Метрика и Google Charts

Больше
1 год 9 мес. назад #1 от Aleksej
Aleksej создал эту тему: API Яндекс Метрика и Google Charts
Публикую, как обещал, код, иллюстрирующий возможность построения виджетов для сайта на основе API Яндекс Метрика и Google Charts.
Демо - на страничке блога .


<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});
      google.charts.setOnLoadCallback(drawChart);
      function drawChart() {

        var data = google.visualization.arrayToDataTable([
          ['Country', 'Visits'],
<?
$obj = json_decode(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=***********&dimensions=ym:s:regionCountry&metrics=ym%3As%3Avisits&oauth_token=******************************'), true);

for( $i = 0; $i < 12; $i++){
	echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],';
}
?>
        ]);

        var options = {
          title: 'Visits to Masterpro.ws'
        };

        var chart = new google.visualization.PieChart(document.getElementById('piechart'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="piechart" style="width: 900px; height: 500px;"></div>

  </body>
</html>

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 9 мес. назад - 1 год 9 мес. назад #2 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Хм. "Не для протокола, Шарапов. А для души моей слова тебе..." как-то так. Третьи сутки висит на модерации в клубе Яндекс Метрика сообщение, которое "как есть" публикую далее - может, хоть после этого отмодерируют наконец и опубликуют. Почему и питаю всю свою сознательную жизнь стойкую неприязнь к офисам: вот по тому самому. Один лажанулся, второй типа не заметил, третий и вправду не заметил, четвертая "умеет ладить с сослуживцами", пятым-десятым вообще нихрена не нужно, окромя в нужный момент лизнуть задницу высокочтимому своему начальству, дружно сложившись всем стадом на покупку презента к днюхе (недавно только с пеной у рта рассказывал московский френд про такое). Не раз убеждался, к слову сказать, что ребята из спорта в офисах не приживаются: иная совершенно ментальность, иные стандарты поведения. Круговая порука мажет как копоть, а в результате - имеем то, что имеем: довольно критичную уязвимость и весьма странную несуразность, о чем и речь в процитированном сообщении. Но - "дальнейшее - молчание", яндексовцы предпочитают у себя в клубе обсуждать более интересные темы: вот научить бы очередную девочку, как ей прознать по отчетам, откуда, какого полу, из какого региона и кто именно забрел к ней на сайт - вот это да, вот это конструктивно и познавательно. А все остальное - хрень:


Доброго дня.

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

  1. Часов 12 назад удалил приложение, на основе которого был создан отладочный токен, и создал новое приложение и новый токен. До сих пор первый токен несуществующего уже приложения работает. Я чего-то не понимаю, вероятно; оно так и должно быть? А безопасность как же?
  2. Не вижу cross-origin заголовков в ответе сервера Метрики. Не ожидал, неудобно работать. Так и задумывалось? Почему?

Последнее редактирование: 1 год 9 мес. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 8 мес. назад #3 от serge
serge ответил в теме API Яндекс Метрика и Google Charts
Разработчики обновили Google Charts до v.44, которая оказалась практически неработоспособной. Решение в том, чтобы временно использовать предыдущий релиз (43). Всего лишь исправьте одну строчку, все отлично пашет:

Seems to be a bad release (v44). Until it is fixed, the workaround is to explicitly specify previous version of the API to load instead of using current:

-     google.charts.load('current', {'packages':['gantt']});
+     google.charts.load('43', {'packages':['gantt']});


А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 8 мес. назад - 1 год 8 мес. назад #4 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Highcharts
Код виджета, демо которого возможно увидеть в статье API Яндекс Метрика и Highcharts .


<!DOCTYPE HTML>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Masterpro.ws. External referer</title>
		<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
		<script type="text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
            type: 'pie',
            options3d: {
                enabled: true,
                alpha: 45,
                beta: 0
            }
        },
        title: {
            text: 'Masterpro.ws. External referer'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                depth: 35,
                dataLabels: {
                    enabled: true,
                    format: '{point.name}'
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Доля внешних переходов',
            data: [
                <?
$obj = json_decode(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=**********&dimensions=ym:s:externalRefererPathLevel1&metrics=ym:s:visits&oauth_token=*****************************'), true);

for( $i = 0; $i < count($obj['data']); $i++){
	echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],';
}
?>
            ]
        }]
    });
});
		</script>
	</head>
	<body>

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-3d.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="height: 500px"></div>
	</body>
</html>
Последнее редактирование: 1 год 8 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 8 мес. назад - 1 год 8 мес. назад #5 от serge
serge ответил в теме API Яндекс Метрика и Google Charts
B) Исправили:

Hello everyone,
These issues were due to propagation delays/caching issues with us pushing out a new a version of Google Charts. I strongly recommend against using the workaround suggested in this thread. Using the workaround will mean that you will not get any bugfixes or new features. While this might be the right thing to do for some users, we expect that it's not the right thing for the majority. The issues you're experiencing should no longer be occurring, so it should be safe to switch back to 'current' or 'upcoming'.


А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 1 год 8 мес. назад от serge.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 8 мес. назад #6 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Надо кэш прикручивать, API Метрика работает, увы, совсем небезупречно... в 5 часов утра, например, вполне возможно получить в ответ на запрос вот эдакое сообщение:

{"errors":[{"error_type":"backend_error","message":"Запрос не может быть обработан в данный момент из-за возросшей нагрузки. Пожалуйста, отправьте запрос повторно через несколько минут."}],"code":503,"message":"Запрос не может быть обработан в данный момент из-за возросшей нагрузки. Пожалуйста, отправьте запрос повторно через несколько минут."}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 6 мес. назад #7 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Нелучшая, следует отметить, особенность Google Chart - TOS не разрешает использовать скрипты локально, т.е. вы не вправе загрузить скрипты на свой сайт и использовать их таким образом. А новые версии чарта не всегда работают безупречно; нам с вами остается только мониторить страничку своего сайта, на которой используется Google Chart, и время от времени соотносить ее неработоспособность с вот примерно такими сообщениями разработчиков, как приведенный ниже пост... без комментариев.


We are about to push a new Google Charts Production Release - V45.

The production release was delayed until now because we were trying to work around a problem, but we were unsuccessful. However, it turns out this problem (which was displaying more than one Material chart in the same page) also existed in the previous release (v42) so this new release will not be any worse than that. If you need this fixed, please try frozen v43 or v44.

The purpose of this push is to update the old jsapi-loaded library with a version that is close to the previously released v44. We are doing this primarily to incorporate some security fixes that are already part of v44 into the jsapi loaded release, and as such, there are very few additional bug fixes and these are unlikely to be visible to people.

The last time we were successful updating the old jsapi loaded library was for v42. So if you are still using that version of the code, you should look at the release notes for v43 and v44 to see what has changed.

If your pages load the library this way, you will be affected by this production release.

If you have problems with this production release, you may want to switch to loading the frozen v42, so your code will look like this...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 5 мес. назад #8 от Прохожий
Прохожий ответил в теме API Яндекс Метрика и Google Charts
Имхо, выдирать из контекста статистики только 12 стран суть нелучшее решение... процентное соотношение формируется неправильно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 5 мес. назад #9 от serge
serge ответил в теме API Яндекс Метрика и Google Charts

Прохожий пишет: Имхо, выдирать из контекста статистики только 12 стран суть нелучшее решение... процентное соотношение формируется неправильно.



Меняем, в цикле, эту строчку:

for( $i = 0; $i < 12; $i++){


на эту:

for( $i = 0; $i < count($obj['data']); $i++){

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.