⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caijicontroller.php

📁 a short sketch about linux syntex lines.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?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 + -