diff -up gwibber-3.0.0/gwibber/microblog/brightkite.py.kitchen gwibber-3.0.0/gwibber/microblog/brightkite.py --- gwibber-3.0.0/gwibber/microblog/brightkite.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/brightkite.py 2011-04-05 22:42:25.792000095 -0400 @@ -8,6 +8,7 @@ SegPhault (Ryan Paul) - 10/19/2008 from . import support import urllib2, urllib, base64, re, simplejson from xml.dom import minidom +from kitchen.text.converters import to_unicode PROTOCOL_INFO = { "name": "BrightKite", @@ -34,62 +35,62 @@ class Message: def __init__(self, client, data): self.client = client self.account = client.account - self.service = client.account["service"] - self.username = client.account["username"] + self.service = to_unicode(client.account["service"]) + self.username = to_unicode(client.account["username"]) - self.sender = data["creator"]["fullname"] - self.sender_nick = data["creator"]["login"] - self.sender_id = data["creator"]["login"] - self.image = data["creator"]["small_avatar_url"] + self.sender = to_unicode(data["creator"]["fullname"]) + self.sender_nick = to_unicode(data["creator"]["login"]) + self.sender_id = to_unicode(data["creator"]["login"]) + self.image = to_unicode(data["creator"]["small_avatar_url"]) self.time = support.parse_time(data["created_at"]) - self.text = data["body"] or "" - self.bgcolor = "message_color" - self.id = data["id"] + self.text = to_unicode(data["body"]) or u"" + self.bgcolor = u"message_color" + self.id = to_unicode(data["id"]) - self.url = "http://brightkite.com/objects/%s" % data["id"] - self.profile_url = "http://brightkite.com/people/%s" % self.sender_nick + self.url = to_unicode("http://brightkite.com/objects/%s" % data["id"]) + self.profile_url = to_unicode("http://brightkite.com/people/%s" % self.sender_nick) - self.html_string = '<span class="text">%s</span>' % \ + self.html_string = to_unicode('<span class="text">%s</span>' % \ NICK_PARSE.sub('@<a class="inlinenick" href="http://brightkite.com/people/\\1">\\1</a>', - support.linkify(self.text)) + support.linkify(self.text))) self.is_reply = ("@%s" % self.username) in self.text self.can_thread = data["comments_count"] > 0 # Geolocation - self.location_lon = data["place"]["longitude"] - self.location_lat = data["place"]["latitude"] - self.location_id = data["place"]["id"] - self.location_name = data["place"]["name"] - self.location_fullname = data["place"]["display_location"] + self.location_lon = to_unicode(data["place"]["longitude"]) + self.location_lat = to_unicode(data["place"]["latitude"]) + self.location_id = to_unicode(data["place"]["id"]) + self.location_name = to_unicode(data["place"]["name"]) + self.location_fullname = to_unicode(data["place"]["display_location"]) self.geo_position = (self.location_lat, self.location_lon) if "photo" in data: - self.thumbnails = [{"src": data["photo"], "href": data["photo"]}] + self.thumbnails = [{"src": to_unicode(data["photo"]), "href": to_unicode(data["photo"])}] class Comment: def __init__(self, client, data): self.client = client self.account = client.account - self.service = client.account["service"] - self.username = client.account["username"] + self.service = to_unicode(client.account["service"]) + self.username = to_unicode(client.account["username"]) - self.sender = data["user"]["fullname"] - self.sender_nick = data["user"]["login"] - self.sender_id = data["user"]["login"] - self.image = data["user"]["small_avatar_url"] + self.sender = to_unicode(data["user"]["fullname"]) + self.sender_nick = to_unicode(data["user"]["login"]) + self.sender_id = to_unicode(data["user"]["login"]) + self.image = to_unicode(data["user"]["small_avatar_url"]) self.time = support.parse_time(data["created_at"]) - self.text = data["comment"] - self.bgcolor = "message_color" + self.text = to_unicode(data["comment"]) + self.bgcolor = u"message_color" - self.url = "http://brightkite.com/objects/%s" % data["place_object"]["id"] - self.profile_url = "http://brightkite.com/people/%s" % self.sender_nick + self.url = to_unicode("http://brightkite.com/objects/%s" % data["place_object"]["id"]) + self.profile_url = to_unicode("http://brightkite.com/people/%s" % self.sender_nick) - self.html_string = '<span class="text">%s</span>' % \ + self.html_string = to_unicode('<span class="text">%s</span>' % \ NICK_PARSE.sub('@<a class="inlinenick" href="http://brightkite.com/people/\\1">\\1</a>', - support.linkify(self.text)) + support.linkify(self.text))) self.is_reply = ("@%s" % self.username) in self.text @@ -97,26 +98,26 @@ class FriendPosition: def __init__(self, client, data): self.client = client self.account = client.account - self.service = client.account["service"] - self.username = client.account["username"] - self.sender = data["fullname"] - self.sender_nick = data["login"] + self.service = to_unicode(client.account["service"]) + self.username = to_unicode(client.account["username"]) + self.sender = to_unicode(data["fullname"]) + self.sender_nick = to_unicode(data["login"]) self.sender_id = self.sender_nick self.time = support.parse_time(data["last_checked_in"]) - self.text = data["place"]["display_location"] - self.image = data["small_avatar_url"] - self.image_small = data["smaller_avatar_url"] - self.bgcolor = "message_color" - self.url = "http://brightkite.com" # TODO - self.profile_url = "http://brightkite.com" # TODO + self.text = to_unicode(data["place"]["display_location"]) + self.image = to_unicode(data["small_avatar_url"]) + self.image_small = to_unicode(data["smaller_avatar_url"]) + self.bgcolor = u"message_color" + self.url = u"http://brightkite.com" # TODO + self.profile_url = u"http://brightkite.com" # TODO self.is_reply = False # Geolocation - self.location_lon = data["place"]["longitude"] - self.location_lat = data["place"]["latitude"] - self.location_id = data["place"]["id"] - self.location_name = data["place"]["name"] - self.location_fullname = data["place"]["display_location"] + self.location_lon = to_unicode(data["place"]["longitude"]) + self.location_lat = to_unicode(data["place"]["latitude"]) + self.location_id = to_unicode(data["place"]["id"]) + self.location_name = to_unicode(data["place"]["name"]) + self.location_fullname = to_unicode(data["place"]["display_location"]) class Client: def __init__(self, acct): diff -up gwibber-3.0.0/gwibber/microblog/dispatcher.py.kitchen gwibber-3.0.0/gwibber/microblog/dispatcher.py --- gwibber-3.0.0/gwibber/microblog/dispatcher.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/dispatcher.py 2011-04-05 22:42:25.793000095 -0400 @@ -5,6 +5,7 @@ import multiprocessing, threading, trace import gobject, dbus, dbus.service import sqlite3, mx.DateTime, re, uuid import urlshorter, storage, network, util, config +from kitchen.text.converters import to_unicode from gettext import lgettext as _ import signal @@ -59,9 +60,9 @@ def perform_operation((account, opname, for m in message_data: try: if isinstance(m, dict) and m.has_key("mid"): - m["id"] = uuid.uuid1().hex - m["operation"] = opname - m["stream"] = stream + m["id"] = to_unicode(uuid.uuid1().hex) + m["operation"] = to_unicode(opname) + m["stream"] = to_unicode(stream) m["transient"] = transient m["rtl"] = util.isRTL(re.sub(text_cleaner, "", m["text"].decode('utf-8'))) if m.has_key("type"): diff -up gwibber-3.0.0/gwibber/microblog/plugins/buzz/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/buzz/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/buzz/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/buzz/__init__.py 2011-04-05 22:42:26.198000096 -0400 @@ -2,6 +2,7 @@ from gwibber.microblog import network, u from gwibber.microblog.util import resources import json from oauth import oauth +from kitchen.text.converters import to_unicode PROTOCOL_INFO = { "name": "Buzz", @@ -43,32 +44,32 @@ class Client: def _actor(self, user): return { - "name": user["name"], - "nick": user["id"], - "id": user["id"], - "image": user.get("thumbnailUrl", "https://mail.google.com/mail/images/blue_ghost.jpg?sz=45"), - "url": user.get("profileUrl", None), + "name": to_unicode(user["name"]), + "nick": to_unicode(user["id"]), + "id": to_unicode(user["id"]), + "image": to_unicode(user.get("thumbnailUrl", "https://mail.google.com/mail/images/blue_ghost.jpg?sz=45")), + "url": to_unicode(user.get("profileUrl", None)), "is_me": user["id"] == self.account["user_id"], } def _message(self, data): m = { "mid": data["id"], - "service": "buzz", - "account": self.account["id"], + "service": u"buzz", + "account": to_unicode(self.account["id"]), "time": util.parsetime(data["published"]), - "url": data.get("links", {})["alternate"][0].get("href", ""), - "source": data.get("source", {}).get("title", None), + "url": to_unicode(data.get("links", {})["alternate"][0].get("href", "")), + "source": to_unicode(data.get("source", {}).get("title", None)), "sender": self._actor(data["actor"]), } - m["text"] = data["object"]["content"] + m["text"] = to_unicode(data["object"]["content"]) if data.get("source", {}).get("title", 0) == "Twitter": m["text"] = m["text"].split(">:", 1)[1].strip() - m["html"] = m["text"] - m["content"] = m["text"] + m["html"] = to_unicode(m["text"]) + m["content"] = to_unicode(m["text"]) if data.get("geocode", 0): m["location"] = { @@ -77,24 +78,24 @@ class Client: } if data.get("address", 0): - m["location"]["address"] = data["address"] + m["location"]["address"] = to_unicode(data["address"]) m["images"] = [] for a in data["object"].get("attachments", []): if a["type"] == "photo": m["images"].append({ - "src": a["links"]["preview"][0]["href"], - "url": a["links"]["enclosure"][0]["href"] + "src": to_unicode(a["links"]["preview"][0]["href"]), + "url": to_unicode(a["links"]["enclosure"][0]["href"]) }) if a["type"] == "video": m["images"].append({ - "src": a["links"]["preview"][0]["href"], - "url": a["links"]["alternate"][0]["href"], + "src": to_unicode(a["links"]["preview"][0]["href"]), + "url": to_unicode(a["links"]["alternate"][0]["href"]), }) if a["type"] == "article": - m["content"] += "<p><b><a href=\"%s\">%s</a></b></p>" % (a["links"]["alternate"][0]["href"], a["title"]) + m["content"] += to_unicode("<p><b><a href=\"%s\">%s</a></b></p>" % (a["links"]["alternate"][0]["href"], a["title"])) return m diff -up gwibber-3.0.0/gwibber/microblog/plugins/digg/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/digg/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/digg/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/digg/__init__.py 2011-04-05 22:42:26.217000096 -0400 @@ -1,6 +1,7 @@ from gwibber.microblog import network, util from gwibber.microblog.util import resources from gettext import lgettext as _ +from kitchen.text.converters import to_unicode PROTOCOL_INFO = { "name": "Digg", @@ -33,33 +34,33 @@ class Client: def _story(self, data): m = {}; m["mid"] = str(data["id"]) - m["service"] = "digg" - m["account"] = self.account["id"] + m["service"] = u"digg" + m["account"] = to_unicode(self.account["id"]) m["time"] = data["submit_date"] - m["text"] = data["title"] + "\n" + data["description"] - m["content"] = "<b>%(title)s</b><br />%(description)s" % data - m["html"] = "<b>%(title)s</b><br />%(description)s" % data + m["text"] = to_unicode(data["title"]) + u"\n" + to_unicode(data["description"]) + m["content"] = to_unicode("<b>%(title)s</b><br />%(description)s" % data) + m["html"] = to_unicode("<b>%(title)s</b><br />%(description)s" % data) user = data["friends"]["users"][0] m["sender"] = {} - m["sender"]["nick"] = user["name"] - m["sender"]["id"] = user["name"] - m["sender"]["image"] = user["icon"] - m["sender"]["url"] = "http://digg.com/users/%s" % user["name"] + m["sender"]["nick"] = to_unicode(user["name"]) + m["sender"]["id"] = to_unicode(user["name"]) + m["sender"]["image"] = to_unicode(user["icon"]) + m["sender"]["url"] = to_unicode("http://digg.com/users/%s" % user["name"]) m["sender"]["is_me"] = user["name"] == self.account["username"] - if user.get("fullname", 0): m["sender"]["name"] = user["fullname"] + if user.get("fullname", 0): m["sender"]["name"] = to_unicode(user["fullname"]) - m["url"] = data["link"] + m["url"] = to_unicode(data["link"]) m["likes"] = {"count": data["diggs"]} - m["html"] = util.linkify(m["text"], + m["html"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="%s#search?q=\\1">\\1</a>' % URL_PREFIX), - (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % URL_PREFIX))) + (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % URL_PREFIX)))) - m["content"] = util.linkify(m["text"], + m["content"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="gwibber:/tag?acct=%s&query=\\1">\\1</a>' % m["account"]), - (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"]))) + (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"])))) return m diff -up gwibber-3.0.0/gwibber/microblog/plugins/facebook/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/facebook/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/facebook/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/facebook/__init__.py 2011-04-05 22:42:26.223000093 -0400 @@ -6,6 +6,7 @@ import hashlib, mx.DateTime, time from os.path import join, getmtime, exists from gettext import lgettext as _ from gwibber.microblog.util.const import * +from kitchen.text.converters import to_unicode # Try to import * from custom, install custom.py to include packaging # customizations like distro API keys, etc try: @@ -101,37 +102,37 @@ class Client: def _sender(self, data): sender = { - "name": data["name"], + "name": to_unicode(data["name"]), "id": str(data.get("id", '')), "is_me": str(data.get("id", '')) == self.user_id, - "image": URL_PREFIX + data["id"] + "/picture", - "url": "https://www.facebook.com/profile.php?id=" + str(data.get("id", '')) + "image": to_unicode(URL_PREFIX) + to_unicode(data["id"]) + u"/picture", + "url": u"https://www.facebook.com/profile.php?id=" + to_unicode(str(data.get("id", ''))) } return sender def _message(self, data): m = {} - m["mid"] = str(data["id"]) - m["service"] = "facebook" + m["mid"] = to_unicode(str(data["id"])) + m["service"] = u"facebook" m["account"] = self.account["id"] m["time"] = int(mx.DateTime.DateTimeFrom(str(data.get("updated_time", data["created_time"])))) - m["url"] = "https://facebook.com/" + data["id"].split("_")[0] + "/posts/" + data["id"].split("_")[1] + m["url"] = u"https://facebook.com/" + to_unicode(data["id"].split("_")[0]) + u"/posts/" + to_unicode(data["id"].split("_")[1]) if data.get("attribution", 0): - m["source"] = util.strip_urls(data["attribution"]).replace("via ", "") + m["source"] = to_unicode(util.strip_urls(data["attribution"]).replace("via ", "")) if data.has_key("message"): m["to_me"] = ("@%s" % self.account["username"]) in data["message"] if data.get("message", "").strip(): - m["text"] = data["message"] - m["html"] = util.linkify(data["message"]) - m["content"] = m["html"] + m["text"] = to_unicode(data["message"]) + m["html"] = to_unicode(util.linkify(data["message"])) + m["content"] = to_unicode(m["html"]) else: - m["text"] = "" - m["html"] = "" - m["content"] = "" + m["text"] = u"" + m["html"] = u"" + m["content"] = u"" m["sender"] = self._sender(data["from"]) @@ -182,17 +183,17 @@ class Client: if data["comments"].has_key("data"): for item in data["comments"]["data"]: m["comments"].append({ - "text": item["message"], + "text": to_unicode(item["message"]), "time": int(mx.DateTime.DateTimeFrom(str(data.get("updated_time", data["created_time"])))), "sender": self._sender(item["from"]), }) if data.get("attachment", 0): if data["attachment"].get("name", 0): - m["content"] += "<p><b>%s</b></p>" % data["attachment"]["name"] + m["content"] += to_unicode("<p><b>%s</b></p>" % data["attachment"]["name"]) if data["attachment"].get("description", 0): - m["content"] += "<p>%s</p>" % data["attachment"]["description"] + m["content"] += to_unicode("<p>%s</p>" % data["attachment"]["description"]) return m diff -up gwibber-3.0.0/gwibber/microblog/plugins/identica/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/identica/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/identica/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/identica/__init__.py 2011-04-05 22:42:26.227000096 -0400 @@ -4,6 +4,7 @@ import gnomekeyring from oauth import oauth from gwibber.microblog.util import log, resources from gettext import lgettext as _ +from kitchen.text.converters import to_unicode log.logger.name = "Identi.ca" PROTOCOL_INFO = { @@ -59,27 +60,27 @@ class Client: m = {} try: m["mid"] = str(data["id"]) - m["service"] = "identica" + m["service"] = u"identica" m["account"] = self.account["id"] m["time"] = util.parsetime(data["created_at"]) - m["source"] = data.get("source", False) - m["text"] = data["text"] + m["source"] = to_unicode(data.get("source", False)) + m["text"] = to_unicode(data["text"]) m["to_me"] = ("@%s" % self.account["username"]) in data["text"] - m["html"] = util.linkify(m["text"], + m["html"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="%s#search?q=\\1">\\1</a>' % self.url_prefix), - (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % self.url_prefix))) + (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % self.url_prefix)))) - m["content"] = util.linkify(m["text"], + m["content"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="gwibber:/tag?acct=%s&query=\\1">\\1</a>' % m["account"]), - (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"]))) + (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"])))) images = [] if data.get("attachments", 0): for a in data["attachments"]: mime = a.get("mimetype", "") if mime and mime.startswith("image") and a.get("url", 0): - images.append({"src": a["url"], "url": a["url"]}) + images.append({"src": to_unicode(a["url"]), "url": to_unicode(a["url"])}) images.extend(util.imgpreview(m["text"])) @@ -98,33 +99,33 @@ class Client: if data["in_reply_to_status_id"]: m["reply"] = {} m["reply"]["id"] = data["in_reply_to_status_id"] - m["reply"]["nick"] = data["in_reply_to_screen_name"] - m["reply"]["url"] = "/".join((self.url_prefix, "notice", str(m["reply"]["id"]))) + m["reply"]["nick"] = to_unicode(data["in_reply_to_screen_name"]) + m["reply"]["url"] = to_unicode("/".join((self.url_prefix, "notice", str(m["reply"]["id"])))) user = data.get("user", data.get("sender", 0)) m["sender"] = {} - m["sender"]["name"] = user["name"] - m["sender"]["nick"] = user["screen_name"] + m["sender"]["name"] = to_unicode(user["name"]) + m["sender"]["nick"] = to_unicode(user["screen_name"]) m["sender"]["id"] = user["id"] - m["sender"]["location"] = user["location"] + m["sender"]["location"] = to_unicode(user["location"]) m["sender"]["followers"] = user["followers_count"] - m["sender"]["image"] = user["profile_image_url"] - m["sender"]["url"] = "/".join((self.url_prefix, m["sender"]["nick"])) + m["sender"]["image"] = to_unicode(user["profile_image_url"]) + m["sender"]["url"] = to_unicode("/".join((self.url_prefix, m["sender"]["nick"]))) m["sender"]["is_me"] = m["sender"]["nick"] == self.account["username"] - m["url"] = "/".join((self.url_prefix, "notice", m["mid"])) + m["url"] = to_unicode("/".join((self.url_prefix, "notice", m["mid"]))) return m def _private(self, data): m = self._message(data) m["private"] = True m["recipient"] = {} - m["recipient"]["name"] = data["recipient"]["name"] - m["recipient"]["nick"] = data["recipient"]["screen_name"] + m["recipient"]["name"] = to_unicode(data["recipient"]["name"]) + m["recipient"]["nick"] = to_unicode(data["recipient"]["screen_name"]) m["recipient"]["id"] = data["recipient"]["id"] - m["recipient"]["image"] = data["recipient"]["profile_image_url"] - m["recipient"]["location"] = data["recipient"]["location"] - m["recipient"]["url"] = "/".join((self.url_prefix, m["recipient"]["nick"])) + m["recipient"]["image"] = to_unicode(data["recipient"]["profile_image_url"]) + m["recipient"]["location"] = to_unicode(data["recipient"]["location"]) + m["recipient"]["url"] = to_unicode("/".join((self.url_prefix, m["recipient"]["nick"]))) m["recipient"]["is_me"] = m["recipient"]["nick"].lower() == self.account["username"].lower() m["to_me"] = m["recipient"]["is_me"] return m @@ -135,14 +136,14 @@ class Client: if data["to_user_id"]: m["reply"] = {} m["reply"]["id"] = data["to_user_id"] - m["reply"]["nick"] = data["to_user"] + m["reply"]["nick"] = to_unicode(data["to_user"]) m["sender"] = {} - m["sender"]["nick"] = data["from_user"] + m["sender"]["nick"] = to_unicode(data["from_user"]) m["sender"]["id"] = data["from_user_id"] - m["sender"]["image"] = data["profile_image_url"] - m["sender"]["url"] = "/".join((self.url_prefix, m["sender"]["nick"])) - m["url"] = "/".join((self.url_prefix, "notice", str(m["mid"]))) + m["sender"]["image"] = to_unicode(data["profile_image_url"]) + m["sender"]["url"] = to_unicode("/".join((self.url_prefix, m["sender"]["nick"]))) + m["url"] = to_unicode("/".join((self.url_prefix, "notice", str(m["mid"])))) return m def _get(self, path, parse="message", post=False, single=False, **args): diff -up gwibber-3.0.0/gwibber/microblog/plugins/statusnet/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/statusnet/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/statusnet/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/statusnet/__init__.py 2011-04-05 22:42:26.231000093 -0400 @@ -4,6 +4,7 @@ import gnomekeyring from oauth import oauth from gwibber.microblog.util import log, resources from gettext import lgettext as _ +from kitchen.text.converters import to_unicode log.logger.name = "StatusNet" PROTOCOL_INFO = { @@ -65,27 +66,27 @@ class Client: m = {} try: m["mid"] = str(data["id"]) - m["service"] = "statusnet" + m["service"] = u"statusnet" m["account"] = self.account["id"] m["time"] = util.parsetime(data["created_at"]) - m["source"] = data.get("source", False) - m["text"] = data["text"] + m["source"] = to_unicode(data.get("source", False)) + m["text"] = to_unicode(data["text"]) m["to_me"] = ("@%s" % self.account["username"]) in data["text"] - m["html"] = util.linkify(m["text"], + m["html"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="%s#search?q=\\1">\\1</a>' % self.account["url_prefix"]), - (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % self.account["url_prefix"]))) + (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % self.account["url_prefix"])))) - m["content"] = util.linkify(m["text"], + m["content"] = to_unicode(util.linkify(m["text"], ((util.PARSE_HASH, '#<a class="hash" href="gwibber:/tag?acct=%s&query=\\1">\\1</a>' % m["account"]), - (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"]))) + (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"])))) images = [] if data.get("attachments", 0): for a in data["attachments"]: mime = a.get("mimetype", "") if mime and mime.startswith("image") and a.get("url", 0): - images.append({"src": a["url"], "url": a["url"]}) + images.append({"src": to_unicode(a["url"]), "url": to_unicode(a["url"])}) images.extend(util.imgpreview(m["text"])) @@ -104,33 +105,33 @@ class Client: if data["in_reply_to_status_id"]: m["reply"] = {} m["reply"]["id"] = data["in_reply_to_status_id"] - m["reply"]["nick"] = data["in_reply_to_screen_name"] - m["reply"]["url"] = "/".join((self.account["url_prefix"], "notice", str(m["reply"]["id"]))) + m["reply"]["nick"] = to_unicode(data["in_reply_to_screen_name"]) + m["reply"]["url"] = to_unicode("/".join((self.account["url_prefix"], "notice", str(m["reply"]["id"])))) user = data.get("user", data.get("sender", 0)) m["sender"] = {} - m["sender"]["name"] = user["name"] - m["sender"]["nick"] = user["screen_name"] + m["sender"]["name"] = to_unicode(user["name"]) + m["sender"]["nick"] = to_unicode(user["screen_name"]) m["sender"]["id"] = user["id"] - m["sender"]["location"] = user["location"] + m["sender"]["location"] = to_unicode(user["location"]) m["sender"]["followers"] = user["followers_count"] - m["sender"]["image"] = user["profile_image_url"] - m["sender"]["url"] = "/".join((self.account["url_prefix"], m["sender"]["nick"])) + m["sender"]["image"] = to_unicode(user["profile_image_url"]) + m["sender"]["url"] = to_unicode("/".join((self.account["url_prefix"], m["sender"]["nick"]))) m["sender"]["is_me"] = m["sender"]["nick"] == self.account["username"] - m["url"] = "/".join((self.account["url_prefix"], "notice", m["mid"])) + m["url"] = to_unicode("/".join((self.account["url_prefix"], "notice", m["mid"]))) return m def _private(self, data): m = self._message(data) m["private"] = True m["recipient"] = {} - m["recipient"]["name"] = data["recipient"]["name"] - m["recipient"]["nick"] = data["recipient"]["screen_name"] + m["recipient"]["name"] = to_unicode(data["recipient"]["name"]) + m["recipient"]["nick"] = to_unicode(data["recipient"]["screen_name"]) m["recipient"]["id"] = data["recipient"]["id"] - m["recipient"]["image"] = data["recipient"]["profile_image_url"] - m["recipient"]["location"] = data["recipient"]["location"] - m["recipient"]["url"] = "/".join((self.account["url_prefix"], m["recipient"]["nick"])) + m["recipient"]["image"] = to_unicode(data["recipient"]["profile_image_url"]) + m["recipient"]["location"] = to_unicode(data["recipient"]["location"]) + m["recipient"]["url"] = to_unicode("/".join((self.account["url_prefix"], m["recipient"]["nick"]))) m["recipient"]["is_me"] = m["recipient"]["nick"].lower() == self.account["username"].lower() m["to_me"] = m["recipient"]["is_me"] return m @@ -144,11 +145,11 @@ class Client: m["reply"]["nick"] = data["to_user"] m["sender"] = {} - m["sender"]["nick"] = data["from_user"] + m["sender"]["nick"] = to_unicode(data["from_user"]) m["sender"]["id"] = data["from_user_id"] - m["sender"]["image"] = data["profile_image_url"] - m["sender"]["url"] = "/".join((self.account["url_prefix"], m["sender"]["nick"])) - m["url"] = "/".join((self.account["url_prefix"], "notice", str(m["mid"]))) + m["sender"]["image"] = to_unicode(data["profile_image_url"]) + m["sender"]["url"] = to_unicode("/".join((self.account["url_prefix"], m["sender"]["nick"]))) + m["url"] = to_unicode("/".join((self.account["url_prefix"], "notice", str(m["mid"])))) return m def _get(self, path, parse="message", post=False, single=False, **args): diff -up gwibber-3.0.0/gwibber/microblog/plugins/twitter/__init__.py.kitchen gwibber-3.0.0/gwibber/microblog/plugins/twitter/__init__.py --- gwibber-3.0.0/gwibber/microblog/plugins/twitter/__init__.py.kitchen 2011-04-05 17:06:50.000000000 -0400 +++ gwibber-3.0.0/gwibber/microblog/plugins/twitter/__init__.py 2011-04-05 22:44:50.594000094 -0400 @@ -5,6 +5,7 @@ import gnomekeyring from oauth import oauth from gwibber.microblog.util import log, resources from gettext import lgettext as _ +from kitchen.text.converters import to_unicode log.logger.name = "Twitter" PROTOCOL_INFO = { @@ -76,19 +77,19 @@ class Client: m = {}; try: m["mid"] = str(data["id"]) - m["service"] = "twitter" + m["service"] = u"twitter" m["account"] = self.account["id"] m["time"] = util.parsetime(data["created_at"]) - m["text"] = unescape(data["text"]) + m["text"] = to_unicode(unescape(data["text"])) m["to_me"] = ("@%s" % self.account["username"]) in data["text"] - m["html"] = util.linkify(data["text"], + m["html"] = to_unicode(util.linkify(data["text"], ((util.PARSE_HASH, '#<a class="hash" href="%s#search?q=\\1">\\1</a>' % URL_PREFIX), - (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % URL_PREFIX)), escape=False) + (util.PARSE_NICK, '@<a class="nick" href="%s/\\1">\\1</a>' % URL_PREFIX)), escape=False)) - m["content"] = util.linkify(data["text"], + m["content"] = to_unicode(util.linkify(data["text"], ((util.PARSE_HASH, '#<a class="hash" href="gwibber:/tag?acct=%s&query=\\1">\\1</a>' % m["account"]), - (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"])), escape=False) + (util.PARSE_NICK, '@<a class="nick" href="gwibber:/user?acct=%s&name=\\1">\\1</a>' % m["account"])), escape=False)) if data.has_key("retweeted_status"): m["retweeted_status"] = data["retweeted_status"] @@ -107,13 +108,13 @@ class Client: def _user(self, user): return { - "name": user["name"], - "nick": user["screen_name"], + "name": to_unicode(user["name"]), + "nick": to_unicode(user["screen_name"]), "id": user["id"], - "location": user["location"], + "location": to_unicode(user["location"]), "followers": user.get("followers", None), - "image": user["profile_image_url"], - "url": "/".join((URL_PREFIX, user["screen_name"])), + "image": to_unicode(user["profile_image_url"]), + "url": to_unicode("/".join((URL_PREFIX, user["screen_name"]))), "is_me": user["screen_name"] == self.account["username"], } @@ -128,14 +129,14 @@ class Client: if data["in_reply_to_status_id"]: m["reply"] = {} m["reply"]["id"] = data["in_reply_to_status_id"] - m["reply"]["nick"] = data["in_reply_to_screen_name"] + m["reply"]["nick"] = to_unicode(data["in_reply_to_screen_name"]) if m["reply"]["id"] and m["reply"]["nick"]: - m["reply"]["url"] = "/".join((URL_PREFIX, m["reply"]["nick"], "statuses", str(m["reply"]["id"]))) + m["reply"]["url"] = to_unicode("/".join((URL_PREFIX, m["reply"]["nick"], "statuses", str(m["reply"]["id"])))) else: m["reply"]["url"] = None m["sender"] = self._user(data["user"] if "user" in data else data["sender"]) - m["url"] = "/".join((m["sender"]["url"], "statuses", str(m["mid"]))) + m["url"] = to_unicode("/".join((m["sender"]["url"], "statuses", str(m["mid"])))) return m @@ -144,12 +145,12 @@ class Client: m["private"] = True m["recipient"] = {} - m["recipient"]["name"] = data["recipient"]["name"] - m["recipient"]["nick"] = data["recipient"]["screen_name"] + m["recipient"]["name"] = to_unicode(data["recipient"]["name"]) + m["recipient"]["nick"] = to_unicode(data["recipient"]["screen_name"]) m["recipient"]["id"] = data["recipient"]["id"] - m["recipient"]["image"] = data["recipient"]["profile_image_url"] - m["recipient"]["location"] = data["recipient"]["location"] - m["recipient"]["url"] = "/".join((URL_PREFIX, m["recipient"]["nick"])) + m["recipient"]["image"] = to_unicode(data["recipient"]["profile_image_url"]) + m["recipient"]["location"] = to_unicode(data["recipient"]["location"]) + m["recipient"]["url"] = to_unicode("/".join((URL_PREFIX, m["recipient"]["nick"]))) m["recipient"]["is_me"] = m["recipient"]["nick"] == self.account["username"] m["to_me"] = m["recipient"]["is_me"] @@ -161,37 +162,37 @@ class Client: if data["to_user_id"]: m["reply"] = {} m["reply"]["id"] = data["to_user_id"] - m["reply"]["nick"] = data["to_user"] + m["reply"]["nick"] = to_unicode(data["to_user"]) m["sender"] = {} - m["sender"]["nick"] = data["from_user"] + m["sender"]["nick"] = to_unicode(data["from_user"]) m["sender"]["id"] = data["from_user_id"] - m["sender"]["image"] = data["profile_image_url"] - m["sender"]["url"] = "/".join((URL_PREFIX, m["sender"]["nick"])) + m["sender"]["image"] = to_unicode(data["profile_image_url"]) + m["sender"]["url"] = to_unicode("/".join((URL_PREFIX, m["sender"]["nick"]))) m["sender"]["is_me"] = m["sender"]["nick"] == self.account["username"] - m["url"] = "/".join((m["sender"]["url"], "statuses", str(m["mid"]))) + m["url"] = to_unicode("/".join((m["sender"]["url"], "statuses", str(m["mid"])))) return m def _list(self, data): return { "mid": data["id"], - "service": "twitter", + "service": u"twitter", "account": self.account["id"], "time": 0, - "text": data["description"], - "html": data["description"], - "content": data["description"], - "url": "/".join((URL_PREFIX, data["uri"])), - "sender": self._user(data["user"]), - "name": data["name"], - "nick": data["slug"], + "text": to_unicode(data["description"]), + "html": to_unicode(data["description"]), + "content": to_unicode(data["description"]), + "url": to_unicode("/".join((URL_PREFIX, data["uri"]))), + "sender": to_unicode(self._user(data["user"])), + "name": to_unicode(data["name"]), + "nick": to_unicode(data["slug"]), "key": data["slug"], - "full": data["full_name"], - "uri": data["uri"], + "full": to_unicode(data["full_name"]), + "uri": to_unicode(data["uri"]), "mode": data["mode"], "members": data["member_count"], "followers": data["subscriber_count"], - "kind": "list", + "kind": u"list", } def _get(self, path, parse="message", post=False, single=False, **args):