rovereto/yandex-metrika

Яндекс.Метрики API

1.0.0 2022-06-01 06:50 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:50 UTC


README

本包旨在处理日志 API 和雅虎·指标 API。

  • 日志 API 允许获取雅虎.指标收集的非汇总数据。此 API 旨在为希望自行处理统计数据并用于解决独特分析任务的用户提供服务。
  • API 报告 API 报告允许获取有关网站访问统计信息和其他数据的详细信息,而不使用雅虎.指标界面。

收集和整理了两个长期未更新且在新版本的 Laravel 中无法运行的仓库。

Packagist License Packagist Downloads

安装

最低要求 — PHP 7.2+。

  1. 使用 Composer 安装包
    composer require rovereto/yandex-metrika

对于 Laravel <5.5

a. 在文件 app/config/app.php 中添加服务提供者

'providers' => [
    ...
    Rovereto\YandexMetrika\Providers\YandexMetrikaProvider::class,
    ...
]

b. 在文件 app/config/app.php 中添加对门面的别名

'aliases' => [
    ...
    'YandexMetrikaApi' => Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi::class,
    ...
]
  1. 发布配置文件 (config/yandex-metrika-api.php)
    php artisan vendor:publish --provider="Rovereto\YandexMetrika\Providers\YandexMetrikaProvider"

在 API 雅虎.指标中进行身份验证

为了使用雅虎.指标 API,您需要通过雅虎 OAuth 服务器获取授权令牌 (更多详情)。

要开始使用 OAuth 协议,您需要

  1. 注册 应用程序在雅虎.OAuth 上。

您可以在 创建应用程序 页面上注册应用程序。对于每个应用程序,请务必只提供名称和权限。但您提供的有关应用程序的信息越多,用户就越容易了解他们允许谁访问自己的帐户。

在注册过程中选择权限。

Права доступа

您创建的所有应用程序都在 您的应用程序列表 中列出。

  1. 复制应用程序 ID,然后以应用程序将运行的帐户登录到雅虎。

  2. 访问 URL

https://oauth.yandex.ru/authorize?response_type=token&client_id=<Идентификатор приложения>
  1. 应用程序将请求访问权限,请点击“允许”

  2. 将获取的令牌复制到包的配置文件 config/yandex-metrika-api.php 中。同时填写计数器 ID。

return [
    'token'          => env('YANDEX_METRIKA_API_TOKEN', '<Token>'),
    'counter_id'     => env('YANDEX_METRIKA_API_COUNTER_ID', <Id счётчика>),
    ...
];

或直接在 .ENV 文件中指定令牌和计数器 ID

YANDEX_METRIKA_API_TOKEN="<Token>"
YANDEX_METRIKA_API_COUNTER_ID=<Id счётчика>

使用

连接雅虎.指标 API 类的两种方式

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

use YandexMetrikaApi;

使用多个计数器。

如果您需要从不同的计数器获取数据

YandexMetrikaApi::setCounter($token, $counterId, $cacheLifetime)->имя_метода();

// Например
YandexMetrikaApi::setCounter($token, $counterId, $cacheLifetime)->getVisitsViewsUsers();

// $token и $counterId - обязательные параметры,
// параметр $cacheLifetime - необязателен (если не передан то будет использоваться из настроек)

仅更改计数器 ID

YandexMetrikaApi::setCounterId($counterId)->имя_метода();

// Например
YandexMetrikaApi::setCounterId($counterId)->getVisitsViewsUsers();

使用雅虎.指标 API 报告

请求被缓存,缓存有效期在配置文件中指定。

在请求数据时发生的错误将被写入名为 storage/logs/yandex-metrika-api.log 的日志中,每天进行轮换。

请求结果 - Rovereto\YandexMetrika\Responses\MetrikaResponse 类的实例

为了处理获取到的数据,存在一些额外的处理方法,这些方法使数据更易于使用。
要使用这些方法,请使用 adapt() 方法
并非所有获取数据的方法都有处理方法。

获取:按日获取访问量、页面浏览量和唯一访客数量

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsViewsUsers();   //По умолчанию - за последние 30 дней
//Пример
YandexMetrikaApi::getVisitsViewsUsers(10); //За последние 10 дней
//За период
YandexMetrikaApi::getVisitsViewsUsersForPeriod(DateTime $startDate, DateTime $endDate) //За указанный период
//Обработка полученных данных для построения графика HighchartsBasic line
YandexMetrikaApi::getVisitsViewsUsers()->adapt();

最受欢迎的页面

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getTopPageViews();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrikaApi::getTopPageViews(10, 50); //За последние 10 дней, максимум 50 результатов
//За период - по умолчанию максимум 10 результатов
YandexMetrikaApi::getTopPageViewsForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)   
//Обработка полученных данных
YandexMetrikaApi::getTopPageViews()->adapt();

“来源 - 摘要”报告

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getSourceSummary();      //По умолчанию за последние 30 дней
//Пример
YandexMetrikaApi::getSourceSummary(7);     //За последние 10 дней
//За период
YandexMetrikaApi::getSourcesSummaryForPeriod(DateTime $startDate, DateTime $endDate)
//Обработка полученных данных
YandexMetrikaApi::getSourcesSummary()->adapt();

