| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- namespace app\adapter;
- // 头条-适配器
- use GuzzleHttp\Client;
- class ToutiaoAdapter
- {
- // 获取子账号列表
- public function getSubAccounts($pmid)
- {
- }
- // 刷新 token
- public function refreshToken($pmid)
- {
- }
- // 获取小时消耗
- public function getHourlyCost($advertiserId, $accessToken, $date): array
- {
- $page = 1;
- $data = [];
- do {
- $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/';
- $request_data = [
- 'advertiser_id'=>$advertiserId,
- 'dimensions'=>json_encode(["cdp_project_id","cdp_project_name","ad_platform_cdp_project_action_track_url","ad_platform_cdp_project_download_url","stat_time_hour"]),
- 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","convert_cnt"]),
- 'filters'=>'[{"operator":4,"values":["0"],"field":"stat_cost","type":3}]',
- 'start_time'=>$date,
- 'end_time'=>$date,
- 'order_by'=>json_encode([]),
- 'page'=>$page,
- 'page_size'=>100,
- ];
- $options = [
- "headers" => [
- 'Access-Token' => $accessToken,
- 'Content-Type' => 'application/json',
- ]
- ];
- $url = $url."?".http_build_query($request_data);
- $httpClient = new Client(['timeout' => 10]);
- $res = $httpClient->request('GET', $url, $options);
- $result = json_decode($res->getBody(), true);
- if (empty($result['data']['rows'])) {
- break;
- }
- $data = array_merge($data, $result['data']['rows']);
- $totalPage = $result['data']['page_info']['total_page'] ?? 1;
- $page++;
- } while ($page <= $totalPage);
- return $data;
- }
- // 获取媒体消耗
- public function getVideoCost($advertiserId, $accessToken, $date): array
- {
- $page = 1;
- $data = [];
- do {
- $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/';
- $request_data = [
- 'advertiser_id'=>$advertiserId,
- 'dimensions'=>json_encode(["ad_platform_material_name","material_id","cdp_project_id","cdp_project_name","stat_time_day", "ad_platform_cdp_project_action_track_url"]),
- 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","active","active_register","active_pay","valid_play","download_finish_cnt","total_play", "stat_pay_amount"]),
- 'filters'=>'[{"field":"image_mode","type":1,"operator":0,"values":["5","15"]},{"operator":4,"values":["0"],"field":"stat_cost","type":3}]',
- 'start_time'=>$date,
- 'end_time'=>$date,
- 'order_by'=>json_encode([]),
- 'page'=>1,
- 'page_size'=>100,
- ];
- $options = [
- "headers" => [
- 'Access-Token' => $accessToken,
- 'Content-Type' => 'application/json',
- ]
- ];
- $url = $url."?".http_build_query($request_data);
- $httpClient = new Client(['timeout' => 10]);
- $res = $httpClient->request('GET', $url, $options);
- $result = json_decode($res->getBody(), true);
- if (empty($result['data']['rows'])) {
- break;
- }
- $data = array_merge($data, $result['data']['rows']);
- $totalPage = $result['data']['page_info']['total_page'] ?? 1;
- $page++;
- } while ($page <= $totalPage);
- return $data;
- }
- public function getVideo($advertiserId, $accessToken, $materialIds): array
- {
- $url = 'https://api.oceanengine.com/open_api/2/file/video/get/';
- $request_data = [
- 'advertiser_id'=>$advertiserId,
- 'filtering' => json_encode([
- "material_ids" => $materialIds,
- ]),
- ];
- $options = [
- "headers" => [
- 'Access-Token' => $accessToken,
- 'Content-Type' => 'application/json',
- ]
- ];
- $url = $url."?".http_build_query($request_data);
- $httpClient = new Client(['timeout' => 10]);
- $res = $httpClient->request('GET', $url, $options);
- $result = json_decode($res->getBody(), true);
- return $result['data']['list'] ?? [];
- }
- }
|