#python #google-reader
#python #google-reader
Вопрос:
Я использую заметки Google Reader как место для хранения закладок и небольших фрагментов информации. Я хотел бы написать небольшой скрипт, который позволит мне публиковать заметки из командной строки (я предпочитаю Python, но ответ на любом языке будет принят).
Этот проект показался мне хорошим местом для начала, и еще немного актуальной информации здесь. Процесс, похоже,:
- Получить SID (идентификатор сеанса) отhttps://www.google.com/accounts/ClientLogin?service=readeramp;Email ={0} amp; Passwd ={1}
- Получить временный токен из http://www.google.com/reader/api/0/token
- Создайте ПУБЛИКАЦИЮ в http://www.google.com/reader/api/0/item/edit с правильными значениями полей
Итак … шаг 2 выше для меня всегда завершается неудачей (получение 403 запрещено), и попытка кода Martin Doms на C # имеет ту же проблему. Похоже, Google больше не использует этот метод для аутентификации.
Обновить… Этот комментарий заставил меня начать работу. Теперь я могу войти в систему и получить токен. Теперь мне просто нужно выяснить, как ОПУБЛИКОВАТЬ заметку. Мой код приведен ниже:
import urllib2
# Step 1: login to get session auth
email = 'myuser@gmail.com'
passwd = 'mypassword'
response = urllib2.urlopen('https://www.google.com/accounts/ClientLogin?service=readeramp;Email=%samp;Passwd=%s' % (email,passwd))
data = response.read()
credentials = {}
for line in data.split('n'):
fields = line.split('=')
if len(fields)==2:
credentials[fields[0]]=fields[1]
assert credentials.has_key('Auth'),'no Auth in response'
# step 2: get a token
req = urllib2.Request('http://www.google.com/reader/api/0/token')
req.add_header('Authorization', 'GoogleLogin auth=%s' % credentials['Auth'])
response = urllib2.urlopen(req)
# step 3: now POST the details of note
# TBD...
Комментарии:
1. code.google.com/p/pyrfeed/wiki/GoogleReaderAPI Поможет ли это?
2. это полезно, но устарело. Описанный метод аутентификации был удален Google где-то в июне 2010 года
3. ух .. у вас есть
urllib3
.4. исправлена опечатка и удалена неиспользуемая cookielib — спасибо за подсказку!
Ответ №1:
Используя Firebug, вы можете видеть, что отправляется, если вы добавляете заметку Google Reader из браузера.
URL, на который она отправляется, выглядит так:http://www.google.co.uk/reader/api/0/item/edit.
Кажется, что единственными необходимыми параметрами являются ‘T’ (для извлечения токена на шаге 2) и ‘snippet’, который является публикуемой заметкой.
Основываясь на этом, я сделал следующее, которое работает для меня (обратите внимание, импортируйте urllib, а также кодируйте текст сообщения):
# step 3: now POST the details of note
import urllib
token = response.read()
add_note_url = "http://www.google.co.uk/reader/api/0/item/edit"
data = {'snippet' : 'This is the note', 'T' : token}
encoded_data = urllib.urlencode(data)
req = urllib2.Request(add_note_url, encoded_data)
req.add_header('Authorization', 'GoogleLogin auth=%s' % credentials['Auth'])
response = urllib2.urlopen(req)
# this part is optional
if response.code == 200:
print 'Gadzooks!'
else:
print 'Curses and damnation'
Есть пара других параметров, которые вы можете установить, например, ck, linkify, share и т.д., Но все они задокументированы на сайте.
Я оставляю чтение заметки из аргумента командной строки скрипту в качестве упражнения для читателя.
Комментарии:
1. Вот некоторые другие параметры: (‘title’, ‘Это заголовок’), (‘url’, ‘ example.com /’ ), (‘srcTitle’, ‘Это заголовок src’), (‘srcUrl’, ‘ srcurl.com /’ ), (‘теги’, ‘user /-/ label / exampletag’), (‘теги’, ‘user /-/ label /anothertag’), (‘фрагмент’, ‘Это <b> текст</b> фрагмента’), (‘поделиться’, ‘false’), (‘linkify’, ‘false’),