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. Запустить гейты первый раз, затем кинуть в крон и ждать новостей.