Резервное копирование Календаря Google программно: https://www.google.com/calendar/exporticalzip - PullRequest
4 голосов
/ 26 марта 2010

Я изо всех сил пытаюсь написать скрипт на python, который автоматически захватывает zip-архив, содержащий все мои календари Google, и сохраняет его (в качестве резервной копии) на моем жестком диске.

Я использую ClientLogin для получения токена аутентификации (и успешно могу получить токен).

К сожалению, я не могу получить файл на https://www.google.com/calendar/exporticalzip

Он всегда снова запрашивает учетные данные для входа, возвращая страницу входа в виде html (вместо zip).

Вот критический код:

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 ]

5 голосов
/ 26 марта 2010

Вы можете написать скрипт с mechanize , чтобы пройти через процесс входа в Google перед загрузкой Календаря с предпочитаемого вами URL.

Так что попробуйте:

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')

Это сработало для меня, я успешно загрузил свой сжатый календарь.

0 голосов
/ 03 августа 2010

Отличное решение systemmpuntoout! Для тех из вас, кто использует Google Apps, просто нужно настроить URL-адреса и адрес электронной почты.

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 голосов
/ 26 марта 2010

У календарей есть URL, который позволяет загружать его без аутентификации (см. Пользовательский интерфейс Календаря Google, Настройки календаря, в разделе «Частный URL») Вы должны быть в состоянии загрузить файл iCal или XML, используя urllib без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...