Вообщем последние штрихи (ну конечно не считая дизайна, который оставляет желать лучшего). Прикрутил обновления на твиттер, не совсем кроспостинг, а самое интересное, с твитами и ретвитами. Ну с ретвитами всё более мене обычно (см предыдущий пост), а в твитах длинные урлы не очень как-то смотрятся. Хорошо полазив в самом Twitter Api обнаружил что t.co твиттер оставил для внутреннего пользования. Поэтому пришлось поискать сторонние сервисы. Т.к. я попробовал не один попробую представить краткий обзор.
BitLy: Где-то здесь можно зарегистрироваться прямо через твиттер. И для того что бы сокращать урлы, надо получить ключ и логин. Внимательно: логин - это не имя в твиттере, а там где сcылки 'Public Timeline' вида: http://bitly.com/u/o_xxxxxxxxx.rss, можно определить свой логин, который начинается с 'o_'. Как им пользоваться без OAuth (c OAuth - курить я не стал) см. ниже:
Вообщем оно работало но не долго... Спустя сутки перестало, причины в чём же дело я выяснять не стал, толи лимит исчерпался, толи OAuth не подключён. Ждать когда это само собой рассосётся я не стал.BitLy: Где-то здесь можно зарегистрироваться прямо через твиттер. И для того что бы сокращать урлы, надо получить ключ и логин. Внимательно: логин - это не имя в твиттере, а там где сcылки 'Public Timeline' вида: http://bitly.com/u/o_xxxxxxxxx.rss, можно определить свой логин, который начинается с 'o_'. Как им пользоваться без OAuth (c OAuth - курить я не стал) см. ниже:
from google.appengine.api import urlfetch
from urllib import quote, unquote, urlencode
import logging
try:
import json
except ImportError:
import simplejson as json
def bit_shorten(uri):
params = {'login' : BITLY_LOGIN,
'apiKey' : BITLY_KEY,
'domain' : "bit.ly",
'uri' : uri.encode('utf8'),
}
bit_url = "http://api.bit.ly/v3/shorten?%s" % urlencode(params, doseq=True)
try:
res = urlfetch.fetch(bit_url)
except urlfetch.DownloadError, msg:
logging.error(str(msg))
return ""
if res.status_code != 200:
logging.error(res.status_code)
return ""
try:
jj = json.loads(res.content)
except Exception, msg:
logging.error(msg)
return ""
if jj["status_txt"] != "OK":
logging.error(jj["status_txt"])
return ""
else:
return jj["data"]["url"]
Google: Набрал в поиске кто ещё умеет сокращать урлы и на удивление наткнулся на гугл (Кто в твиттере сидит наверное видел ссылки вида goo.gl). Решил попробовать прикрутить его. Для начала идём сюда. Там можно выбрать любой API который предоставляет гугл. Я ограничился только 'Shorten URL'. Честно скажу я хотел сначала использовать OAuth с ключами от серверного приложения, но "что-то пошло не так". И быстро нашёл оправдание что мне не потоком же эти урлы сокращать (лимит в сутки там 1 000 000 запросов), и решил сделать без авторизации но с ключём (без ключа можно тоже слать, но лимит не известен). Выглядит это так:
from google.appengine.api import urlfetch
from urllib import quote, unquote, urlencode
import logging
try:
import json
except ImportError:
import simplejson as json
def gog_shorten(uri):
params = {"key" : GOOGLE_KEY, "longUrl" : uri.encode('utf8')}
gog_url = "https://www.googleapis.com/urlshortener/v1/url"
headers = {"Content-Type" : "application/json"}
payload = json.dumps(params)
try:
res = urlfetch.fetch(gog_url, method=urlfetch.POST, headers=headers, payload=payload)
except urlfetch.DownloadError, msg:
logging.error(str(msg))
return ""
if res.status_code != 200:
logging.error(res.status_code)
return ""
try:
jj = json.loads(res.content)
except Exception, msg:
logging.error(msg)
return ""
return jj["id"]
И это пока пашет... тьфу-тьфу-тьфу.
Комментариев нет:
Отправить комментарий