2010-04-01 3 views
0

Поскольку gmail и задача api недоступны во всем мире (например, некоторые компании блокируют gmail, но не календарь), есть ли способ отменить задачу Google через веб-интерфейс календаря?Webscraping Задачи Google через Календарь Google

Я сделал userscript, как показано ниже, но я считаю его слишком хрупким:

// List of div to hide 
idlist = [ 
    'gbar', 
    'logo-container', 
    ... 
]; 

// Hiding by id 
function displayNone(idlist) { 
    for each (id in idlist) { 
     document.getElementById(id).style.display = 'none'; 
    } 
} 
+0

Возможно. Что вы пробовали? К сожалению, SO не является двигателем 'requirements => code'. –

+0

Я попытался сделать сценарий greasmonkey/jquery, который .hide() все ненужные div div календаря, но мне не нравится это решение (его хрупкое). Я попытался посмотреть код javas-google-calendar, чтобы понять вызов ajax, но это было слишком сложно. Если есть более простой/чистый способ доступа к моим данным, это было бы здорово. – ideotop

ответ

0

Я хотел бы предложить разборе фид Atom из календарей, которые вы хотите видеть. Вы можете получать каналы отдельных календарей, выбирая Options Gear> Настройки календаря, затем выбрав вкладку Календари и выбрав желаемый календарь. На экране «Сведения о календаре» вы можете получить фид Atom (XML), канал iCal или календарь HTML/Javascript.

1

Теперь доступен API Google Tasks. Вы можете получить список своих задач через HTTP-запрос, результат вернется в JSON. Существует шаг за шагом, например о том, как написать Google Задачи веб-приложение на Google App Engine в

http://code.google.com/appengine/articles/python/getting_started_with_tasks_api.html

Образец WebAPP выглядит следующим образом:

from google.appengine.dist import use_library 
use_library('django', '1.2') 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp import template 
from google.appengine.ext.webapp.util import run_wsgi_app 
from apiclient.discovery import build 
import httplib2 
from oauth2client.appengine import OAuth2Decorator 
import settings 

decorator = OAuth2Decorator(client_id=settings.CLIENT_ID, 
          client_secret=settings.CLIENT_SECRET, 
          scope=settings.SCOPE, 
          user_agent='mytasks') 


class MainHandler(webapp.RequestHandler): 

    @decorator.oauth_aware 
    def get(self): 
    if decorator.has_credentials(): 
     service = build('tasks', 'v1', http=decorator.http()) 
     result = service.tasks().list(tasklist='@default').execute() 
     tasks = result.get('items', []) 
     for task in tasks: 
     task['title_short'] = truncate(task['title'], 26) 
     self.response.out.write(template.render('templates/index.html', 
               {'tasks': tasks})) 
    else: 
     url = decorator.authorize_url() 
     self.response.out.write(template.render('templates/index.html', 
               {'tasks': [], 
               'authorize_url': url})) 


def truncate(string, length): 
    return string[:length] + '...' if len(string) > length else string 

application = webapp.WSGIApplication([('/', MainHandler)], debug=True) 


def main(): 
    run_wsgi_app(application) 

Обратите внимание, что сначала нужно включить API задач Google в консоли API https://code.google.com/apis/console/b/0/?pli=1