📄 caijicontroller.php
字号:
<?php
/*
*/
class CaijiController extends Easy_Controller_Action{
public function IndexAction(){
set_time_limit(120);
$caiji = new CaijiModel();
$this->_View->rows = $caiji->getAll();
}
public function addAction(){
$caiji = new CaijiModel();
$id = (int)$this->_Request->getParam('id');
$step = (int)$this->_Request->getParam('step');
if ($this->_Request->isPost() || $id){
if (!$id){
$this->_View->data = $this->_Request->getPost();
}else{
$this->_View->data = $caiji->getrow(array('id'=> $id));
}
switch ($step){
case 1:
$array = array();
$data = $this->_Request->getPost();
$caiji = new CaijiModel();
$array = $caiji->getRow( array('name'=> $data['name']));
$this->_View->data = $array;
if( $this->_Request->getPost('nextpage')) {
$this->_View->data['nextpage'] = $this->_Request->getPost('nextpage');
}
if( $this->_Request->getPost('mlink') ) {
$this->_View->data['mlink'] = $this->_Request->getPost('mlink');
}
if( $this->_Request->getPost('play') ) {
$this->_View->data['play'] = $this->_Request->getPost('play');
}
if( $this->_Request->getPost('name') ) {
$this->_View->data['name'] = $this->_Request->getPost('name');
}
if( $this->_Request->getPost('url') ) {
$this->_View->data['url'] = $this->_Request->getPost('url');
}
$reule = array();
$reule['mlink'] = array('string','请填写影片连接片段',1);
$reule['url'] = array('url', '您填写的URL地址无效', 1);
$reule['name'] = array('string', '您没有填写规则名称', 1);
$domain = substr($array['url'], 0, strrpos($array['url'], '/')).'/';
if ( Easy_Validate_Default::validate($this->_View->data, $reule)===false ){
$this->_View->message = Easy_Validate_Default::$error;
}else{
$contents = stripcslashes(file_get_contents($data['url']));
/*测试获取影片连接*/
$partten = '/'.preg_quote($this->_View->data['mlink'],'/').'/i';
$partten = str_replace(array('%s','%d'), array('(.+?)', '(\d+)'), $partten);
preg_match($partten, $contents, $tmp);
if ( empty($tmp[1]) ){
$this->_View->message[] = _('影片连接标记获取失败!您的标记不正确!');
}else{
$this->_View->data['movielink'] = $domain.$tmp[1];
}
/*测试获取下一页连接*/
$partten = '/'.preg_quote($this->_View->data['nextpage'],'/').'/i';
$partten = str_replace(array('%s','%d'), array('(.+?)', '(\d+)'), $partten);
preg_match($partten, $contents, $tmp);
if ( empty($tmp[1]) ){
$this->_View->message[] = _('影片分页地址获取失败!您的标记不正确!');
}else{
$this->_View->data['nextpagelink'] = $domain.$tmp[1];
}
}
if ($this->_View->message){
exit($this->_View->render('caiji/caiji_add'));
}else{
exit($this->_View->render('caiji/caiji_step1'));
}
break;
case 2:
$this->_View->rule = $this->_Request->getPost();
$caiji->addRule($this->_View->rule);
$domain = substr($this->_View->rule['url'], 0, strrpos($this->_View->rule['url'], '/')).'/';
$contents = file_get_contents($this->_View->rule['url']); //获取列表内容
$partten = '/'.preg_quote(Easy_Filter::htmldetities($this->_View->rule['mlink']),'/').'/i';
$partten = str_replace(array('%s','%d'), array('(.+?)','(\d+)'),$partten);
preg_match($partten, $contents, $tmp);
unset($contents);
$movielink = $domain.$tmp[1]; //第一个影片的页面
$moviedata = array();
$moviedata = $caiji->getRow(array('name'=> $this->_View->data['name'], 'url'=> $this->_View->data['url']));
//print_r($moviedata);
$ignore = array('urllink', 'inplayer','url','name','mlink', 'movielink'); //忽略列表
if ( preg_match('/http:\/\/(.+?)/is', $movielink)){ //如果获取的是一个有效的连接地址
$contents = file_get_contents($movielink);
foreach ($this->_View->data as $key=>$row){
//echo $row;
if (in_array($key, $ignore)===false){
$partten ='/'.preg_quote($row, '/').'/is';
$partten = str_replace(array('%s','%d'), array('(.+?)','(\d+)'),$partten);
//echo $partten;
if ($key == 'playurl'){
preg_match_all($partten, $contents, $tmp);
//echo $key;
$moviedata[$key] = $tmp[1];
}else{
preg_match($partten, $contents, $tmp);
if ($key != 'picture'){
$moviedata[$key] = strip_tags($tmp[1]);
}else{
if(stristr(strip_tags($tmp[1]), 'http://')===false){
$moviedata[$key] = $domain.strip_tags($tmp[1]);
}else{
$moviedata[$key] = strip_tags($tmp[1]);
}
}
}
}else{
if ($key == 'urllink' && empty($row)===false){
$player = array();
foreach($moviedata['playurl'] as $playerid){
$player[] = $domain.str_replace('$1', $playerid, $row);
}
$moviedata['playurl'] = $player;
}
}
}
///print_r($moviedata['playurl']);
$moviedata['url'] = $this->_View->data['url'];
$moviedata['player'] = $moviedata['playurl'][0];
$moviedata['name'] = $this->_View->data['name'];
$moviedata['movielink'] = $movielink;
$this->_View->data = '';
$this->_View->data = $moviedata;
//print_r($this->_View->data);
}else{
echo '连接地址获取失败';
}
exit($this->_View->render('caiji/caiji_step2'));
break;
case 3:
if ($this->_Request->getPost('inplayer') == 1){
$url = $this->_Request->getPost('player');
$contents = file_get_contents($url);
$rule = $this->_Request->getPost('playrule');
$rule = '/'.str_replace('%s','(.+?)', Easy_Filter::htmldetities($rule)).'/is';
preg_match('/VALUE=\'(.+?)\'>/is', $contents, $tmp);
//print_r($contents);
if ($tmp[1]){
$this->_View->succeed = _('采集规则测试成功!');
$this->_View->filename = trim($tmp[1]);
}else{
$this->_View->succeed = _('获取播放器地址失败,可能您的规则编写有误!');
}
}else{
$this->_View->succeed = _('采集规则测试成功!');
}
exit($this->_View->render('caiji/caiji_step3'));
break;
case 4:
$caiji->addRule($this->_View->data);
$this->_View->subject = _('采集规则录入!');
$this->_View->message = _('规则保存成功!');
$this->_View->jumpurl = '?mod=caiji&action=index';
exit($this->_View->render('message'));
break;
}
}
$movie = new moviemodel();
$this->_View->player = $movie->PlayerOption( (int)$this->_Request->getPost('player') );
}
/*
将图片保存到本地
*/
public function savepictolocaleAction(){
if ($this->_Request->getParams('max') ){
$caiji = new CaijiModel();
$caiji->max = (int)$this->_Request->getParams('max'); //每次保存的图片数目
$caiji->offset = (int)$this->_Request->getParam('offset');
if ( $caiji->savePictureToLocale() === false){ //未完成时继续
$uri = INSTALLDIR.'?mod=caiji&action=savepictolocale&max='.$caiji->max.'&offset='.$caiji->offset;
$this->_View->button = _('两秒后自动继续');
$this->_View->jumpurl = $uri;
$this->_View->meta = '<meta http-equiv="Refresh" content="2;URL='.$uri.'" />';
$this->_View->message = _('正在采集,共保存了'.$caiji->offset.'张图片');
exit($this->_View->render('message'));
}else{
$this->_View->message = _('全部影片海报保存本地成功!共保存了:'.($caiji->offset));
exit($this->_View->render('message'));
}
}
}
/*
开始采集数据
*/
public function getAction() {
$id = (int)$this->_Request->getParam('id');
$url = base64_decode($this->_Request->getParam('url'));
$caiji = new CaijiModel();
$url = $caiji->start($id, $url);
if ( $url !== true ){
$this->_View->subject = _('正在采集中...');
$this->_View->message = _('正在采集下5页影片连接');
$encode = base64_encode($url);
$this->_View->jumpurl = '?mod=caiji&action=get&id='.$id.'&url='.$encode;
$this->_View->meta = '<meta http-equiv="Refresh" content="2;URL='.$this->_View->jumpurl.'" />';
exit($this->_View->render('message'));
}else{
$this->_View->subject = _('正在采集中...');
$result = $caiji->getmovielink(array('rulesid'=> $id, 'locked'=> 0));
$this->_View->message = _('采集影片页面完成!<font color="#FF0000">'.count($result).'</font>稍后将采集影片详细资料。。。');
$this->_View->jumpurl = '?mod=caiji&action=getmoviedata&id='.$id;
$this->_View->meta = '<meta http-equiv="Refresh" content="2;URL='.$this->_View->jumpurl.'" />';
$this->_View->button = _('影片详细页面采集完成,正在采集影片资料入库...');
exit($this->_View->render('message'));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -