通过程序备份Google日历: https://www.google.com/calendar/exporticalzip
我在写一个Python脚本,想要自动下载一个包含我所有谷歌日历的压缩文件,并把它存储在我的硬盘上作为备份。
我正在使用ClientLogin来获取一个认证令牌(而且成功拿到了这个令牌)。
可是,我无法从这个链接 https://www.google.com/calendar/exporticalzip 下载文件。
每次它都让我重新输入登录信息,返回一个登录页面的HTML,而不是我想要的压缩文件。
这是关键的代码:
post_data = post_data = urllib.urlencode({ 'auth': token, 'continue': zip_url})
request = urllib2.Request('https://www.google.com/calendar', post_data, header)
try:
f = urllib2.urlopen(request)
result = f.read()
except:
print "Error"
有没有人有好的主意或者之前做过类似的事情?或者有没有其他方法可以自动备份我所有的日历?
3 个回答
0
很棒的解决方案,systempuntoout!
对于使用谷歌应用的朋友们,只需要稍微调整一下网址和电子邮件就可以了。
import mechanize
br=mechanize.Browser()
br.open('https://www.google.com/calendar/hosted/yourdomain.com/exporticalzip')
br.select_form(nr=0)
br['Email']='Username'
br['Passwd']='Password'
br.submit()
br.retrieve('https://www.google.com/calendar/hosted/yourdomain.com/exporticalzip','exportical.zip')
0
日历有一个网址,你可以通过这个网址下载日历,而不需要登录(可以在谷歌日历的界面里找到,进入日历设置,查看私人网址)。你应该可以用 urllib
这个工具轻松下载 iCal 或 XML 文件。
5
你可以写一个脚本,使用mechanize这个工具,来模拟登录谷歌的过程,然后再从你喜欢的网址下载日历。
你可以试试这个:
import mechanize
br=mechanize.Browser()
br.open('https://www.google.com/calendar/exporticalzip')
br.select_form(nr=0)
br['Email']='Username@gmail.com'
br['Passwd']='Password'
br.submit()
br.retrieve('https://www.google.com/calendar/exporticalzip','exportical.zip')
这个方法对我有效,我成功下载了我的压缩日历文件。