|
...
|
...
|
@@ -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];
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|