You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.7 KiB
119 lines
4.7 KiB
<?php
|
|
ini_set('display_errors', 1); // 显示错误
|
|
ini_set('display_startup_errors', 1); // 显示 PHP 启动时的错误
|
|
error_reporting(E_ERROR); // 记录所有级别的错误
|
|
|
|
include_once dirname(dirname(__FILE__)).'/base/dealBase.php';
|
|
|
|
define('DEAL_FLAG', $argv[0]);
|
|
define('PROC_CODE', $argv[1]);
|
|
|
|
class getWeiboVideo extends dealBase {
|
|
|
|
private $task_key = _RQ_SPIDER_WEIBO_DATA;
|
|
|
|
public function setPara() {
|
|
$this->spiderdaemon = SPIDER_WEIBO_DATA;
|
|
$this->processnum = $GLOBALS['DAEMON_NUMLIMIT'][SPIDER_WEIBO_DATA];
|
|
}
|
|
|
|
public function deal() {
|
|
$obj = new mSpider();
|
|
$rdobj = $obj->initRedis();
|
|
|
|
$ipinfo = $rdobj->get(_RQ_SPIDER_USE_IP);
|
|
$ipdata = json_decode($ipinfo, true);
|
|
if (!$ipinfo && $rdobj->llen($this->task_key) + 0 >= 0) {
|
|
$ipdata = $obj->getZmhttpIp(_RQ_SPIDER_USE_IP);
|
|
}
|
|
if (empty($ipdata)) {
|
|
sleep(2);
|
|
return false;
|
|
}
|
|
|
|
$rq_data = $rdobj->rpop($this->task_key);
|
|
if (empty($rq_data)) exit();
|
|
// $ipdata['ip'] = '127.0.0.1';
|
|
// $ipdata['port'] = '3306';
|
|
|
|
$obj->proxy_ip = $ipdata['ip'];
|
|
$obj->proxy_port = $ipdata['port'];
|
|
|
|
$baselog = $rq_data . "|" . $ipdata['ip'] . "|" . $ipdata['port'] . "|" . PROC_CODE . "|";
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_progress.log', $baselog);
|
|
|
|
$mweibo = new mWeibo();
|
|
$data = $mweibo->getWeiboById($rq_data);
|
|
if(empty($data['video_url'])) return false;
|
|
|
|
$detail= $obj->getWapWeibo($data['wid']);
|
|
if(!$detail) {
|
|
$rdobj->lpush($this->task_key, $rq_data);
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_error.log', $baselog.$data['wid'].'|'.$obj->getError());
|
|
return false;
|
|
}
|
|
if($detail == 'error'){
|
|
$rdobj->lpush($this->task_key, $rq_data);
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_error.log', $baselog.$data['wid'].'|获取数据为空');
|
|
return false;
|
|
}
|
|
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_success.log', $baselog.$data['wid']);
|
|
|
|
$aliobj = new mAliyunOSS();
|
|
|
|
//保存视频
|
|
$savepath = $mweibo->getWeiboDataVideoSavePath($data['wid'], $data['created_at']);
|
|
$is_exist = $aliobj->isExist(ALIYUN_OSS_BUCKET_WEIBO_DATA, $savepath);
|
|
if (!$is_exist) {
|
|
$videoData = $obj->getWeiboVideo($detail['video_url']);
|
|
if(!$videoData){
|
|
$rdobj->lpush($this->task_key, $rq_data);
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_get_error.log', $baselog.$data['wid'].'|下载失败|'.$detail['video_url'].'|'.$obj->curl_err);
|
|
return false;
|
|
}
|
|
|
|
$res = $aliobj->simpleUploadStr(ALIYUN_OSS_BUCKET_WEIBO_DATA, $savepath, $videoData);
|
|
if(!$res) {
|
|
$rdobj->lpush($this->task_key, $rq_data);
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_get_error.log', $baselog.$data['wid'].'|上传失败|'.$aliobj->getError());
|
|
}
|
|
}
|
|
|
|
if(empty($detail['video_cover_url'])){
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_success.log', $baselog.$data['wid']);
|
|
return true;
|
|
}
|
|
|
|
$cover_name = !empty($detail['video_cover']) ? $detail['video_cover'] : $data['wid'];
|
|
$cover_savepath = $mweibo->getWeiboDataPicSavePath($cover_name, $data['created_at']);
|
|
|
|
$is_exist = $aliobj->isExist(ALIYUN_OSS_BUCKET_WEIBO_DATA, $cover_savepath);
|
|
if(!$is_exist){
|
|
$params = array();
|
|
$headers = array(
|
|
"Referer: https://weibo.com"
|
|
);
|
|
$imgageData = $obj->getRequest($detail['video_cover_url'], $params, $headers);
|
|
if(!$imgageData){
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_cover_error.log', $baselog.$data['wid'].'|下载失败|'.$detail['video_cover_url']);
|
|
return false;
|
|
}
|
|
|
|
$res = $aliobj->simpleUploadStr(ALIYUN_OSS_BUCKET_WEIBO_DATA, $cover_savepath, $imgageData);
|
|
if(!$res) {
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_cover_error.log', $baselog.$data['wid'].'|上传失败|'.$aliobj->getError());
|
|
}
|
|
|
|
$res = $mweibo->updateWeibo($data['id'], array('video_cover' => $cover_name));
|
|
if(!$res) {
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_cover_error.log', $baselog.$data['wid'].'|更新失败|'.$mweibo->getError());
|
|
}
|
|
}
|
|
|
|
$obj->writeLog('spider', $this->spiderdaemon . '_video_cover_success.log', $baselog.$data['wid']);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
new getWeiboVideo();
|
|
|