tag:blogger.com,1999:blog-8229267235341482029.post7960775036996251109..comments2023-10-18T05:25:41.091-07:00Comments on Privacy Log: Google Tasks API case studyWilliam Entrikenhttp://www.blogger.com/profile/12013205951793960304noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-8229267235341482029.post-47376251604876583022010-11-17T21:15:44.744-08:002010-11-17T21:15:44.744-08:00Great job fab31! here is fulltext for posterity:
A...Great job fab31! here is fulltext for posterity:<br />A quick python rewrite, can be a start to clean up & improve...<br /><br /><br />#!/usr/bin/env python<br />YOURUSENAME = raw_input('login:')<br />YOURPASSWORD = raw_input('password:')<br /><br />import re<br />from urllib import urlencode<br />import urllib2 as urllib<br /><br />login = urllib.urlopen('https://www.google.com/accounts/ClientLogin', data=urlencode({<br /> 'Email' : YOURUSENAME+'@gmail.com' ,<br /> 'Passwd' : YOURPASSWORD ,<br /> 'source' : 'privacylog' ,<br /> 'service': 'goanna_mobile' ,<br />}))<br /><br />token = login.read()<br />AUTH = (line.split('=', 1)[1] for line in token.split('\n') if line.startswith('Auth=')).next()<br />HEADER = {'Authorization': 'GoogleLogin auth='+AUTH}<br />URL = "https://mail.google.com/tasks/m"<br />main = urllib.urlopen(urllib.Request(URL, headers=HEADER))<br /><br />data = main.read()<br />file('/tmp/out.html', 'w').write(data)<br /><br />r = re.compile('.*"([0-9:]{20,25}:0)"')<br />r2 = re.compile('selected="selected">([^<]+).*')<br />#r3 = re.compile('<td +class="text" *>(.*)')<br />r3 = re.compile('(?ms)<input +type="checkbox" +name="tc" +value="(\d+:\d+:\d+)".*?class="text"> *(.*?) *</td></tr>$')<br /><br />for line in data.split('\n'):<br /> m = r.match(line)<br /> if m:<br /> list_id = m.groups()[0]<br /> site = urllib.urlopen(urllib.Request(URL+"?listid="+list_id, headers=HEADER))<br /> content = site.read()<br /> #r3 = re.compile('value="'+list_id+':\d+" *> [^\n]*('<br /> #print "X"*80<br /> #print list_id<br /> title = r2.findall(content)[0]<br /> tasks = r3.findall(content)<br /> print title.center(80)<br /> for t in tasks:<br /> if t:<br /> print t<br /> open('/tmp/tid_'+list_id, 'w').write(content)William Entrikenhttps://www.blogger.com/profile/12013205951793960304noreply@blogger.comtag:blogger.com,1999:blog-8229267235341482029.post-6490138217448436942010-11-17T13:29:30.010-08:002010-11-17T13:29:30.010-08:00A quick python rewrite:
http://pastebin.ca/199495...A quick python rewrite:<br /><br />http://pastebin.ca/1994952fab31https://www.blogger.com/profile/12056308462075190241noreply@blogger.comtag:blogger.com,1999:blog-8229267235341482029.post-11192361048786852682010-09-22T12:52:44.559-07:002010-09-22T12:52:44.559-07:00Use these lines instead because they are cross pla...Use these lines instead because they are cross platform (sed parses escape sequences different on Mac and Linux)<br /><br />title=$(perl -ne 'die "$1\n" for m/"selected">([^<]+).*/' list 2>&1)<br />perl -ne 'print "[ ] $1\n" for m/"text">([^<]+)/' list >> messageWilliam Entrikenhttps://www.blogger.com/profile/12013205951793960304noreply@blogger.comtag:blogger.com,1999:blog-8229267235341482029.post-54365503356305257552010-09-20T08:39:21.647-07:002010-09-20T08:39:21.647-07:00So now when you wake up, the coffee is already bre...So now when you wake up, the coffee is already brewed and the task list is automatically printed. Put a wireless printer in the kitchen. No, I'm serious.William Entrikenhttps://www.blogger.com/profile/12013205951793960304noreply@blogger.com