某人的Blog原来放在歪酷上,因为歪酷上榜第七批,所以。
目前歪酷被关Blog的帖子部分无论前台后台均无法访问,日后是否会提供下载不得而知。好在某人的Blog自从2006起就有人(敝人)在Google Reader上订阅,歪酷的Feed也是全文输出,所以能救一部分回来。
但是借助Google Reader缓存搬迁Blog的法子也有不小的局限性:
- 原Blog提供了全文Feed输出;
- 只能取回自第一次有人在Reader订阅之后发布的文;
- 如修改过不包含在Feed中的旧文,则修改部分无法取回;
本想用Javascript写代码,但因为XMLHTTP不能自定义Cookie(ServerXMLHTTP好像可以,不过我没试),所以改用Ruby。
require 'net/https'
require 'uri'
def getSID(email, passwd)
uri = URI.parse('https://www.google.com/accounts/ClientLogin')
req = Net::HTTP::Post.new(uri.path)
req.set_form_data({'Email'=>email, 'Passwd'=>passwd});
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
res = http.start {|h| h.request(req)}
case res
when Net::HTTPSuccess
res.body.split("\n").each { |s|
return s if s[0,4] == 'SID='
}
else
res.error!
end
end
def parseXML(src)
m = src.match('([^<]+) ')
if m then
return m[1]
else
return ''
end
end
def exportGRCache(feedurl, email, passwd, fn = '000001', c = '')
sid = getSID(email, passwd)
begin
# n尽量大一点,方便后续处理
url = 'http://www.google.com/reader/atom/feed/' + feedurl + '?n=100'
url += '&c=' + c if c != ''
uri = URI.parse(url)
headers = { 'Cookie' => sid, }
puts 'DL ' + url
res = Net::HTTP.start(uri.host, uri.port) { |h| h.get(uri.request_uri, headers) }
puts 'Save ' + fn + '.xml ...'
f = File.new(fn + '.xml', 'w')
fn.next!
f.write(res.body)
c = parseXML(res.body)
end while c != ''
end
# Google Reader中订阅的Feed地址
url = 'http://BLOG.DOMAIN.com/PATH.xml'
# Google Account,Reader API目前必须要验证才能用
email = 'USERNAME@gmail.com'
passwd = 'USERPASSWORD'
exportGRCache(url, email, passwd)
7 条评论 :
请问这个代码要怎么用呢~~
我不懂语言的。。。
请问这个代码要怎么使用呢?
能否深入浅出地解释?
如果你对程序代码完全没概念的话,几句话实在是不可能解释得清楚。
愿意的话不妨告诉我具体是要做点什么事,或许我可以给你些更实在的建议。
我也遇到这种情况,以前的网站(Yo2)关了,又没及时备份,现在我GoogleReader里有全部的订阅,可是不知道怎么导出成wordpress可用的xml
wordpress肯定可以导入blogger,而blogger的feed格式跟reader的是一样的,所以修改一下wordpress导入blogger的代码应该可以管用。
另外,wordpress本身应该也有导入导出功能,所以把reader导出的东西转换成wordpress导入导出的格式,估摸着也能成。
不过传到yo2的图片肯定是没戏了的。
大哥,goolge reader快关闭了,那么多的缓存就要永远消失了,好着急呀,大神您能不能写个软件,把自己订阅的条目缓存都导出来呀,没了google reader上网都不知道干啥了
我没试过,但只要我这个脚本还能跑就可以做你想做的事,不过我觉得这没什么意义就是了。
像我,虽然没去查,不过这些年用reader看过的条目恐怕得有几十万,全弄出来没必要,而且其实也没什么用。
发表评论