GoogleTrendsApiController.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * 谷歌趋势api
  4. * @copyright 2021-浙江引擎力营销策划有限公司
  5. * @author Lc<sunshinecc1@163.com>
  6. * @since 2021-08-23
  7. */
  8. namespace App\Http\Controllers\Wap\GoogleTrendsApi;
  9. use App\Http\Controllers\Controller;
  10. use Google\GTrends;
  11. use Illuminate\Http\Request;
  12. class GoogleTrendsApiController extends Controller
  13. {
  14. public function getKeyWordResult(Request $request)
  15. {
  16. try {
  17. $gt = new GTrends([
  18. 'hl' => 'zh-CN',
  19. 'tz' => -480, # last hour
  20. 'geo' => '',
  21. ]);
  22. $keyWold = $request->input('keyWold');
  23. if (empty($keyWold)) {
  24. return response()->json([
  25. 'status' => 500,
  26. 'message' => 'error',
  27. 'data' => [],
  28. ]);
  29. }
  30. $relatedInformation = $gt->getRelatedSearchQueries([$keyWold]);
  31. $relatedInformation = $relatedInformation[$keyWold]['default']['rankedList'][0]['rankedKeyword'] ?? [];
  32. if (!empty($relatedInformation)) {
  33. foreach ($relatedInformation as $key => $value) {
  34. if ($key > 4) {
  35. unset($relatedInformation[$key]);
  36. }
  37. }
  38. }
  39. $cache['relatedInformation'] = $relatedInformation;
  40. $relatedTopic = $gt->getRelatedTopics($keyWold);
  41. $relatedTopic = $relatedTopic['default']['rankedList'][0]['rankedKeyword'] ?? [];
  42. if (!empty($relatedTopic)) {
  43. foreach ($relatedTopic as $key => $value) {
  44. if ($key > 4) {
  45. unset($relatedTopic[$key]);
  46. }
  47. }
  48. }
  49. $cache['relatedTopic'] = $relatedTopic;
  50. $interestOverTime = $gt->interestOverTime($keyWold, 0, 'today 5-y') ?? [];
  51. $dateList = [];
  52. if (!empty($interestOverTime)) {
  53. foreach ($interestOverTime as $item) {
  54. $dateList['date'][] = $item['formattedAxisTime'];
  55. $dateList['value'][] = $item['value'][0];
  56. }
  57. }
  58. $cache['dateList'] = $dateList;
  59. $interestByCountry = $gt->interestByCountry([$keyWold], 0, 'today 5-y') ?? [];
  60. $countryList = [];
  61. if (!empty($interestByCountry)) {
  62. foreach ($interestByCountry[$keyWold] as $item) {
  63. $countryList[] = [
  64. 'name' => $item['geoName'] ?? '',
  65. 'value' => $item['value'][0] ?? 0,
  66. ];
  67. }
  68. }
  69. $cache['countryList'] = $countryList;
  70. return response()->json([
  71. 'status' => 200,
  72. 'message' => 'success',
  73. 'data' => $cache,
  74. ]);
  75. } catch (\Exception $e) {
  76. return response()->json([
  77. 'status' => 500,
  78. 'message' => 'error',
  79. 'data' => $e->getMessage(),
  80. ]);
  81. }
  82. }
  83. }