rovereto / yandex-metrika
Яндекс.Метрики API
Requires
- php: ^7.2 || ^8.0
- guzzlehttp/guzzle: ^6.0|^7.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0
- jms/serializer: ^1.8|^2.0|^3.0
This package is auto-updated.
Last update: 2024-09-29 06:14:50 UTC
README
本包旨在处理日志 API 和雅虎·指标 API。
- 日志 API 允许获取雅虎.指标收集的非汇总数据。此 API 旨在为希望自行处理统计数据并用于解决独特分析任务的用户提供服务。
- API 报告 API 报告允许获取有关网站访问统计信息和其他数据的详细信息,而不使用雅虎.指标界面。
收集和整理了两个长期未更新且在新版本的 Laravel 中无法运行的仓库。
- Logs API 使用 雅虎.指标日志 API
- API 报告使用 Yandex Metrika Laravel 5 Package
安装
最低要求 — PHP 7.2+。
- 使用 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, ... ]
- 发布配置文件 (config/yandex-metrika-api.php)
php artisan vendor:publish --provider="Rovereto\YandexMetrika\Providers\YandexMetrikaProvider"
在 API 雅虎.指标中进行身份验证
为了使用雅虎.指标 API,您需要通过雅虎 OAuth 服务器获取授权令牌 (更多详情)。
要开始使用 OAuth 协议,您需要
- 注册 应用程序在雅虎.OAuth 上。
您可以在 创建应用程序 页面上注册应用程序。对于每个应用程序,请务必只提供名称和权限。但您提供的有关应用程序的信息越多,用户就越容易了解他们允许谁访问自己的帐户。
在注册过程中选择权限。
您创建的所有应用程序都在 您的应用程序列表 中列出。
-
复制应用程序 ID,然后以应用程序将运行的帐户登录到雅虎。
-
访问 URL
https://oauth.yandex.ru/authorize?response_type=token&client_id=<Идентификатор приложения>
-
应用程序将请求访问权限,请点击“允许”
-
将获取的令牌复制到包的配置文件 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) //За указанный период //Обработка полученных данных для построения графика Highcharts › Basic 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以获取关于我们行为准则的详细信息以及提交拉取请求的流程。
版本控制
我们使用语义版本控制进行版本控制。有关可用版本,请参阅此存储库的标签。
变更日志
请参阅变更日志以了解项目的完整历史。
支持
以下支持渠道随时可供您使用
作者
- 亚历山大·伊柳京 Ilyutkin
- 沃尔加 Volga
- 亚历克斯·马内金 Alex Manekin
还可以查看参与此项目的贡献者列表。
许可
本项目采用MIT许可证(MIT),麻省理工学院许可证 - 有关详细信息,请参阅LICENSE.md文件。