|
@@ -55,7 +55,7 @@ class VideoTask extends Command |
|
@@ -55,7 +55,7 @@ class VideoTask extends Command |
|
55
|
/**
|
55
|
/**
|
|
56
|
* @var int 最大子任务
|
56
|
* @var int 最大子任务
|
|
57
|
*/
|
57
|
*/
|
|
58
|
- public $max_sub_task = 800;
|
58
|
+ public $max_sub_task = 200;
|
|
59
|
|
59
|
|
|
60
|
/**
|
60
|
/**
|
|
61
|
* @return bool
|
61
|
* @return bool
|
|
@@ -101,6 +101,7 @@ class VideoTask extends Command |
|
@@ -101,6 +101,7 @@ class VideoTask extends Command |
|
101
|
$task_project->save();
|
101
|
$task_project->save();
|
|
102
|
continue;
|
102
|
continue;
|
|
103
|
}
|
103
|
}
|
|
|
|
104
|
+ $logo_bg = $this->getImage($domainInfo);
|
|
104
|
foreach ($keyword as $val) {
|
105
|
foreach ($keyword as $val) {
|
|
105
|
$log = KeywordVideoTaskLog::where(['project_id' => $task_project->project_id, 'keyword_id' => $val->id])->first();
|
106
|
$log = KeywordVideoTaskLog::where(['project_id' => $task_project->project_id, 'keyword_id' => $val->id])->first();
|
|
106
|
if ($log){
|
107
|
if ($log){
|
|
@@ -113,7 +114,7 @@ class VideoTask extends Command |
|
@@ -113,7 +114,7 @@ class VideoTask extends Command |
|
113
|
'keyword' => $val->title,
|
114
|
'keyword' => $val->title,
|
|
114
|
'data' => json_encode(['url' => $keywordInfo['url'],'title' => $keywordInfo['title'],
|
115
|
'data' => json_encode(['url' => $keywordInfo['url'],'title' => $keywordInfo['title'],
|
|
115
|
'description' => $keywordInfo['keyword_content'], 'images' => $keywordInfo['product_list'],
|
116
|
'description' => $keywordInfo['keyword_content'], 'images' => $keywordInfo['product_list'],
|
|
116
|
- 'keywords' => $keywordInfo['keyword_list']]),
|
117
|
+ 'keywords' => $keywordInfo['keyword_list'], 'logo_bg' => $logo_bg]),
|
|
117
|
'status' => KeywordVideoTaskLog::STATUS_INIT,
|
118
|
'status' => KeywordVideoTaskLog::STATUS_INIT,
|
|
118
|
'updated_at' => date('Y-m-d H:i:s'),
|
119
|
'updated_at' => date('Y-m-d H:i:s'),
|
|
119
|
'created_at' => date('Y-m-d H:i:s'),
|
120
|
'created_at' => date('Y-m-d H:i:s'),
|
|
@@ -138,8 +139,7 @@ class VideoTask extends Command |
|
@@ -138,8 +139,7 @@ class VideoTask extends Command |
|
138
|
return true;
|
139
|
return true;
|
|
139
|
}
|
140
|
}
|
|
140
|
foreach ($subTask as $val) {
|
141
|
foreach ($subTask as $val) {
|
|
141
|
- $logo_bg = $this->getImage($val->project_id);
|
|
|
|
142
|
- $valData = (array)json_decode($val->data);
|
142
|
+ $valData = json_decode($val->data,true);
|
|
143
|
$task_id = 'v6-' . uniqid();
|
143
|
$task_id = 'v6-' . uniqid();
|
|
144
|
$data = [
|
144
|
$data = [
|
|
145
|
'project_data' => [
|
145
|
'project_data' => [
|
|
@@ -148,8 +148,8 @@ class VideoTask extends Command |
|
@@ -148,8 +148,8 @@ class VideoTask extends Command |
|
148
|
'keywords' => $valData['keywords'],
|
148
|
'keywords' => $valData['keywords'],
|
|
149
|
'description' => $valData['description'],
|
149
|
'description' => $valData['description'],
|
|
150
|
'images' => $valData['images'],
|
150
|
'images' => $valData['images'],
|
|
151
|
- 'logo'=> $logo_bg['logo'],
|
|
|
|
152
|
- 'bg'=> $logo_bg['bg']
|
151
|
+ 'logo'=> $valData['logo_bg']['logo'] ?? '',
|
|
|
|
152
|
+ 'bg'=> $valData['logo_bg']['bg'] ?? ''
|
|
153
|
],
|
153
|
],
|
|
154
|
'task_id' => $task_id,
|
154
|
'task_id' => $task_id,
|
|
155
|
'callback_url' => env('APP_URL') . '/api/video_task_callback',
|
155
|
'callback_url' => env('APP_URL') . '/api/video_task_callback',
|
|
@@ -189,23 +189,39 @@ class VideoTask extends Command |
|
@@ -189,23 +189,39 @@ class VideoTask extends Command |
|
189
|
}
|
189
|
}
|
|
190
|
|
190
|
|
|
191
|
/**
|
191
|
/**
|
|
192
|
- * @remark :根据关键字获取产品主图
|
|
|
|
193
|
- * @name :getKeywordList
|
|
|
|
194
|
- * @author :lyh
|
|
|
|
195
|
- * @method :post
|
|
|
|
196
|
- * @time :2024/2/23 16:28
|
192
|
+ * 根据关键字获取产品主图
|
|
|
|
193
|
+ * @param $keyword_id
|
|
|
|
194
|
+ * @param $project_id
|
|
|
|
195
|
+ * @param $domain
|
|
|
|
196
|
+ * @return array
|
|
197
|
*/
|
197
|
*/
|
|
198
|
public function getKeywordImage($keyword_id,$project_id,$domain){
|
198
|
public function getKeywordImage($keyword_id,$project_id,$domain){
|
|
199
|
$keywordModel = new Keyword();
|
199
|
$keywordModel = new Keyword();
|
|
200
|
$keywordInfo = $keywordModel->read(['id'=>$keyword_id]);
|
200
|
$keywordInfo = $keywordModel->read(['id'=>$keyword_id]);
|
|
|
|
201
|
+ // TODO 当内容太多时,生成视频过长, 尽量保证生成视频30秒左右, 所以需要控制文案内容长度
|
|
|
|
202
|
+ $content = $keywordInfo['keyword_content'];
|
|
|
|
203
|
+ $content_array = explode(" ", $content);
|
|
|
|
204
|
+ if (count($content_array) > 80) {
|
|
|
|
205
|
+ $content_array = preg_split("/[,,。]/u", $content);
|
|
|
|
206
|
+ $tmp = '';
|
|
|
|
207
|
+ foreach ($content_array as $val) {
|
|
|
|
208
|
+ $tmp .= $val . '.';
|
|
|
|
209
|
+ $tmp_array = explode(' ', $tmp);
|
|
|
|
210
|
+ if (count($tmp_array) > 60) {
|
|
|
|
211
|
+ $content = $tmp;
|
|
|
|
212
|
+ break;
|
|
|
|
213
|
+ }
|
|
|
|
214
|
+ }
|
|
|
|
215
|
+ }
|
|
|
|
216
|
+
|
|
201
|
//TODO::所有产品
|
217
|
//TODO::所有产品
|
|
202
|
$thumb = $this->getRecommendAndHotProducts($keywordInfo['route'],$project_id);
|
218
|
$thumb = $this->getRecommendAndHotProducts($keywordInfo['route'],$project_id);
|
|
203
|
- $keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();;
|
219
|
+ $keyword_arr = Keyword::where("project_id",$project_id)->where("status",1)->inRandomOrder()->take(10)->pluck('title')->toArray();
|
|
204
|
$data = [
|
220
|
$data = [
|
|
205
|
- 'url'=>$domain.'/'.$keywordInfo['route'],
|
221
|
+ 'url'=> 'https://' . $domain.'/'.$keywordInfo['route'],
|
|
206
|
'title'=>$keywordInfo['title'],
|
222
|
'title'=>$keywordInfo['title'],
|
|
207
|
'keyword_title'=>$keywordInfo['keyword_title'],
|
223
|
'keyword_title'=>$keywordInfo['keyword_title'],
|
|
208
|
- 'keyword_content'=>$keywordInfo['keyword_content'],
|
224
|
+ 'keyword_content'=>$content,
|
|
209
|
'product_list'=>$thumb ?? [],
|
225
|
'product_list'=>$thumb ?? [],
|
|
210
|
'keyword_list'=>$keyword_arr ?? []
|
226
|
'keyword_list'=>$keyword_arr ?? []
|
|
211
|
];
|
227
|
];
|
|
@@ -271,27 +287,26 @@ class VideoTask extends Command |
|
@@ -271,27 +287,26 @@ class VideoTask extends Command |
|
271
|
}
|
287
|
}
|
|
272
|
|
288
|
|
|
273
|
/**
|
289
|
/**
|
|
274
|
- * @remark :获取图片
|
|
|
|
275
|
- * @name :getImage
|
|
|
|
276
|
- * @author :lyh
|
|
|
|
277
|
- * @method :post
|
|
|
|
278
|
- * @time :2024/3/12 15:29
|
290
|
+ * 获取图片
|
|
|
|
291
|
+ * @param $domainInfo
|
|
|
|
292
|
+ * @return array
|
|
279
|
*/
|
293
|
*/
|
|
280
|
- public function getImage($project_id){
|
|
|
|
281
|
- $domainModel = new DomainInfo();
|
|
|
|
282
|
- $domainInfo = $domainModel->read(['project_id'=>$project_id]);
|
|
|
|
283
|
- if($domainInfo === false){
|
|
|
|
284
|
- return '';
|
|
|
|
285
|
- }
|
|
|
|
286
|
- $dom = file_get_html('https://'.$domainInfo['domain'].'/');
|
|
|
|
287
|
- $logoDom = $dom->find('.logo', 0)->find("img",0);
|
|
|
|
288
|
- if($logoDom != null){
|
|
|
|
289
|
- $logo = $logoDom->src;
|
|
|
|
290
|
- }
|
|
|
|
291
|
- $bgDom = $dom->find('.section-banner-wrap-block',0)->find('img', 0);
|
|
|
|
292
|
- if($bgDom != null){
|
|
|
|
293
|
- $bg = $bgDom->src;
|
294
|
+ public function getImage($domainInfo){
|
|
|
|
295
|
+ $logo = $bg = '';
|
|
|
|
296
|
+ try {
|
|
|
|
297
|
+ $dom = file_get_html('https://'.$domainInfo['domain'].'/');
|
|
|
|
298
|
+ $logoDom = $dom->find('.logo', 0)->find("img",0);
|
|
|
|
299
|
+ if($logoDom != null){
|
|
|
|
300
|
+ $logo = $logoDom->src;
|
|
|
|
301
|
+ }
|
|
|
|
302
|
+ $bgDom = $dom->find('.section-banner-wrap-block',0)->find('img', 0);
|
|
|
|
303
|
+ if($bgDom != null){
|
|
|
|
304
|
+ $bg = $bgDom->src;
|
|
|
|
305
|
+ }
|
|
|
|
306
|
+ $dom->clear();
|
|
|
|
307
|
+ } catch (\Exception $e) {
|
|
|
|
308
|
+ Log::error('file_get_html: ' . $domainInfo['domain'] . ', error message: ' . $e->getMessage());
|
|
294
|
}
|
309
|
}
|
|
295
|
- return ['logo'=>$logo ?? '','ng'=>$bg ?? ''];
|
310
|
+ return ['logo' => $logo, 'bg' => $bg];
|
|
296
|
}
|
311
|
}
|
|
297
|
} |
312
|
} |