作者 刘锟

update

@@ -136,7 +136,7 @@ class HtmlCollect extends Command @@ -136,7 +136,7 @@ class HtmlCollect extends Command
136 } 136 }
137 137
138 138
139 - $update_log = UpdateLog::whereNotIn('project_id', [626])->where('status', UpdateLog::STATUS_COM)->where('collect_status', UpdateLog::COLLECT_STATUS_UN)->orderBy('project_id', 'asc')->first(); 139 + $update_log = UpdateLog::where('status', UpdateLog::STATUS_COM)->where('collect_status', UpdateLog::COLLECT_STATUS_UN)->orderBy('project_id', 'asc')->first();
140 if (!$update_log) { 140 if (!$update_log) {
141 return false; 141 return false;
142 } 142 }
@@ -197,7 +197,9 @@ class HtmlCollect extends Command @@ -197,7 +197,9 @@ class HtmlCollect extends Command
197 $img = $result_img[2] ?? []; 197 $img = $result_img[2] ?? [];
198 foreach ($img as $vi) { 198 foreach ($img as $vi) {
199 $check_vi = $this->url_check($vi, $project_id, $domain, $web_url_domain, $home_url); 199 $check_vi = $this->url_check($vi, $project_id, $domain, $web_url_domain, $home_url);
200 - $check_vi && $source[] = $check_vi; 200 + if ($check_vi && (!in_array($check_vi, $source))) {
  201 + $check_vi && $source[] = $check_vi;
  202 + }
201 } 203 }
202 204
203 //js 205 //js
@@ -205,7 +207,9 @@ class HtmlCollect extends Command @@ -205,7 +207,9 @@ class HtmlCollect extends Command
205 $js = $result_js[2] ?? []; 207 $js = $result_js[2] ?? [];
206 foreach ($js as $vj) { 208 foreach ($js as $vj) {
207 $check_vj = $this->url_check($vj, $project_id, $domain, $web_url_domain, $home_url); 209 $check_vj = $this->url_check($vj, $project_id, $domain, $web_url_domain, $home_url);
208 - $check_vj && $source[] = $check_vj; 210 + if ($check_vj && (!in_array($check_vj, $source))) {
  211 + $check_vj && $source[] = $check_vj;
  212 + }
209 } 213 }
210 214
211 //video 215 //video
@@ -213,7 +217,9 @@ class HtmlCollect extends Command @@ -213,7 +217,9 @@ class HtmlCollect extends Command
213 $video = $result_video[2] ?? []; 217 $video = $result_video[2] ?? [];
214 foreach ($video as $vv) { 218 foreach ($video as $vv) {
215 $check_vv = $this->url_check($vv, $project_id, $domain, $web_url_domain, $home_url); 219 $check_vv = $this->url_check($vv, $project_id, $domain, $web_url_domain, $home_url);
216 - $check_vv && $source[] = $check_vv; 220 + if ($check_vv && (!in_array($check_vv, $source))) {
  221 + $check_vv && $source[] = $check_vv;
  222 + }
217 } 223 }
218 224
219 //css 225 //css
@@ -221,7 +227,9 @@ class HtmlCollect extends Command @@ -221,7 +227,9 @@ class HtmlCollect extends Command
221 $css = $result_css[2] ?? []; 227 $css = $result_css[2] ?? [];
222 foreach ($css as $vc) { 228 foreach ($css as $vc) {
223 $check_vc = $this->url_check($vc, $project_id, $domain, $web_url_domain, $home_url); 229 $check_vc = $this->url_check($vc, $project_id, $domain, $web_url_domain, $home_url);
224 - $check_vc && $source[] = $check_vc; 230 + if ($check_vc && (!in_array($check_vc, $source))) {
  231 + $check_vc && $source[] = $check_vc;
  232 + }
225 } 233 }
226 234
227 //css background 235 //css background
@@ -229,7 +237,9 @@ class HtmlCollect extends Command @@ -229,7 +237,9 @@ class HtmlCollect extends Command
229 $css_b = $result_css_b[1] ?? []; 237 $css_b = $result_css_b[1] ?? [];
230 foreach ($css_b as $vc_b) { 238 foreach ($css_b as $vc_b) {
231 $check_vc_b = $this->url_check($vc_b, $project_id, $domain, $web_url_domain, $home_url); 239 $check_vc_b = $this->url_check($vc_b, $project_id, $domain, $web_url_domain, $home_url);
232 - $check_vc_b && $source[] = $check_vc_b; 240 + if ($check_vc_b && (!in_array($check_vc_b, $source))) {
  241 + $check_vc_b && $source[] = $check_vc_b;
  242 + }
233 } 243 }
234 244
235 //a标签下载资源 245 //a标签下载资源
@@ -237,7 +247,9 @@ class HtmlCollect extends Command @@ -237,7 +247,9 @@ class HtmlCollect extends Command
237 $down = $result_a[2] ?? []; 247 $down = $result_a[2] ?? [];
238 foreach ($down as $vd) { 248 foreach ($down as $vd) {
239 $check_vd = $this->url_check($vd, $project_id, $domain, $web_url_domain, $home_url); 249 $check_vd = $this->url_check($vd, $project_id, $domain, $web_url_domain, $home_url);
240 - $check_vd && $source[] = $check_vd; 250 + if ($check_vd && (!in_array($check_vd, $source))) {
  251 + $check_vd && $source[] = $check_vd;
  252 + }
241 } 253 }
242 254
243 return $source; 255 return $source;
@@ -197,7 +197,9 @@ class HtmlLanguageCollect extends Command @@ -197,7 +197,9 @@ class HtmlLanguageCollect extends Command
197 $img = $result_img[2] ?? []; 197 $img = $result_img[2] ?? [];
198 foreach ($img as $vi) { 198 foreach ($img as $vi) {
199 $check_vi = $this->url_check($vi, $project_id, $domain, $web_url_domain, $home_url); 199 $check_vi = $this->url_check($vi, $project_id, $domain, $web_url_domain, $home_url);
200 - $check_vi && $source[] = $check_vi; 200 + if ($check_vi && (!in_array($check_vi, $source))) {
  201 + $check_vi && $source[] = $check_vi;
  202 + }
201 } 203 }
202 204
203 //js 205 //js
@@ -205,7 +207,9 @@ class HtmlLanguageCollect extends Command @@ -205,7 +207,9 @@ class HtmlLanguageCollect extends Command
205 $js = $result_js[2] ?? []; 207 $js = $result_js[2] ?? [];
206 foreach ($js as $vj) { 208 foreach ($js as $vj) {
207 $check_vj = $this->url_check($vj, $project_id, $domain, $web_url_domain, $home_url); 209 $check_vj = $this->url_check($vj, $project_id, $domain, $web_url_domain, $home_url);
208 - $check_vj && $source[] = $check_vj; 210 + if ($check_vj && (!in_array($check_vj, $source))) {
  211 + $check_vj && $source[] = $check_vj;
  212 + }
209 } 213 }
210 214
211 //video 215 //video
@@ -213,7 +217,9 @@ class HtmlLanguageCollect extends Command @@ -213,7 +217,9 @@ class HtmlLanguageCollect extends Command
213 $video = $result_video[2] ?? []; 217 $video = $result_video[2] ?? [];
214 foreach ($video as $vv) { 218 foreach ($video as $vv) {
215 $check_vv = $this->url_check($vv, $project_id, $domain, $web_url_domain, $home_url); 219 $check_vv = $this->url_check($vv, $project_id, $domain, $web_url_domain, $home_url);
216 - $check_vv && $source[] = $check_vv; 220 + if ($check_vv && (!in_array($check_vv, $source))) {
  221 + $check_vv && $source[] = $check_vv;
  222 + }
217 } 223 }
218 224
219 //css 225 //css
@@ -221,7 +227,9 @@ class HtmlLanguageCollect extends Command @@ -221,7 +227,9 @@ class HtmlLanguageCollect extends Command
221 $css = $result_css[2] ?? []; 227 $css = $result_css[2] ?? [];
222 foreach ($css as $vc) { 228 foreach ($css as $vc) {
223 $check_vc = $this->url_check($vc, $project_id, $domain, $web_url_domain, $home_url); 229 $check_vc = $this->url_check($vc, $project_id, $domain, $web_url_domain, $home_url);
224 - $check_vc && $source[] = $check_vc; 230 + if ($check_vc && (!in_array($check_vc, $source))) {
  231 + $check_vc && $source[] = $check_vc;
  232 + }
225 } 233 }
226 234
227 //css background 235 //css background
@@ -229,7 +237,9 @@ class HtmlLanguageCollect extends Command @@ -229,7 +237,9 @@ class HtmlLanguageCollect extends Command
229 $css_b = $result_css_b[1] ?? []; 237 $css_b = $result_css_b[1] ?? [];
230 foreach ($css_b as $vc_b) { 238 foreach ($css_b as $vc_b) {
231 $check_vc_b = $this->url_check($vc_b, $project_id, $domain, $web_url_domain, $home_url); 239 $check_vc_b = $this->url_check($vc_b, $project_id, $domain, $web_url_domain, $home_url);
232 - $check_vc_b && $source[] = $check_vc_b; 240 + if ($check_vc_b && (!in_array($check_vc_b, $source))) {
  241 + $check_vc_b && $source[] = $check_vc_b;
  242 + }
233 } 243 }
234 244
235 //a标签下载资源 245 //a标签下载资源
@@ -237,7 +247,9 @@ class HtmlLanguageCollect extends Command @@ -237,7 +247,9 @@ class HtmlLanguageCollect extends Command
237 $down = $result_a[2] ?? []; 247 $down = $result_a[2] ?? [];
238 foreach ($down as $vd) { 248 foreach ($down as $vd) {
239 $check_vd = $this->url_check($vd, $project_id, $domain, $web_url_domain, $home_url); 249 $check_vd = $this->url_check($vd, $project_id, $domain, $web_url_domain, $home_url);
240 - $check_vd && $source[] = $check_vd; 250 + if ($check_vd && (!in_array($check_vd, $source))) {
  251 + $check_vd && $source[] = $check_vd;
  252 + }
241 } 253 }
242 254
243 return $source; 255 return $source;
1 -<?php  
2 -  
3 -namespace App\Console\Commands\Update;  
4 -  
5 -use App\Models\Collect\CollectSource;  
6 -use App\Models\Collect\CollectTask;  
7 -use App\Models\Com\UpdateLog;  
8 -use App\Models\Com\UpdateOldInfo;  
9 -use App\Models\RouteMap\RouteMap;  
10 -use App\Services\CosService;  
11 -use App\Services\ProjectServer;  
12 -use Illuminate\Console\Command;  
13 -use Illuminate\Support\Facades\DB;  
14 -use Illuminate\Support\Facades\Redis;  
15 -  
16 -/**  
17 - * 4.0,5.0升级到6.0,主站页面采集  
18 - * Class ProjectImport  
19 - * @package App\Console\Commands  
20 - * @author Akun  
21 - * @date 2023/11/10 16:04  
22 - */  
23 -class HtmlSpecialCollect extends Command  
24 -{  
25 - /**  
26 - * The name and signature of the console command.  
27 - *  
28 - * @var string  
29 - */  
30 - protected $signature = 'project_html_special_collect';  
31 -  
32 - /**  
33 - * The console command description.  
34 - *  
35 - * @var string  
36 - */  
37 - protected $description = '执行特殊项目html页面采集';  
38 -  
39 -  
40 - public function handle()  
41 - {  
42 - ini_set('memory_limit', '512M');  
43 -// while (true) {  
44 - $this->start_collect();  
45 -// }  
46 - }  
47 -  
48 - protected function start_collect()  
49 - {  
50 -// $task_id = $this->get_task();  
51 - $task_id = '626_1';  
52 - if ($task_id === false) {  
53 - //所有项目采集完成  
54 - sleep(60);  
55 - return true;  
56 - } elseif ($task_id === 0) {  
57 - //当前项目采集完成  
58 - sleep(2);  
59 - return true;  
60 - }  
61 -  
62 - $task_arr = explode('_', $task_id);  
63 - $project_id = $task_arr[0];  
64 - $collect_id = $task_arr[1];  
65 -  
66 - //设置数据库  
67 - $project = ProjectServer::useProject($project_id);  
68 - if ($project) {  
69 - $collect_info = CollectTask::select(['id', 'domain', 'route'])->where('id', $collect_id)->where('status', CollectTask::STATUS_UN)->where('language', '')->first();  
70 -  
71 - if (!$collect_info) {  
72 - sleep(2);  
73 - return true;  
74 - }  
75 -  
76 - echo 'date:' . date('Y-m-d H:i:s') . ', project_id: ' . $project_id . ', collect_id: ' . $collect_id . ', collect start' . PHP_EOL;  
77 -  
78 - $collect_info->status = CollectTask::STATUS_ING;  
79 - $collect_info->save();  
80 -  
81 - //获取站点原始域名信息  
82 - $old_info = UpdateOldInfo::getOldDomain($project_id, $collect_info->domain);  
83 -  
84 - //采集html页面,下载资源到本地并替换  
85 - try {  
86 - $html = curl_c('https://' . $collect_info->domain . $collect_info->route, false);  
87 - if ($html == '0') {  
88 - $collect_info->status = CollectTask::STATUS_FAIL;  
89 - $collect_info->save();  
90 - echo 'date:' . date('Y-m-d H:i:s') . ', project_id: ' . $project_id . ', collect_id: ' . $collect_id . ', error: no html' . PHP_EOL;  
91 - sleep(2);  
92 - return true;  
93 - }  
94 -  
95 - //如果有base64图片,先替换掉,再进行资源匹配  
96 - $new_html = $html;  
97 - preg_match_all("/data:([^;]*);base64,(.*)?\"/", $new_html, $result_img);  
98 - $img_base64 = $result_img[2] ?? [];  
99 - foreach ($img_base64 as $v64) {  
100 - $new_html = str_replace($v64, '', $new_html);  
101 - }  
102 -  
103 - $source_list = $this->html_preg($new_html, $project_id, $collect_info->domain, $old_info['web_url_domain'], $old_info['home_url']);  
104 -  
105 - if ($source_list) {  
106 - $html = $this->upload_source($html, $source_list, $project_id, $collect_info->domain, $old_info['web_url_domain'], $old_info['home_url']);  
107 - }  
108 - } catch (\Exception $e) {  
109 - $collect_info->status = CollectTask::STATUS_FAIL;  
110 - $collect_info->save();  
111 -  
112 - echo 'date:' . date('Y-m-d H:i:s') . ', project_id: ' . $project_id . ', collect_id: ' . $collect_id . ', error: ' . $e->getMessage() . PHP_EOL;  
113 - sleep(2);  
114 - return true;  
115 - }  
116 -  
117 - $collect_info->html = $html;  
118 - $collect_info->status = CollectTask::STATUS_COM;  
119 - $collect_info->save();  
120 -  
121 - echo 'date:' . date('Y-m-d H:i:s') . ', project_id: ' . $project_id . ', collect_id: ' . $collect_id . ', collect end' . PHP_EOL;  
122 - }  
123 - //关闭数据库  
124 - DB::disconnect('custom_mysql');  
125 -  
126 - sleep(2);  
127 - return true;  
128 - }  
129 -  
130 - //获取任务  
131 - protected function get_task()  
132 - {  
133 - $key = 'console_html_special_collect_task';  
134 - $task_id = Redis::rpop($key);  
135 - if ($task_id) {  
136 - return $task_id;  
137 - }  
138 -  
139 -  
140 - $update_log = UpdateLog::whereIn('project_id', [626])->where('status', UpdateLog::STATUS_COM)->where('collect_status', UpdateLog::COLLECT_STATUS_UN)->orderBy('project_id', 'asc')->first();  
141 - if (!$update_log) {  
142 - return false;  
143 - }  
144 -  
145 - switch ($update_log->api_type) {  
146 - case 'page':  
147 - $source = RouteMap::SOURCE_PAGE;  
148 - break;  
149 - case 'news':  
150 - $source = RouteMap::SOURCE_NEWS;  
151 - break;  
152 - case 'blog':  
153 - $source = RouteMap::SOURCE_BLOG;  
154 - break;  
155 - default:  
156 - $source = RouteMap::SOURCE_PRODUCT;  
157 - break;  
158 - }  
159 -  
160 - $complete = false;  
161 - //设置数据库  
162 - $project = ProjectServer::useProject($update_log->project_id);  
163 - if ($project) {  
164 - $collect_list = CollectTask::select(['id', 'project_id'])->where('project_id', $update_log['project_id'])->where('source', $source)->where('language', '')->where('status', CollectTask::STATUS_UN)->orderBy('id', 'asc')->limit(50)->get();  
165 -  
166 - if ($collect_list->count() == 0) {  
167 - $complete = true;  
168 - } else {  
169 - foreach ($collect_list as $collect) {  
170 - Redis::lpush($key, $collect['project_id'] . '_' . $collect['id']);  
171 - }  
172 - }  
173 - }  
174 - //关闭数据库  
175 - DB::disconnect('custom_mysql');  
176 -  
177 - if ($complete) {  
178 - $update_log->collect_status = UpdateLog::COLLECT_STATUS_MAIN;  
179 - $update_log->save();  
180 - return 0;  
181 - }  
182 -  
183 - $task_id = Redis::rpop($key);  
184 - return $task_id;  
185 - }  
186 -  
187 - //正则匹配html资源  
188 - protected function html_preg($html, $project_id, $domain, $web_url_domain, $home_url)  
189 - {  
190 - $source = [];  
191 -  
192 - if (!$html) {  
193 - return $source;  
194 - }  
195 -  
196 - //image  
197 - preg_match_all('/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_img);  
198 - $img = $result_img[2] ?? [];  
199 - foreach ($img as $vi) {  
200 - $check_vi = $this->url_check($vi, $project_id, $domain, $web_url_domain, $home_url);  
201 - if ($check_vi && (!in_array($check_vi, $source))) {  
202 - $check_vi && $source[] = $check_vi;  
203 - }  
204 - }  
205 -  
206 - //js  
207 - preg_match_all('/<script\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_js);  
208 - $js = $result_js[2] ?? [];  
209 - foreach ($js as $vj) {  
210 - $check_vj = $this->url_check($vj, $project_id, $domain, $web_url_domain, $home_url);  
211 - if ($check_vj && (!in_array($check_vj, $source))) {  
212 - $check_vj && $source[] = $check_vj;  
213 - }  
214 - }  
215 -  
216 - //video  
217 - preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_video);  
218 - $video = $result_video[2] ?? [];  
219 - foreach ($video as $vv) {  
220 - $check_vv = $this->url_check($vv, $project_id, $domain, $web_url_domain, $home_url);  
221 - if ($check_vv && (!in_array($check_vv, $source))) {  
222 - $check_vv && $source[] = $check_vv;  
223 - }  
224 - }  
225 -  
226 - //css  
227 - preg_match_all('/<link\s+[^>]*?href\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_css);  
228 - $css = $result_css[2] ?? [];  
229 - foreach ($css as $vc) {  
230 - $check_vc = $this->url_check($vc, $project_id, $domain, $web_url_domain, $home_url);  
231 - if ($check_vc && (!in_array($check_vc, $source))) {  
232 - $check_vc && $source[] = $check_vc;  
233 - }  
234 - }  
235 -  
236 - //css background  
237 - preg_match_all("/url\(['\"]?(\s*[^>]+?)['\"]?\)/i", $html, $result_css_b);  
238 - $css_b = $result_css_b[1] ?? [];  
239 - foreach ($css_b as $vc_b) {  
240 - $check_vc_b = $this->url_check($vc_b, $project_id, $domain, $web_url_domain, $home_url);  
241 - if ($check_vc_b && (!in_array($check_vc_b, $source))) {  
242 - $check_vc_b && $source[] = $check_vc_b;  
243 - }  
244 - }  
245 -  
246 - //a标签下载资源  
247 - preg_match_all('/<a\s+[^>]*?href\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $html, $result_a);  
248 - $down = $result_a[2] ?? [];  
249 - foreach ($down as $vd) {  
250 - $check_vd = $this->url_check($vd, $project_id, $domain, $web_url_domain, $home_url);  
251 - if ($check_vd && (!in_array($check_vd, $source))) {  
252 - $check_vd && $source[] = $check_vd;  
253 - }  
254 - }  
255 -  
256 - return $source;  
257 - }  
258 -  
259 - //判断资源是否需要下载  
260 - protected function url_check($url, $project_id, $domain, $web_url_domain, $home_url)  
261 - {  
262 - if ($url) {  
263 - $url = str_replace('&quot;', '', $url);  
264 - $arr = parse_url($url);  
265 - $scheme = $arr['scheme'] ?? '';  
266 - $host = $arr['host'] ?? '';  
267 - $path = $arr['path'] ?? '';  
268 - $query = $arr['query'] ?? '';  
269 -  
270 - $path_arr = explode('.', $path);  
271 - $path_end = end($path_arr);  
272 - if (  
273 - (empty($scheme) || $scheme == 'https' || $scheme == 'http')  
274 - && (empty($host) || (strpos($web_url_domain, $host) !== false) || (strpos($home_url, $host) !== false))  
275 - && $path  
276 - && (substr($path, 0, 1) == '/')  
277 - && (strpos($path, '.') !== false)  
278 - && (strpos($path_end, 'html') === false)  
279 - && (strpos($path_end, 'php') === false)  
280 - && (strpos($path_end, 'com') === false)  
281 - && (strpos($path_end, 'xml') === false)  
282 - ) {  
283 - $source = CollectSource::where('project_id', $project_id)->where('origin', $url)->first();  
284 - if (!$source) {  
285 - return [  
286 - 'download' => true,  
287 - 'url' => $url,  
288 - 'url_complete' => ($scheme ?: 'https') . '://' . ($host ?: $domain) . $path . ($query ? '?' . $query : '')  
289 - ];  
290 - } else {  
291 - return [  
292 - 'download' => false,  
293 - 'url' => $url,  
294 - 'url_complete' => $source['target']  
295 - ];  
296 - }  
297 - } else {  
298 - return false;  
299 - }  
300 - } else {  
301 - return false;  
302 - }  
303 - }  
304 -  
305 - //下载并替换资源  
306 - protected function upload_source($html, $source, $project_id, $domain, $web_url_domain, $home_url)  
307 - {  
308 - foreach ($source as $vs) {  
309 -  
310 - if ($vs['download']) {  
311 - $new_source = CosService::uploadRemote($project_id, 'source', $vs['url_complete']);  
312 - if ($new_source) {  
313 - CollectSource::insert([  
314 - 'project_id' => $project_id,  
315 - 'origin' => $vs['url'],  
316 - 'target' => $new_source,  
317 - 'created_at' => date('Y-m-d H:i:s'),  
318 - 'updated_at' => date('Y-m-d H:i:s'),  
319 - ]);  
320 - $html = str_replace($vs['url'], getImageUrl($new_source), $html);  
321 -  
322 - if (substr($new_source, -3, 3) == 'css' || substr($new_source, -2, 2) == 'js') {  
323 -  
324 - $source_html = curl_c(getImageUrl($new_source), false);  
325 -  
326 - if (substr($new_source, -3, 3) == 'css') {  
327 - preg_match_all("/url\(['\"]?(\s*[^>]+?)['\"]?\)/i", $source_html, $result_source);  
328 - } else {  
329 - preg_match_all("/[large|thumb]+URL:['\"]+(\s*[^>]+?)['\"]+,/i", $source_html, $result_source);  
330 - }  
331 -  
332 - $js_css_source = $result_source[1] ?? [];  
333 - if ($js_css_source) {  
334 - foreach ($js_css_source as $vjs) {  
335 - if (strpos($vjs, 'URL:"') !== false) {  
336 - $vjs = substr($vjs, strpos($vjs, 'URL:"') + 5);  
337 - }  
338 -  
339 - $vjs_down = str_replace('&quot;', '', $vjs);  
340 - if (strpos($vjs_down, 'data:') !== false) {  
341 - //过滤二进制文件  
342 - continue;  
343 - }  
344 - if (strlen($vjs_down) > 255) {  
345 - //过滤太长文件  
346 - continue;  
347 - }  
348 -  
349 - $vjs_down_arr = parse_url($vjs_down);  
350 - $vjs_down_host = $vjs_down_arr['host'] ?? '';  
351 -  
352 - $cos = config('filesystems.disks.cos');  
353 - $cosCdn = $cos['cdn'];  
354 -  
355 - if ($vjs_down_host && $vjs_down_host == $cosCdn) {  
356 - //过滤已经下载的  
357 - continue;  
358 - }  
359 -  
360 - if (empty($vjs_down_host) && substr($vjs_down, 0, 1) != '/') {  
361 - //相对路径  
362 - $url_arr = explode('/', $vs['url']);  
363 - $url_arr[count($url_arr) - 1] = $vjs_down;  
364 - $vjs_down = implode('/', $url_arr);  
365 - }  
366 -  
367 - $vjs_result = $this->url_check($vjs_down, $project_id, $domain, $web_url_domain, $home_url);  
368 - if (!$vjs_result) {  
369 - continue;  
370 - }  
371 -  
372 - if ($vjs_result['download']) {  
373 - $new_vjs = CosService::uploadRemote($project_id, 'source', $vjs_result['url_complete']);  
374 - if ($new_vjs) {  
375 - CollectSource::insert([  
376 - 'project_id' => $project_id,  
377 - 'origin' => $vjs_result['url'],  
378 - 'target' => $new_vjs,  
379 - 'created_at' => date('Y-m-d H:i:s'),  
380 - 'updated_at' => date('Y-m-d H:i:s'),  
381 - ]);  
382 - $source_html = str_replace($vjs, getImageUrl($new_vjs), $source_html);  
383 - }  
384 - } else {  
385 - $source_html = str_replace($vjs, getImageUrl($vjs_result['url_complete']), $source_html);  
386 - }  
387 - }  
388 -  
389 - CosService::uploadRemote($project_id, 'source', $new_source, $new_source, $source_html);  
390 - }  
391 - }  
392 - }  
393 - } else {  
394 - $html = str_replace($vs['url'], getImageUrl($vs['url_complete']), $html);  
395 - }  
396 - }  
397 -  
398 - return $html;  
399 - }  
400 -}