|
...
|
...
|
@@ -55,7 +55,7 @@ class VideoTask extends Command |
|
|
|
/**
|
|
|
|
* @var int 最大子任务
|
|
|
|
*/
|
|
|
|
public $max_sub_task = 800;
|
|
|
|
public $max_sub_task = 200;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
...
|
...
|
@@ -101,6 +101,7 @@ class VideoTask extends Command |
|
|
|
$task_project->save();
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$logo_bg = $this->getImage($domainInfo);
|
|
|
|
foreach ($keyword as $val) {
|
|
|
|
$log = KeywordVideoTaskLog::where(['project_id' => $task_project->project_id, 'keyword_id' => $val->id])->first();
|
|
|
|
if ($log){
|
|
...
|
...
|
@@ -113,7 +114,7 @@ class VideoTask extends Command |
|
|
|
'keyword' => $val->title,
|
|
|
|
'data' => json_encode(['url' => $keywordInfo['url'],'title' => $keywordInfo['title'],
|
|
|
|
'description' => $keywordInfo['keyword_content'], 'images' => $keywordInfo['product_list'],
|
|
|
|
'keywords' => $keywordInfo['keyword_list']]),
|
|
|
|
'keywords' => $keywordInfo['keyword_list'], 'logo_bg' => $logo_bg]),
|
|
|
|
'status' => KeywordVideoTaskLog::STATUS_INIT,
|
|
|
|
'updated_at' => date('Y-m-d H:i:s'),
|
|
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
...
|
...
|
@@ -138,8 +139,7 @@ class VideoTask extends Command |
|
|
|
return true;
|
|
|
|
}
|
|
|
|
foreach ($subTask as $val) {
|
|
|
|
$logo_bg = $this->getImage($val->project_id);
|
|
|
|
$valData = (array)json_decode($val->data);
|
|
|
|
$valData = json_decode($val->data,true);
|
|
|
|
$task_id = 'v6-' . uniqid();
|
|
|
|
$data = [
|
|
|
|
'project_data' => [
|
|
...
|
...
|
@@ -148,8 +148,8 @@ class VideoTask extends Command |
|
|
|
'keywords' => $valData['keywords'],
|
|
|
|
'description' => $valData['description'],
|
|
|
|
'images' => $valData['images'],
|
|
|
|
'logo'=> $logo_bg['logo'],
|
|
|
|
'bg'=> $logo_bg['bg']
|
|
|
|
'logo'=> $valData['logo_bg']['logo'] ?? '',
|
|
|
|
'bg'=> $valData['logo_bg']['bg'] ?? ''
|
|
|
|
],
|
|
|
|
'task_id' => $task_id,
|
|
|
|
'callback_url' => env('APP_URL') . '/api/video_task_callback',
|
|
...
|
...
|
@@ -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,27 +287,26 @@ class VideoTask extends Command |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :获取图片
|
|
|
|
* @name :getImage
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/3/12 15:29
|
|
|
|
* 获取图片
|
|
|
|
* @param $domainInfo
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function getImage($project_id){
|
|
|
|
$domainModel = new DomainInfo();
|
|
|
|
$domainInfo = $domainModel->read(['project_id'=>$project_id]);
|
|
|
|
if($domainInfo === false){
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
$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;
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
$dom->clear();
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
Log::error('file_get_html: ' . $domainInfo['domain'] . ', error message: ' . $e->getMessage());
|
|
|
|
}
|
|
|
|
return ['logo'=>$logo ?? '','ng'=>$bg ?? ''];
|
|
|
|
return ['logo' => $logo, 'bg' => $bg];
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|