やっぱりmixiに対応

 どうもはてなRSSをうまく読み込んでくれなくなったので対応してみた。あらたにSnoopyを使って組み直し。2つのRSSを読み込んで、新しい要素だけを適当に加工してmixiに書き込むというphpスクリプトWINDOWSのタスクに登録して1日2回書き込み。
 でも前のHTTP/Request.phpで作っていたバージョンがなぜ動かなくなったのかは不明のまま。

<?php 
#美乳
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

require_once "XML/RSS.php";
include "Snoopy.class.php";

$email = "address"; 
$pass  = "pass"; 
$id = "ID";
$post_key = "key";


#ログイン
$login = new Snoopy;
$login_url = "http://mixi.jp/login.pl";
$login_vars["next_url"] = "/home.pl";
$login_vars["email"] = $email;
$login_vars["password"] = $pass;
$login_vars["sticky"] = "on";
$login->submit($login_url,$login_vars);
$cookies = $login->cookies;


WriteMixi("hatena.txt","http://d.hatena.ne.jp/doroyamada/rss");
WriteMixi("diary.txt","http://kazz.mine.nu/diary02/rss_1_0.rdf");

function WriteMixi($datfile,$rss){

	global $post_key, $cookies,$id;
	$LastUpdateUnix = $NewestEntryUnix =filemtime($datfile);
	$LastUpdateRss = UnixtoRss($LastUpdateUnix);

	#RSS読み込み
	$rss =& new XML_RSS($rss);
	$rss->parse();
	$items = array_reverse($rss->getItems());

	foreach ($items as $item) {
		$ItemUnix = RssToUnix($item['dc:date']);	
		if($ItemUnix <= $LastUpdateUnix){	# ファイルのタイムスタンプと比較
			continue;
		}
		$NewestEntryUnix = max($ItemUnix,$NewestEntryUnix);
		$body = mb_convert_encoding($item['description'],"EUC-JP","UTF-8")."\n".$item['link']." ".str_replace(array("T","-","+09:00"),array(" ","/",""),$item['dc:date']);

		// POST 
		$diary = new Snoopy;
		$submit_url = "http://mixi.jp/add_diary.pl";	
		$submit_vars["submit"] = "confirm";
		$submit_vars["packed"] = "";
		$submit_vars["post_key"] = $post_key;
		$submit_vars["news_id"] = "";
		$submit_vars["id"] = $id;
		$submit_vars["diary_title"] = mb_convert_encoding($item['title'],"EUC-JP","UTF-8");
		$submit_vars["diary_body"] = $body;
		$diary->cookies = $cookies;
		$diary->submit($submit_url,$submit_vars);
		
		sleep(2);	#ひと休み
	
	}	#foreachの終わり。

	if(is_int($NewestEntryUnix)){touch($datfile,$NewestEntryUnix);}	#タイムスタンプ変更

}	#functionの終わり

function UnixToRss($unixdate){
	return date("Y-m-d\TH:i:s+09:00",$unixdate);
}

function RssToUnix($rssdate){
	if(ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})\+09:00",$rssdate,$temp)){
		return mktime($temp[4],$temp[5],$temp[6],$temp[2],$temp[3],$temp[1]);
	}else{
		return FALSE;
	}
}



?>