<?php
/*
'**************************************************************************************************
' 软件名称: 搜一次 Content Management System
' 版本编号: Version 1.X
' 官方网站: http://www.yixiu.cc
' 官方论坛：http://bbs.yixiu.cc
' 版权所有: 搜一次运营团队
' 郑重声明:
'    1、任何个人或组织不得在未经授权的情况下删除、修改、拷贝本软件及其他副本上一切关于版权的信息；
'    2、搜一次网络事业部保留此软件的法律追究权利
' @author YGH 2012-12-13
'**************************************************************************************************
*/

include "../../admin_loginstate.php";
include "./collect.function.php";
include "../../../include/class/http.class.php";
include "../../admin_version.php";

$id = intval($_GET['id']);
$cacheid = strip_tags($_GET['cacheid']);

$cacheFile = '../../../cache/rule_'.$cacheid.'.txt';
if (!is_file($cacheFile)) {
	exit('对不起，没有找到该采集规则的缓存信息，无法继续采集');
}

$ruleConfig = unserialize(file_get_contents($cacheFile));

if (!$ruleConfig) {
	exit('采集规则缓存文件解析失败，请检查文件权限或联系程序开发者');
}
$collectTYPE = str_split(strrev(str_pad(decbin($ruleConfig['type']),3,0,STR_PAD_LEFT)));

/**
 * 如果要采集播放页，每次就只采一条数据
 * 其它模式，每次采集10条数据
 */

//获取采集页码信息
$pagenow = isset($_GET['pagenow']) ? intval($_GET['pagenow']) : (($collectTYPE[0]==0)?$ruleConfig['pagebegin']:$ruleConfig['pageend']);
$pageend = isset($_GET['pageend']) ? intval($_GET['pageend']) : $ruleConfig['pageend'];

$isnolist = 0;//初始化是否直接采集内容页判断
//根据采集类型不同，根据采集页码获取需要采集的地址
switch ($ruleConfig['collecttype']) {
	case 1://指定分类页
		$collectUrl = $ruleConfig['collecturl'];
	break;
	case 2://自动分类页 http://www.bdzy.cc/list/?1-{$ID}.html
		$collectUrl = strpos($ruleConfig['collecturl'], '{$ID}') ? str_ireplace('{$ID}', $pagenow, $ruleConfig['collecturl']) : NULL;
	break;	
	case 3://批量分类页
		$collectUrl = explode(',', $ruleConfig['collecturl']);
		$collectUrl = isset($collectUrl[$pagenow-1]) ? $collectUrl[$pagenow-1] : NULL;
	break;	
	case 4:
		$isnolist = 1;
		$collectUrl = $ruleConfig['collecturl'];
	break;
}

if ($collectUrl==NULL) {
	exit('完成采集');
}

//将采集信息存储到File中，然后进入对应的采集序列
if (!$isnolist) {//辨识：采集的为分类页，存储需要采集的地址，跳到内容采集处理页面
	$url = 'http://'.str_replace('http://', '', $collectUrl);
	$content =http::remotehttp($url);
	if ($ruleConfig['charset']==2) {//如果目标站是UTF-8格式
		auto_charset($content);
	}	
	$list = preg_collect($ruleConfig['list'], $content);
	$listhref = false;
	if ($list!==NULL) {
		$listhref = preg_collect($ruleConfig['listhref'], $list[0]);
		if ($listhref!=NULL) {
			$listhref = formaturl($url, $listhref);
		}
	}
	if (empty($listhref)) {
		exit('采集失败，中止运行');
	}
} else {//辨识：采集的为内容页，存储多条需要采集的地址，跳到内容采集处理页面
	if (strpos($collectUrl, '{$ID}')) {
		if ($collectTYPE[0]==0) {
			$end = $pagenow+30 <= $pageend ? 30 : $pageend-$pagenow;
			if ($end<1) {
				exit('采集完成');
			}
			for ($i = 1; $i <= $end; $i++) {
				$listhref[$pagenow+$i] = str_ireplace('{$ID}', $pagenow+$i, $collectUrl);
			}
		} else {
			$end = $pagenow-30 >= $ruleConfig['pagebegin'] ? 30 : $pagenow-$ruleConfig['pagebegin'];
			if ($end<1) {
				exit('采集完成');
			}
			for ($i = $end; $i >= 1; $i--) {
				$listhref[$pagenow-$i] = str_ireplace('{$ID}', $pagenow-$i, $collectUrl);
			}
		}
	} else {
		exit('采集采集内容页网址设置不规范');
	}
}

file_put_contents('../../../cache/list_'.$cacheid.'.txt', implode(',', $listhref));
$location = 'rulecollect_2.php?id='.$id.'&cacheid='.$cacheid.'&pagenow='.$pagenow.'&pageend='.$pageend;

?><!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<title>自定义采集平台</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="refresh" content="1; url=<?php echo $location;?>" />
</head>
<body>
采集第<font color="red"><?php echo $pagenow;?></font>页成功！缓存数据成功！开始进入内容采集。。。
</body>
</html>