作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -89,9 +89,9 @@ class Count extends Command
DB::table('gl_count')->insert($data);
}
}catch (\Exception $e){
echo date('Y-m-d H:i:s') . ' error: ' . $v['test_domain'] . '->' . $e->getMessage() . PHP_EOL;
echo date('Y-m-d H:i:s') . ' error: ' . '->' . $e->getMessage() . PHP_EOL;
}
echo date('Y-m-d H:i:s') . ' end: ' . $v['test_domain'] . PHP_EOL;
echo date('Y-m-d H:i:s') . ' end: ' . PHP_EOL;
echo $this->error;
}
... ...
... ... @@ -55,7 +55,7 @@ class VideoTask extends Command
/**
* @var int 最大子任务
*/
public $max_sub_task = 800;
public $max_sub_task = 200;
/**
* @return bool
... ... @@ -171,7 +171,7 @@ class VideoTask extends Command
*/
public function getProjectKeyword($number)
{
$keyword_arr_id = Keyword::where('video', null)->whereNotNull('keyword_content')->pluck('id')->toArray();
$keyword_arr_id = Keyword::where('video', null)->where('title', 'not like', '%-tag%')->whereNotNull('keyword_content')->pluck('id')->toArray();
$keyword_id = array_rand($keyword_arr_id, $number);
$keyword = Keyword::whereIn("id", $keyword_id)->get();
return $keyword;
... ... @@ -189,23 +189,39 @@ class VideoTask extends Command
}
/**
* @remark :根据关键字获取产品主图
* @name :getKeywordList
* @author :lyh
* @method :post
* @time :2024/2/23 16:28
* 根据关键字获取产品主图
* @param $keyword_id
* @param $project_id
* @param $domain
* @return array
*/
public function getKeywordImage($keyword_id,$project_id,$domain){
$keywordModel = new Keyword();
$keywordInfo = $keywordModel->read(['id'=>$keyword_id]);
// TODO 当内容太多时,生成视频过长, 尽量保证生成视频30秒左右, 所以需要控制文案内容长度
$content = $keywordInfo['keyword_content'];
$content_array = explode(" ", $content);
if (count($content_array) > 80) {
$content_array = preg_split("/[,,。]/u", $content);
$tmp = '';
foreach ($content_array as $val) {
$tmp .= $val . '.';
$tmp_array = explode(' ', $tmp);
if (count($tmp_array) > 60) {
$content = $tmp;
break;
}
}
}
//TODO::所有产品
$thumb = $this->getRecommendAndHotProducts($keywordInfo['route'],$project_id);
$keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();;
$keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();
$data = [
'url'=>$domain.'/'.$keywordInfo['route'],
'url'=> 'https://' . $domain.'/'.$keywordInfo['route'],
'title'=>$keywordInfo['title'],
'keyword_title'=>$keywordInfo['keyword_title'],
'keyword_content'=>$keywordInfo['keyword_content'],
'keyword_content'=>$content,
'product_list'=>$thumb ?? [],
'keyword_list'=>$keyword_arr ?? []
];
... ... @@ -271,23 +287,36 @@ class VideoTask extends Command
}
/**
* @remark :获取图片
* @name :getImage
* @author :lyh
* @method :post
* @time :2024/3/12 15:29
* 获取图片
* @param $domainInfo
* @return array
*/
public function getImage($domainInfo){
$logo = $bg = '';
try {
$dom = file_get_html('https://'.$domainInfo['domain'].'/');
$logoDom = $dom->find('.logo', 0)->find("img",0);
if($logoDom != null){
$logo = $logoDom->src;
}
$bgDom = $dom->find('.section-banner-wrap-block',0)->find('img', 0);
if($bgDom != null){
$bg = $bgDom->src;
$elements = $dom->find('.section-banner-wrap-block');
if (count($elements) >= 2) {
foreach ($elements as $v){
$image = $v->find('img', 0);
if($image != null){
break;
}
}
} else {
$image = $elements->find('img', 0);
}
if($image != null){
$bg = $image->src;
}
$dom->clear();
return ['logo'=>$logo ?? '','bg'=>$bg ?? ''];
} catch (\Exception $e) {
Log::error('file_get_html: ' . $domainInfo['domain'] . ', error message: ' . $e->getMessage());
}
return ['logo' => $logo, 'bg' => $bg];
}
}
... ...
... ... @@ -266,7 +266,7 @@ class Demo extends Command
// }
public function handle(){
$domainModel = new DomainInfo();
$domainInfo = $domainModel->read(['project_id'=>1]);
$domainInfo = $domainModel->read(['project_id'=>45]);
if($domainInfo === false){
dd('11111');
}
... ... @@ -277,12 +277,25 @@ class Demo extends Command
if($logoDom != null){
$logo = $logoDom->src;
}
$bgDom = $dom->find('.section-banner-wrap-block',0)->find('img', 0);
if($bgDom != null){
$bg = $bgDom->src;
$elements = $dom->find('.section-banner-wrap-block');
if (count($elements) >= 2) {
foreach ($elements as $v){
$image = $v->find('img', 0);
if($image != null){
break;
}
}
} else {
$image = $elements->find('img', 0);
}
if($image != null){
$bg = $image->src;
}
if($image != null){
$bg = $image->src;
}
// return $logo;
dd(['logo'=>$logo ?? '','ng'=>$bg ?? '']);
dd(['logo'=>$logo ?? '','bg'=>$bg ?? '']);
// $projectModel = new Project();
// $list = $projectModel->list(['delete_status'=>0,'type'=>['!=',0]]);
// foreach ($list as $v1){
... ...
... ... @@ -29,7 +29,7 @@ class KeywordsController extends BaseController
->orWhere('main_keywords', 'like' , '%'.$this->map['search'].'%')->pluck('project_id')->toArray();
$projectModel = new Project();
$lists = $projectModel->formatQuery(['id'=>['in',$ids]])->with('payment')->with('deploy_build')
->with('deploy_optimize')->get()->toArray();
->with('deploy_optimize')->with('domainInfo')->get()->toArray();
$this->response('success',Code::SUCCESS,$lists);
}
}
... ...
... ... @@ -114,6 +114,7 @@ class ProjectController extends BaseController
'gl_project_deploy_optimize.quality_mid AS quality_mid',
'gl_project_deploy_optimize.design_mid AS design_mid',
'gl_project_deploy_optimize.api_no AS api_no',
'gl_project_deploy_optimize.brand_keyword AS brand_keyword',
];
return $select;
}
... ...
... ... @@ -30,6 +30,7 @@ class ProjectKeywordController extends BaseController
}
$data['search_keywords'] = $info['search_keywords'];
$data['customer_keywords'] = $info['customer_keywords'];
$data['brand_keyword'] = $info['brand_keyword'];
$this->response('success',Code::SUCCESS,$data);
}
... ...
... ... @@ -778,7 +778,7 @@ class ProjectLogic extends BaseLogic
$token = $common->encrypt($param);
$res = Http::withoutVerifying()->get($url, ['token' => $token])->json();
if(empty($res['code']) || $res['code'] != 200){
$this->fail('ProjectToHagro error');
$this->fail($res['msg']);
}
return true;
}
... ...
... ... @@ -47,26 +47,18 @@ class TranslateLogic extends BaseLogic
$languageInfo = $this->getLanguage($this->param['language_id']);
// 原始校对内容
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
//获取当前URl的所有文本内容
$text_array = $this->getUrlRead($url);
// 原始校对程序
$old_key = [];//key值组成数据
if($info !== false){
$data_read = json_decode($info['data']);
foreach ($data_read as $k => $v){
// if(!in_array($k,$text_array)){
// $arr2[] = $k;
// }
// $old_key[] = $k;
$data[] = [$k => $v];
}
return $this->success($data);
}else{
$arr2 = array_values(array_diff($text_array, $old_key));
}
if(!empty($arr2)){
//获取当前URl的所有文本内容
$text_array = $this->getUrlRead($url);
$i = 0;
TranslateText:
$translate_list = Translate::tran($arr2, $languageInfo['short']);
$translate_list = Translate::tran($text_array, $languageInfo['short']);
if(empty($translate_list)){
if ($i < 3) {
$i++;
... ... @@ -74,21 +66,57 @@ class TranslateLogic extends BaseLogic
}
$this->fail('翻译失败,请稍后重试!');
}
if(count($arr2) == 1){
if(count($text_array) == 1){
$data[] = [
$arr2[0]=>$translate_list
$text_array[0]=>$translate_list
];
}else{
foreach ($arr2 as $k => $v){
foreach ($text_array as $k => $v){
$data[] = [
$v=>$translate_list[$k]
];
}
}
}
return $this->success($data);
}
}
// $old_key = [];//key值组成数据
// if($info !== false){
// $data_read = json_decode($info['data']);
// foreach ($data_read as $k => $v){
//// if(!in_array($k,$text_array)){
//// $arr2[] = $k;
//// }
//// $old_key[] = $k;
// $data[] = [$k => $v];
// }
// }else{
// $arr2 = array_values(array_diff($text_array, $old_key));
// }
// if(!empty($arr2)){
// $i = 0;
// TranslateText:
// $translate_list = Translate::tran($arr2, $languageInfo['short']);
// if(empty($translate_list)){
// if ($i < 3) {
// $i++;
// goto TranslateText;
// }
// $this->fail('翻译失败,请稍后重试!');
// }
// if(count($arr2) == 1){
// $data[] = [
// $arr2[0]=>$translate_list
// ];
// }else{
// foreach ($arr2 as $k => $v){
// $data[] = [
// $v=>$translate_list[$k]
// ];
// }
// }
// }
/**
* @remark :获取图片列表
... ...
... ... @@ -227,9 +227,10 @@ class Project extends Base
*/
public function domainInfo()
{
return self::hasOne(\App\Models\Domain\DomainInfo::class, 'project_id', 'project_id')->select('project_id', 'domain');;
return self::hasOne(\App\Models\Domain\DomainInfo::class, 'project_id', 'id')->select('project_id', 'domain');
}
public function setLevelAttribute($value)
{
$this->attributes['level'] = Arr::arrToSet($value);
... ...