作者 赵彬吉

update

... ... @@ -3,6 +3,7 @@
namespace App\Http\Controllers\Bside;
use App\Helper\Arr;
use App\Helper\GoogleSpeedApi;
use App\Helper\QuanqiusouApi;
use App\Http\Logic\Aside\Project\ProjectLogic;
... ... @@ -10,6 +11,9 @@ use App\Http\Logic\Bside\RankDataLogic;
use App\Models\RankData\RankData;
use App\Models\RankData\Speed as GoogleSpeedModel;
use App\Services\BatchExportService;
use App\Utils\HttpUtils;
use GuzzleHttp\Client;
use GuzzleHttp\Promise\Utils;
use Illuminate\Support\Facades\Storage;
/**
... ... @@ -162,4 +166,56 @@ class RankDataController extends BaseController
// return Storage::disk('runtime')->download($file); //直接下载
return $this->success(['url' => $fileurl]);
}
/**
* 实时获取关键词排名
* @author zbj
* @date 2023/5/16
*/
public function get_google_rank(){
$url_arr = parse_url($this->request['url']);
$param = [
'keyword' => trim($this->request['keyword']),
'url' => $url_arr['host'] ?? $url_arr['path'],
'extend_urls' => $this->request['extend_urls'],
'lang' => $this->request['lang'],
'use_groups' => 2
];
if ($this->request['w']) {
$data = [
'position' => 0,
'image_position' => 0,
'video_position' => 0,
];
$client = new Client([
'base_uri' => 'http://45.136.131.71:8000',
'timeout' => '20'
]);
$promises['position'] = $client->getAsync('/luminati_rank?'.Arr::query($param));
$promises['image_position'] = $client->getAsync('/google_image?'.Arr::query($param));
$promises['video_position'] = $client->getAsync('/google_video?'.Arr::query($param));
// 等待所有请求响应完成
$results = Utils:: settle($promises)->wait();
foreach ($results as $key => $result) {
if ($result['state'] == 'fulfilled') {
$res = Arr::s2a($result['value']->getBody()->getContents());
$data[$key] = $res['position'] ?? 0;
}
}
}else{
$data = [
'position' => 0,
];
$res = HttpUtils::get('http://45.136.131.71:8000/luminati_rank', $param);
if ($res) {
$res = Arr::s2a($res);
$data['position'] = $res['position'];
}
}
return $this->success($data);
}
}
... ...
... ... @@ -68,13 +68,14 @@ class RankDataLogic extends BaseLogic
$quanqiusou_api = new QuanqiusouApi();
$lang_data = $quanqiusou_api->getLangRankData($api_no);
$lang_data = Arr::setValueToKey($lang_data, 'language');
$data['langs'] = [];
foreach($project['deploy_optimize']['minor_languages'] as $lang){
$remain_day = $lang_data[$lang['tl']]['dabiao_day'] ?? 0;
$data['langs'][$lang['tl'] ?? ''] = [
'lang_text' => Translate::getTls($lang['tl'] ?? ''),
'keyword_num' => $lang['keywords'] ?? 0,
'reach_day' => $lang_data[$lang['tl']]['dabiao_day'] ?? 0,
'home_cnt' => $lang_data[$lang['tl']]['home_cnt'] ?? 0,
'remain_day' => ($lang['type']??0) == 1 ? $data['project']['remain_day'] : $lang['service_day'] - $remain_day,
'type' => $lang['type'] ?? 0, //1 项目关键词 项目天数 2 保证首页关键词 项目达标天数
];
... ... @@ -180,9 +181,12 @@ class RankDataLogic extends BaseLogic
}
}
}
$domain_arr = explode(':', $domain_text);
$v = [
'keyword' => $key,
'domain' => $domain_text,
'domain_type' => $domain_arr[0],
'domain' => $domain_arr[1],
'domain_text' => $domain_text,
'g' => $last['g'], //1核心关键词
'position' => $data,
];
... ...
... ... @@ -259,6 +259,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/speed', [\App\Http\Controllers\Bside\RankDataController::class, 'speed'])->name('rank_data_speed');
Route::any('/export', [\App\Http\Controllers\Bside\RankDataController::class, 'export'])->name('rank_data_export');
Route::any('/export_history', [\App\Http\Controllers\Bside\RankDataController::class, 'export_history'])->name('rank_data_export_history');
Route::any('/get_google_rank', [\App\Http\Controllers\Bside\RankDataController::class, 'get_google_rank'])->name('rank_data_get_google_rank');
});
... ...