diff --git a/src/service/StorageService.php b/src/service/StorageService.php index c1f5e34..d8fcdd7 100644 --- a/src/service/StorageService.php +++ b/src/service/StorageService.php @@ -63,14 +63,42 @@ class StorageService extends Service /** * 保存文件 * @param string $name 保存的文件名 - * @return false|int + * @return array */ public function save(string $name) { if (empty($this->path)) $this->getConfig(); - // 判断是否存在 + // 判断文件夹是否存在 is_dir($this->path) or mkdir($this->path, 0777, true); - return file_put_contents("{$this->path}{$name}", file_get_contents($this->remotely)); + $return_content = $this->http_get_data("{$this->path}{$name}"); + $fp = @fopen($name, "a"); //将文件绑定到流 + fwrite($fp, $return_content); //写入文件 + return [ + 'file_name' => $name, + 'path' => $this->path, + 'remotely' => $this->remotely, + 'save_path' => "{$this->path}{$name}", + 'size' => $this->bytes("{$this->path}{$name}") + ]; + } + + /** + * 下载 + * @param $url + * @return false|string + */ + private function http_get_data($url) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_URL, $url); + ob_start(); + curl_exec($ch); + $return_content = ob_get_contents(); + ob_end_clean(); + $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + return $return_content; } /** diff --git a/src/service/douyin/WatermarkService.php b/src/service/douyin/WatermarkService.php index b2158e4..637395f 100644 --- a/src/service/douyin/WatermarkService.php +++ b/src/service/douyin/WatermarkService.php @@ -236,47 +236,48 @@ class WatermarkService extends Service if (!empty($this->storage)) { // 保存文件 // 作者头像 - StorageService::instance() + $author_info_avatar = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['author_info']['avatar']) ->save($backtrack['author_info']['uid'] . ".jpeg"); // 音频头像 - StorageService::instance() + $music_info_avatar = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['music_info']['avatar']) ->save($backtrack['music_info']['mid'] . ".jpeg"); // 音频文件 - if (!empty($backtrack['music_info']['play'])) StorageService::instance() + if (!empty($backtrack['music_info']['play'])) $music_info_play = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['music_info']['play']) ->save($backtrack['music_info']['mid'] . ".mp3"); + else $music_info_play = ['size' => '0kb']; // 音频封面 - StorageService::instance() + $music_info_cover = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['music_info']['cover']) ->save($backtrack['music_info']['mid'] . "_cover" . ".jpeg"); // 视频封面 - StorageService::instance() + $video_info_dynamic = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['video_info']['dynamic']) ->save($backtrack['video_info']['vid'] . "_dynamic" . ".jpeg"); // 视频封面 - StorageService::instance() + $video_info_origin_cover = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['video_info']['origin_cover']) ->save($backtrack['video_info']['vid'] . "_origin_cover" . ".jpeg"); // 视频封面 - StorageService::instance() + $video_info_cover = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['video_info']['cover']) ->save($backtrack['video_info']['vid'] . "_cover" . ".jpeg"); // 视频文件 - StorageService::instance() + $video_info_play = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['video_info']['play']) ->save($backtrack['video_info']['vid'] . "_play" . ".mp4"); // 视频文件 - StorageService::instance() + $video_info_playwm = StorageService::instance() ->path($this->storagePath) ->remotely($backtrack['video_info']['playwm']) ->save($backtrack['video_info']['vid'] . "_playwm" . ".mp4"); @@ -412,79 +413,23 @@ class WatermarkService extends Service } // 大小信息 // 作者头像 - $backtrack['size']['author_info']['avatar'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['author_info']['uid'] . ".jpeg"); + $backtrack['size']['author_info']['avatar'] = $author_info_avatar['size']; // 音频头像 - $backtrack['size']['music_info']['avatar'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['music_info']['mid'] . ".jpeg"); + $backtrack['size']['music_info']['avatar'] = $music_info_avatar['size']; // 音频文件 - if (!empty($backtrack['music_info']['play'])) $backtrack['size']['music_info']['play'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['music_info']['mid'] . ".mp3"); - else $backtrack['size']['music_info']['play'] = '0kb'; + $backtrack['size']['music_info']['play'] = $music_info_play['size']; // 音频封面 - $backtrack['size']['music_info']['cover'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['music_info']['mid'] . "_cover" . ".jpeg"); + $backtrack['size']['music_info']['cover'] = $music_info_cover['size']; // 视频封面 - $backtrack['size']['video_info']['dynamic'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['video_info']['vid'] . "_dynamic" . ".jpeg"); + $backtrack['size']['video_info']['dynamic'] = $video_info_dynamic['size']; // 视频封面 - $backtrack['size']['video_info']['origin_cover'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['video_info']['vid'] . "_origin_cover" . ".jpeg"); + $backtrack['size']['video_info']['origin_cover'] = $video_info_origin_cover['size']; // 视频封面 - $backtrack['size']['video_info']['cover'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['video_info']['vid'] . "_cover" . ".jpeg"); + $backtrack['size']['video_info']['cover'] = $video_info_cover['size']; // 视频文件 - $backtrack['size']['video_info']['play'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['video_info']['vid'] . "_play" . ".mp4"); + $backtrack['size']['video_info']['play'] = $video_info_play['size']; // 视频文件 - $backtrack['size']['video_info']['playwm'] = StorageService::instance() - ->path($this->storagePath) - ->bytes($backtrack['video_info']['vid'] . "_playwm" . ".mp4"); - // 删除文件 - // 作者头像 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['author_info']['uid'] . ".jpeg"); - // 音频头像 - $backtrack['size']['music_info']['avatar'] = StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['music_info']['mid'] . ".jpeg"); - // 音频文件 - if (!empty($backtrack['music_info']['play'])) $backtrack['size']['music_info']['play'] = StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['music_info']['mid'] . ".mp3"); - // 音频封面 - $backtrack['size']['music_info']['cover'] = StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['music_info']['mid'] . "_cover" . ".jpeg"); - // 视频封面 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['video_info']['vid'] . "_dynamic" . ".jpeg"); - // 视频封面 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['video_info']['vid'] . "_origin_cover" . ".jpeg"); - // 视频封面 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['video_info']['vid'] . "_cover" . ".jpeg"); - // 视频文件 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['video_info']['vid'] . "_play" . ".mp4"); - // 视频文件 - StorageService::instance() - ->path($this->storagePath) - ->delete($backtrack['video_info']['vid'] . "_playwm" . ".mp4"); + $backtrack['size']['video_info']['playwm'] = $video_info_playwm['size']; } $this->backtrack = $backtrack; } else { @@ -493,10 +438,22 @@ class WatermarkService extends Service return $this; } + /** + * 获取 + * @param $url + * @return bool|string + */ private function getContents($url) { - ini_set('user_agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1'); - return file_get_contents($url); + $c = curl_init(); + curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); + //curl_setopt($c, CURLOPT_HEADER, 1);//输出远程服务器的header信息   + curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1'); + curl_setopt($c, CURLOPT_URL, $url); + $contents = curl_exec($c); + curl_close($c); + if ($contents) return $contents; + else return ''; } /** @@ -627,7 +584,7 @@ class WatermarkService extends Service private function cVideoPlayUrl($url, $type) { if ($type == 'play') $headers = get_headers(str_replace("/playwm/", "/play/", $url), TRUE); - else $headers = get_headers($url, TRUE); + else $headers = get_headers($url, TRUE); //输出跳转到的网址 return $headers['location']; }