你是不是有过这样的经历:重装系统后发现原来的bookmark找不到了。
三月份我就经历过一次,坐火车时电脑不小心被碰了一下,然后ubuntu怎么也进不去了,最后不得不重装
重装后自己的bookmark全部丢失了,很是心疼。也许你会说怎么不用del.icio.us 之类的,但我想让他更方
便(不是说懒惰是社会进步的动力吗),于是我思考着让系统每个月自动把bookmark保存到一个地方,以至
重装系统后还能找回,考虑到wp 已经支持xmlrpc了,于是写一个适合自己的小应用(下面的一篇文章就是
这样诞生的)。
具体的实现方法是用php提取bookmark 中的连接,用xmlrpc metaWweblog api 向wp中加入一篇文章,用
cron 实现来每个月更新一次,这样就不怕重装系统后bookmark 丢失了。
首先看我的php文件 bookmark.php
";
foreach($bookmarkarr as $bookmark) {
$onen = $bookmark->url . "||" . $bookmark->name;
// echo $onen;
foreach($bookmark_in_arr as $onebookmark) {
if(trim($onen) == trim($onebookmark)) {
$already_in = true;
break;
}
}
if(!$already_in) {
fwrite($bookmark_writer,$onen ."\n");
$html .= "url."\">".$bookmark->name."
";
}
}
fclose($bookmark_writer);
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$c = new xmlrpc_client("/xmlrpc.php", "notedit.com", 80);
$content['title']="my latest bookmarks" . date('Y-m-d H:i:s'); //标题
$content['description']=$html; //内容
$content['mt_keywords']="bookmark"; //标签
// $content['wp_password']=""; //文章密码,输入后显示加密
$content['categories'] = array("bookmark"); //分类名
$x = new xmlrpcmsg("metaWeblog.newPost",
array(php_xmlrpc_encode("1"), //BLOG ID
php_xmlrpc_encode(""), //用户名
php_xmlrpc_encode(""), //密码
php_xmlrpc_encode($content),
php_xmlrpc_encode("1"))); //立即发表
$c->return_type = 'phpvals';
$r =$c->send($x);
if ($r->errno=="0"){
echo "发表成功,文章序号为:".$r->val;
}
else {
echo "出错了";
print_r($r);
}
function json_to_array($web){
$arr=array();
foreach($web as $k=>$w){
if(is_object($w)) $arr[$k]=json_to_array($w);
else
$arr[$k]=$w;
}
return $arr;
}
?>
再来设置一下cron 就可以了
crontab -e
然后输入: 0 0 1 * * php /data/bookmark/bookmark.php // 每个月的第一天执行
cron 的前五个数字分别代表 分钟(0-59)小時(0-23)日期(1-31)月份(1-12)星期 (0-6)