[#] php rss bot
vit01(lenina,50) — All
2014-05-25 05:00:41


ii-rss.php
<?php

require("ii-functions.php");

define('CWD', getcwd()."/feeds");
date_default_timezone_set("Asia/Irkutsk");
$limit=63000;

$default_template='<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<item>
<pubDate>'.date("r").'</pubDate>
</item>
</channel>
</rss>';

class RssParser
{
	public $obj;
	public $items;
	
	function __construct($adress)
	{
		$this->obj=simplexml_load_file($adress);
		$obj=$this->obj;

		$this->items=$obj->channel->item;
	}
}

function ii_rss($feedname,$adress,$echo) {
	global $default_template;

	if(!file_exists(CWD."/".$feedname)) {
			file_put_contents(CWD."/".$feedname, $default_template);
			return;
	}

	file_put_contents(CWD."/".$feedname.'-new',file_get_contents($adress,false));

	$news=new RssParser(CWD."/".$feedname);
	$news2=new RssParser(CWD."/".$feedname.'-new');
	$first_date=strtotime($news->items[0]->pubDate);

	$items=$news->items;
	$itemsDates=array();

	foreach($items as $item) {
		$itemsDates[]=strtotime($item->pubDate);
	}

	$todel=array();
	for($j=0;$j<count($news2->items);$j++) {
		$item1=$news2->items[$j];
		$loltime=strtotime($item1->pubDate);
		if($loltime>$first_date) {
			ii_post($item1,$echo);
		}
	}
	
	//del_news($news2,$todel);
	file_put_contents(CWD."/".$feedname, $news2->obj->asXML());
	
	unset($news);
	unset($news2);
}

function ii_post($item,$echo) {
	global $limit;

	$point="Новостной_робот";
	$subject=$item->title;
	$message=$item->description;

	$message=trim(strip_tags($message));
	$message=htmlspecialchars_decode(html_entity_decode($message, ENT_NOQUOTES, 'UTF-8'));
	
	if (count($message)<$limit) {
		
		echo "Сохранение статьи '".$subject."'\n";
		msg_to_ii($echo,$message,$point,"mira, 1",time(),"All",$subject,"");
	} else {
		$message=str_split($message,$limit);
		$lenn=count($message);

		for($i=0;$i<$lenn;$i++) {
			$i1=$i+1;
			echo "Сохранение статьи '".$subject."' [$i1/$lenn]\n";
			msg_to_ii($echo,$message[$i],$point,"mira, 1",time(),"All",$subject." [$i1/$lenn]","");
		}
	}
}

?>


gate1.php & gate2.php
<?php
require("ii-rss.php");

ii_rss("lor", "http://feeds.feedburner.com/org/LOR", "lor-opennet.2014");

?>

<?php
require("ii-rss.php");

ii_rss("opennet", "http://www.opennet.ru/opennews/opennews_all_noadv.rss", "lor-opennet.2014");

?>
Установка: создать рядом с msg и echo каталог feeds. Запустить гейты первый раз, затем кинуть в крон и ждать новостей.