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

<?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();