“来源 - 搜索短语”报告

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getSourcesSearchPhrases();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrikaApi::getSourcesSearchPhrases(15, 20); //За последние 15 дней, максимум 20 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getSourcesSearchPhrasesForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)    
//Обработка полученных данных
YandexMetrikaApi::getSourcesSearchPhrases()->adapt();

“技术 - 浏览器”报告

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getTechPlatforms();      //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrikaApi::getTechPlatforms(12, 5); //За последние 12 дней, максимум 5 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getTechPlatformsForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)   
//Обработка полученных данных
YandexMetrikaApi::getTechPlatforms()->adapt();

考虑搜索系统后的访问量和访客数量

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsUsersSearchEngine();    //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrikaApi::getVisitsUsersSearchEngine(24, 60);  //За последние 24 дня, максимум 60 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getVisitsUsersSearchEngineForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)
//Обработка полученных данных
YandexMetrikaApi::getVisitsUsersSearchEngine()->adapt();

具有特定浏览深度的访问量

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsViewsPageDepth();       //По умолчанию за последние 30 дней, количество просмотренных страниц - 5
//Пример
YandexMetrikaApi::getVisitsViewsPageDepth(14, 30);   //За последние 14 дней, макс количество результатов - 30
//За период - по умолчанию - 5 страниц
YandexMetrikaApi::getVisitsViewsPageDepthForPeriod(DateTime $startDate, DateTime $endDate, $pages = 5)
//Обработка полученных данных
YandexMetrikaApi::getVisitsViewsPageDepth()->adapt();

按国家和区域划分的网站访问量报告

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getGeoCountry();   //По умолчанию за последние 7 дней, макс количество результатов - 100
//Пример
YandexMetrikaApi::getGeoCountry(12, 30);   //За последние 12 дней, макс количество результатов - 30
//За период - по умолчанию максимум - 100 результатов
YandexMetrikaApi::getGeoCountryForPeriod(DateTime $startDate, DateTime $endDate, $limit = 100) 
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrikaApi::getGeoCountry()->adapt()();

按地区和城市划分的网站访问量报告

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getGeoArea();   //По умолчанию за последние 7 дней, макс количество результатов - 100, Страна - Россия (id-225)
//Пример
YandexMetrikaApi::getGeoArea(12, 30, 149);   //За последние 12 дней, макс количество результатов - 30, страна - Белоруссия
//За период
YandexMetrikaApi::getGeoAreaForPeriod(DateTime $startDate, DateTime $endDate, $limit = 100, $countryId = 225)
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrikaApi::getGeoArea()->adapt()();

对于getGeoCountry()和getGeoArea()方法 - 通用数据处理方法 - adaptGeoPie()

对Yandex Metrika报告API的任意查询

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

//Параметры запроса
$params = [
    'date1'         => Carbon::today()->subDays(10),    //Начальная дата
    'date2'         => Carbon::today(),                 //Конечная дата
    'metrics'       => 'ym:s:visits',
    'filters'       => 'ym:s:pageViews>5'
];
//Запрос
YandexMetrikaApi::getMetrikaResponse($params);

使用Yandex Metrika的Log API

评估创建查询的可能性

根据其近似大小评估创建日志查询的可能性。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCapabilityResponse(
    Carbon::parse('2022-01-01'), 
    Carbon::parse('2022-04-30'), 
    [
        'ym:pv:watchID',
        'ym:pv:counterID',
        'ym:pv:date',
        'ym:pv:dateTime',
        'ym:pv:title',
        'ym:pv:URL',
        'ym:pv:referer',
    ],
    'hits');

创建日志查询

创建日志查询。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCreateResponse(
    Carbon::parse('2022-01-01'), 
    Carbon::parse('2022-04-30'), 
    [
        'ym:pv:watchID',
        'ym:pv:counterID',
        'ym:pv:date',
        'ym:pv:dateTime',
        'ym:pv:title',
        'ym:pv:URL',
        'ym:pv:referer',
    ],
    'hits');

取消未处理的日志查询

取消尚未处理的日志查询。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCancelResponse($requestId);

日志查询信息

返回日志查询信息。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getInformationResponse($requestId);

加载已处理查询的日志部分

加载已处理查询的日志部分。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getDownloadResponse($requestId, $partNumber);

if ($response instanceof \GuzzleHttp\Psr7\Stream) {
    
    while (!$response->eof()) {
        echo $response->read(1024);
    }
    
}

清除已准备加载的日志查询

清除已准备加载的日志。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCleanResponse($requestId);

日志查询列表

返回日志查询列表。

use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getLogListResponse();

贡献

请阅读CONTRIBUTING.md以获取关于我们行为准则的详细信息以及提交拉取请求的流程。

版本控制

我们使用语义版本控制进行版本控制。有关可用版本,请参阅此存储库的标签

变更日志

请参阅变更日志以了解项目的完整历史。

支持

以下支持渠道随时可供您使用

作者

还可以查看参与此项目的贡献者列表

许可

本项目采用MIT许可证(MIT),麻省理工学院许可证 - 有关详细信息,请参阅LICENSE.md文件。