ToutiaoAdapter.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace app\adapter;
  3. // 头条-适配器
  4. use GuzzleHttp\Client;
  5. class ToutiaoAdapter
  6. {
  7. // 获取子账号列表
  8. public function getSubAccounts($pmid)
  9. {
  10. }
  11. // 刷新 token
  12. public function refreshToken($pmid)
  13. {
  14. }
  15. // 获取小时消耗
  16. public function getHourlyCost($advertiserId, $accessToken, $date): array
  17. {
  18. $page = 1;
  19. $data = [];
  20. do {
  21. $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/';
  22. $request_data = [
  23. 'advertiser_id'=>$advertiserId,
  24. '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"]),
  25. 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","convert_cnt"]),
  26. 'filters'=>'[{"operator":4,"values":["0"],"field":"stat_cost","type":3}]',
  27. 'start_time'=>$date,
  28. 'end_time'=>$date,
  29. 'order_by'=>json_encode([]),
  30. 'page'=>$page,
  31. 'page_size'=>100,
  32. ];
  33. $options = [
  34. "headers" => [
  35. 'Access-Token' => $accessToken,
  36. 'Content-Type' => 'application/json',
  37. ]
  38. ];
  39. $url = $url."?".http_build_query($request_data);
  40. $httpClient = new Client(['timeout' => 10]);
  41. $res = $httpClient->request('GET', $url, $options);
  42. $result = json_decode($res->getBody(), true);
  43. if (empty($result['data']['rows'])) {
  44. break;
  45. }
  46. $data = array_merge($data, $result['data']['rows']);
  47. $totalPage = $result['data']['page_info']['total_page'] ?? 1;
  48. $page++;
  49. } while ($page <= $totalPage);
  50. return $data;
  51. }
  52. // 获取媒体消耗
  53. public function getVideoCost($advertiserId, $accessToken, $date): array
  54. {
  55. $page = 1;
  56. $data = [];
  57. do {
  58. $url = 'https://ad.oceanengine.com/open_api/v3.0/report/custom/get/';
  59. $request_data = [
  60. 'advertiser_id'=>$advertiserId,
  61. '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"]),
  62. 'metrics'=>json_encode(["stat_cost","show_cnt","click_cnt","active","active_register","active_pay","valid_play","download_finish_cnt","total_play", "stat_pay_amount"]),
  63. 'filters'=>'[{"field":"image_mode","type":1,"operator":0,"values":["5","15"]},{"operator":4,"values":["0"],"field":"stat_cost","type":3}]',
  64. 'start_time'=>$date,
  65. 'end_time'=>$date,
  66. 'order_by'=>json_encode([]),
  67. 'page'=>1,
  68. 'page_size'=>100,
  69. ];
  70. $options = [
  71. "headers" => [
  72. 'Access-Token' => $accessToken,
  73. 'Content-Type' => 'application/json',
  74. ]
  75. ];
  76. $url = $url."?".http_build_query($request_data);
  77. $httpClient = new Client(['timeout' => 10]);
  78. $res = $httpClient->request('GET', $url, $options);
  79. $result = json_decode($res->getBody(), true);
  80. if (empty($result['data']['rows'])) {
  81. break;
  82. }
  83. $data = array_merge($data, $result['data']['rows']);
  84. $totalPage = $result['data']['page_info']['total_page'] ?? 1;
  85. $page++;
  86. } while ($page <= $totalPage);
  87. return $data;
  88. }
  89. public function getVideo($advertiserId, $accessToken, $materialIds): array
  90. {
  91. $url = 'https://api.oceanengine.com/open_api/2/file/video/get/';
  92. $request_data = [
  93. 'advertiser_id'=>$advertiserId,
  94. 'filtering' => json_encode([
  95. "material_ids" => $materialIds,
  96. ]),
  97. ];
  98. $options = [
  99. "headers" => [
  100. 'Access-Token' => $accessToken,
  101. 'Content-Type' => 'application/json',
  102. ]
  103. ];
  104. $url = $url."?".http_build_query($request_data);
  105. $httpClient = new Client(['timeout' => 10]);
  106. $res = $httpClient->request('GET', $url, $options);
  107. $result = json_decode($res->getBody(), true);
  108. return $result['data']['list'] ?? [];
  109. }
  110. }