一直希望由一个rss feed自动把标题和链接发布到blogger,这样把文件上传到box.net以后就能用box.net的rss自动发布一个blog文章,并提供文件的下载链接。
第一个方法,把rss在feedburner里再烧制一遍,同时启用subscribe by email,同时使用blogger的发布邮箱subscribe,于是如果当天有更新,feedburner会发一封邮件到blogger,就能自动发布了。但是这个邮件会含有一些说明,比如说是通过feedburner的邮件发布的。而且如果有多个文件更新,会放到一封邮件里,而标题只能显示一个文件的文件名,加上更新的文件数目而已。这个方法不能用来更新wordpress.com的blog,因为这个网站不支持没有在wordpress.com注册的邮件地址发布新文章。
第二个方法是用ifttt.com。这个网站类似于yahoo pipe,能让用户自定义trigger条件,比如说rss更新,google reader加星,twitter fav等,然后添加action,比如发送短信,twitter,wordpress更新,把链接里的文件发送到dropbox等等。网站本身提供了很多trigger和action。用rss的trigger和email的action就能在rss更新的时候发送邮件到blogger发布新文章。而且wordpress.com的博客也是适用的,因为提供了wordpress的发布文字的action。只是我没试过,不知道会不会加上一些类似于“发布自ifttt”的说明文字。
第三个方法是在linux上用脚本搞定。
#!/bin/bash
dir=~/scripts/blog/ebook
rss=$dir/rss.xml
wget -q http://www.xxxx.com/xxxx/rss.xml -O $rss
ld=`sed -n "1p" $dir/lastDate`
pd=`sed -n "14p" $rss | sed -e '1s///' -e '$s/$//'`
let p=14
let t=12
let l=15
n=$(wc -l $rss)
let i=0
while [ "$pd" != "$ld" ]
do
title=`sed -n "${t}p" $rss | sed -e '1s///' -e '$s/$//'`
link=`sed -n "${l}p" $rss | sed -e '1s///' -e '$s/$//' -e 's/amp;//g'`
text=<a href="$link">$title</a>
let p2=$p+10
if [ $p2 -lt $n ]; then
pd=`sed -n "${p2}p" $rss | sed -e '1s///' -e '$s/$//'`
p=$p2
fi
let t=$t+10
let l=$l+10
echo $text | mutt -s "$title" -e 'set content_type="text/html"' -- xxxx@blogger.com
echo $title
let i=$i+1
done
sed -n "14p" $rss | sed -e '1s///' -e '$s/$//' > $dir/lastDate
echo "$i posts updated"
rm ~/sent $dir/rss.xml
这个脚本就是先把rss feed的文件下载下来,然后找到每个item的pubDate,如果pubDate比上次最后发布时间晚就把文件名和链接作为邮件发布到blogger,当item的pubDate和上次最后发布时间相同就停下,然后把这次的最后发布时间记录下来。大概不同的rss文件内容会不同,但是结构应该差不多,都是一个item一个item的。
ps. ifttt.com这个网站其实概念不是很新,算是yahoo pipe的衍生,但是添加了很多新的功能,yahoo的只能feed输入再feed输出。不过ifttt的保存到dropbox功能和sms功能比较不错。其他的功能很容易就能找到替代。ifttt的短信好像是免费的,但是不支持中文,会显示为问号。