Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 1925ac45285318d14376e396f2d11695 > files > 7

gwibber-2.33.0-7.867bzr.fc14.src.rpm

diff -up gwibber-867bzr/gwibber/microblog/brightkite.py.kitchen gwibber-867bzr/gwibber/microblog/brightkite.py
--- gwibber-867bzr/gwibber/microblog/brightkite.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/brightkite.py	2010-09-25 10:35:44.285191001 -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-867bzr/gwibber/microblog/buzz.py.kitchen gwibber-867bzr/gwibber/microblog/buzz.py
--- gwibber-867bzr/gwibber/microblog/buzz.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/buzz.py	2010-09-25 10:35:44.286191002 -0400
@@ -1,5 +1,6 @@
 import network, util, json
 from oauth import oauth
+from kitchen.text.converters import to_unicode
 
 PROTOCOL_INFO = {
   "name": "Buzz",
@@ -41,32 +42,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"] = {
@@ -75,24 +76,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-867bzr/gwibber/microblog/dispatcher.py.kitchen gwibber-867bzr/gwibber/microblog/dispatcher.py
--- gwibber-867bzr/gwibber/microblog/dispatcher.py.kitchen	2010-09-25 10:35:44.252191000 -0400
+++ gwibber-867bzr/gwibber/microblog/dispatcher.py	2010-09-25 10:35:44.287191002 -0400
@@ -8,6 +8,7 @@ import qaiku, friendfeed, digg, buzz, pi
 import foursquare, gowalla
 import sqlite3, mx.DateTime, re, uuid
 import urlshorter, storage, network, util, config
+from kitchen.text.converters import to_unicode
 
 from util import log
 from util import resources
@@ -86,9 +87,9 @@ def perform_operation((account, opname, 
     if message_data is not None:
       for m in message_data:
         if "mid" in m:
-          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')))
 
diff -up gwibber-867bzr/gwibber/microblog/facebook.py.kitchen gwibber-867bzr/gwibber/microblog/facebook.py
--- gwibber-867bzr/gwibber/microblog/facebook.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/facebook.py	2010-09-25 10:40:22.387190997 -0400
@@ -6,6 +6,7 @@ import hashlib, mx.DateTime, time
 from os.path import join, getmtime, exists
 from gettext import lgettext as _
 from 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:
@@ -90,44 +91,44 @@ class Client:
 
   def _sender(self, user):
     sender = {
-      "name": user["name"],
-      "id": str(user["id"]),
+      "name": to_unicode(user["name"]),
+      "id": user["id"],
       "is_me": str(user["id"]) == self.user_id,
-      "url": user["url"],
-      "image": user["pic_square"],
+      "url": to_unicode(user["url"]),
+      "image": to_unicode(user["pic_square"]),
     }
     
     if user["url"] and not "?" in user["url"]:
-      sender["nick"] = user["url"].rsplit("/", 1)[-1]
+      sender["nick"] = to_unicode(user["url"].rsplit("/", 1)[-1])
     return sender
   
   def _message(self, data, profiles):
     m = {}
-    m["mid"] = str(data["post_id"])
-    m["service"] = "facebook"
+    m["mid"] = to_unicode(data["post_id"])
+    m["service"] = u"facebook"
     m["account"] = self.account["id"]
     m["time"] = int(mx.DateTime.DateTimeFrom(int(data['created_time'])).gmtime())
-    m["url"] = data["permalink"]
+    m["url"] = to_unicode(data["permalink"])
 
     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.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""
 
     if data.get("actor_id", 0) in profiles:
       m["sender"] = self._sender(profiles[data["actor_id"]])
 
     if data.get("likes", {}).get("count", None):
       m["likes"] = {
-        "count": data["likes"]["count"],
-        "url": data["likes"]["href"],
+        "count": to_unicode(data["likes"]["count"]),
+        "url": to_unicode(data["likes"]["href"]),
       }
 
     if data.get("comments", 0):
@@ -135,100 +136,100 @@ class Client:
       for item in data["comments"]["comment_list"]:
         if item["fromid"] in profiles:
           m["comments"].append({
-            "text": item["text"],
+            "text": to_unicode(item["text"]),
             "time": int(mx.DateTime.DateTimeFrom(int(item["time"])).gmtime()),
             "sender": self._sender(profiles[item["fromid"]]),
           })
 
     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"])
 
       m["images"] = []
       for a in data["attachment"].get("media", []):
         if a["type"] in ["photo", "video", "link"]:
           if a.get("src", 0):
             if a["src"].startswith("/"):
-              a["src"] = "http://facebook.com" + a["src"]
-            m["images"].append({"src": a["src"], "url": a["href"]})
+              a["src"] = u"http://facebook.com" + to_unicode(a["src"])
+            m["images"].append({"src": a["src"], "url": to_unicode(a["href"])})
 
     return m
 
   def _comment(self, data, profiles):
     user = profiles[data["fromid"]]
     return {
-      "mid": str(data["id"]),
-      "service": "facebook",
+      "mid": to_unicode(data["id"]),
+      "service": u"facebook",
       "account": self.account["id"],
       "time": int(mx.DateTime.DateTimeFrom(int(data['time'])).gmtime()),
-      "text": "@%s: %s" % (self.account["username"], data["text"]),
-      "content": "@%s: %s" % (self.account["username"], data["text"]),
-      "html": "@%s: %s" % (self.account["username"], data["text"]),
+      "text": to_unicode("@%s: %s" % (self.account["username"], data["text"])),
+      "content": to_unicode("@%s: %s" % (self.account["username"], data["text"])),
+      "html": to_unicode("@%s: %s" % (self.account["username"], data["text"])),
       "reply": {
         "id": data["post_id"],
-        "nick": self.account["username"],
-        "url": POST_URL % (self.user_id, data["object_id"]),
+        "nick": to_unicode(self.account["username"]),
+        "url": to_unicode(POST_URL % (self.user_id, data["object_id"])),
       },
       "sender": {
-        "nick": user["username"] or str(user["uid"]),
-        "name": user["name"],
+        "nick": to_unicode(user["username"]) or to_unicode(user["uid"]),
+        "name": to_unicode(user["name"]),
         "id": str(user["uid"]),
-        "url": user["profile_url"],
-        "image": user["pic_square"],
+        "url": to_unicode(user["profile_url"]),
+        "image": to_unicode(user["pic_square"]),
       }
     }
 
   def _image(self, data, profiles):
     user = profiles[data["owner"]]
     return {
-      "mid": str(data["object_id"]),
-      "service": "facebook",
+      "mid": to_unicode(data["object_id"]),
+      "service": u"facebook",
       "account": self.account["id"],
       "time": int(mx.DateTime.DateTimeFrom(int(data['created'])).gmtime()),
-      "content": data["caption"],
-      "text": data["caption"],
-      "html": data["caption"],
+      "content": to_unicode(data["caption"]),
+      "text": to_unicode(data["caption"]),
+      "html": to_unicode(data["caption"]),
       "images": [{
-        "full": data["src_big"],
-        "src": data["src_big"],
-        "thumb": data["src_small"],
-        "url": data["link"],
+        "full": to_unicode(data["src_big"]),
+        "src": to_unicode(data["src_big"]),
+        "thumb": to_unicode(data["src_small"]),
+        "url": to_unicode(data["link"]),
       }],
       "sender": {
-        "nick": user["username"] or str(user["uid"]),
-        "name": user["name"],
+        "nick": to_unicode(user["username"]) or to_unicode(user["uid"]),
+        "name": to_unicode(user["name"]),
         "id": str(user["uid"]),
-        "url": user["profile_url"],
-        "image": user["pic_square"],
+        "url": to_unicode(user["profile_url"]),
+        "image": to_unicode(user["pic_square"]),
       }
     }
 
   def _list(self, data, user):
     return {
         "mid": data["value"],
-        "service": "facebook",
+        "service": u"facebook",
         "account": self.account["id"],
         "time": 0,
-        "text": "",
-        "html": "",
-        "content": "",
-        "url": "#", # http://www.facebook.com/friends/?filter=flp_%s" % data["flid"],
-        "name": data["name"],
-        "nick": data["name"],
-        "key": data["filter_key"],
-        "full": "",
-        "type": data["type"],
-        "kind": "list",
-        "fbstreamicon": data["icon_url"],
+        "text": u"",
+        "html": u"",
+        "content": u"",
+        "url": u"#", # http://www.facebook.com/friends/?filter=flp_%s" % data["flid"],
+        "name": to_unicode(data["name"]),
+        "nick": to_unicode(data["name"]),
+        "key": to_unicode(data["filter_key"]),
+        "full": u"",
+        "type": to_unicode(data["type"]),
+        "kind": u"list",
+        "fbstreamicon": to_unicode(data["icon_url"]),
         "sender": {
-          "nick": user["username"] or str(user["uid"]),
-          "name": user["name"],
+          "nick": to_unicode(user["username"]) or to_unicode(user["uid"]),
+          "name": to_unicode(user["name"]),
           "id": str(user["uid"]),
-          "url": user["profile_url"],
-          "image": user["pic_square"],
+          "url": to_unicode(user["profile_url"]),
+          "image": to_unicode(user["pic_square"]),
         }
     }
 
diff -up gwibber-867bzr/gwibber/microblog/gowalla.py.kitchen gwibber-867bzr/gwibber/microblog/gowalla.py
--- gwibber-867bzr/gwibber/microblog/gowalla.py.kitchen	2010-09-25 10:35:44.253191000 -0400
+++ gwibber-867bzr/gwibber/microblog/gowalla.py	2010-09-25 10:35:44.288191002 -0400
@@ -26,6 +26,7 @@ import network, json, util, htmllib, re
 from util import log
 from util import exceptions
 from gettext import lgettext as _
+from kitchen.text.converters import to_unicode
 log.logger.name = "Gowalla"
 
 PROTOCOL_INFO = {
@@ -60,47 +61,47 @@ class Client:
   def _message(self, data):
 
     m = {}; 
-    m["mid"] = str(data["user"]["first_name"]) + str(data["user"]["last_name"])
-    m["service"] = "gowalla"
+    m["mid"] = to_unicode(str(data["user"]["first_name"]) + str(data["user"]["last_name"]))
+    m["service"] = u"gowalla"
     m["account"] = self.account["id"]
     m["time"] = util.parsetime(data["created_at"])
 
-    messagetext = ""
-    text = ""
+    messagetext = u""
+    text = u""
     if data.has_key("spot"):
         if data.has_key("message"):
             messagetext += data["message"] + "<br/><br/>"
             text += data["message"] + "\n"
-	m["url"] = "<a href='http://gowalla.com%s'>" % data["spot"]["url"]
-	m["url"] = "http://gowalla.com%s" % data["spot"]["url"]
-        img = "<table><tr><td><img src='%s'/></td><td>" % data["spot"]["image_url"]
-        messagetext += img + "Checked in at <a href='" + m["url"] + "'>" + data["spot"]["name"] + "</a>"
-	text += "Checked in at " + data["spot"]["name"]
+	m["url"] = to_unicode("<a href='http://gowalla.com%s'>" % data["spot"]["url"])
+	m["url"] = to_unicode("http://gowalla.com%s" % data["spot"]["url"])
+        img = to_unicode("<table><tr><td><img src='%s'/></td><td>" % data["spot"]["image_url"])
+        messagetext += img + "Checked in at <a href='" + m["url"] + "'>" + to_unicode(data["spot"]["name"]) + "</a>"
+	text += u"Checked in at " + to_unicode(data["spot"]["name"])
     else:
         if data.has_key("message"):
-            messagetext += data["message"] + "<br/><br/>"
-            text += data["message"] + "\n"
+            messagetext += to_unicode(data["message"]) + u"<br/><br/>"
+            text += to_unicode(data["message"]) + u"\n"
         else:
-            text= "Checked in off the grid"
-            shouttext= "<table><tr><td><img src='http://gowalla.com/favicon.ico'/></td><td>Checked in off the grid"
+            text= u"Checked in off the grid"
+            shouttext= u"<table><tr><td><img src='http://gowalla.com/favicon.ico'/></td><td>Checked in off the grid"
 
     m["text"] = text
-    m["content"] = messagetext + "</td></tr></table>"
-    m["html"] = messagetext + "</td></tr></table>"
+    m["content"] = messagetext + u"</td></tr></table>"
+    m["html"] = messagetext + u"</td></tr></table>"
 
     m["sender"] = {}
-    m["sender"]["image"] = data["user"]["image_url"]
-    m["sender"]["url"] = "http://gowalla.com%s" % data["user"]["url"]
-    fullname = ""
+    m["sender"]["image"] = to_unicode(data["user"]["image_url"])
+    m["sender"]["url"] = to_unicode("http://gowalla.com%s" % data["user"]["url"])
+    fullname = u""
     if data["user"].has_key("first_name"):
-        fullname += data["user"]["first_name"] + " "
+        fullname += to_unicode(data["user"]["first_name"]) + u" "
     if data["user"].has_key("last_name"):
-        fullname += data["user"]["last_name"]
+        fullname += to_unicode(data["user"]["last_name"])
 
     m["sender"]["name"] = fullname
     m["sender"]["nick"] = fullname
         
-    m["source"] = "<a href='http://gowalla.com/'>Gowalla</a>"
+    m["source"] = u"<a href='http://gowalla.com/'>Gowalla</a>"
 
     return m
 
diff -up gwibber-867bzr/gwibber/microblog/identica.py.kitchen gwibber-867bzr/gwibber/microblog/identica.py
--- gwibber-867bzr/gwibber/microblog/identica.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/identica.py	2010-09-25 10:35:44.289191002 -0400
@@ -2,6 +2,7 @@ import re, network, util
 from util import log
 from util import exceptions
 from gettext import lgettext as _
+from kitchen.text.converters import to_unicode
 log.logger.name = "Identi.ca"
 
 PROTOCOL_INFO = {
@@ -53,28 +54,28 @@ class Client:
   def _common(self, data):
     m = {}
     try:
-      m["mid"] = str(data["id"])
-      m["service"] = "identica"
+      m["mid"] = to_unicode(data["id"])
+      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>' % 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"]))))
 
       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"]))
 
@@ -91,33 +92,33 @@ class Client:
     if data.get("in_reply_to_status_id", 0) and data.get("in_reply_to_screen_name", 0):
       m["reply"] = {}
       m["reply"]["id"] = data["in_reply_to_status_id"]
-      m["reply"]["nick"] = data["in_reply_to_screen_name"]
-      m["reply"]["url"] = "/".join((URL_PREFIX, "notice", str(m["reply"]["id"])))
+      m["reply"]["nick"] = to_unicode(data["in_reply_to_screen_name"])
+      m["reply"]["url"] = to_unicode("/".join((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((URL_PREFIX, m["sender"]["nick"]))
+    m["sender"]["image"] = to_unicode(user["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((URL_PREFIX, "notice", m["mid"]))
+    m["url"] = to_unicode("/".join((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((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"].lower() == self.account["username"].lower()
     return m
 
@@ -127,14 +128,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((URL_PREFIX, m["sender"]["nick"]))
-    m["url"] = "/".join((URL_PREFIX, "notice", str(m["mid"])))
+    m["sender"]["image"] = to_unicode(data["profile_image_url"])
+    m["sender"]["url"] = to_unicode("/".join((URL_PREFIX, m["sender"]["nick"])))
+    m["url"] = to_unicode("/".join((URL_PREFIX, "notice", str(m["mid"]))))
     return m
 
   def _get(self, path, parse="message", post=False, single=False, **args):
diff -up gwibber-867bzr/gwibber/microblog/statusnet.py.kitchen gwibber-867bzr/gwibber/microblog/statusnet.py
--- gwibber-867bzr/gwibber/microblog/statusnet.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/statusnet.py	2010-09-25 10:35:44.289191002 -0400
@@ -2,6 +2,7 @@ import re, network, util
 from util import log
 from util import exceptions
 from gettext import lgettext as _
+from kitchen.text.converters import to_unicode
 log.logger.name = "StatusNet"
 
 PROTOCOL_INFO = {
@@ -55,28 +56,28 @@ class Client:
   def _common(self, data):
     m = {}
     try:
-      m["mid"] = str(data["id"])
-      m["service"] = "statusnet"
+      m["mid"] = to_unicode(data["id"])
+      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.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"]))
   
@@ -93,33 +94,33 @@ class Client:
     if data.get("in_reply_to_status_id", 0) and data.get("in_reply_to_screen_name", 0):
       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()
     return m
 
@@ -132,11 +133,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.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-867bzr/gwibber/microblog/twitter.py.kitchen gwibber-867bzr/gwibber/microblog/twitter.py
--- gwibber-867bzr/gwibber/microblog/twitter.py.kitchen	2010-09-23 09:42:12.000000000 -0400
+++ gwibber-867bzr/gwibber/microblog/twitter.py	2010-09-25 10:35:44.290191002 -0400
@@ -3,6 +3,7 @@ import gnomekeyring
 from oauth import oauth
 from util import log, exceptions
 from gettext import lgettext as _
+from kitchen.text.converters import to_unicode
 log.logger.name = "Twitter"
 
 PROTOCOL_INFO = {
@@ -72,19 +73,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))
 
       images = util.imgpreview(m["text"])
       if images:
@@ -96,13 +97,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"],
     }
     
@@ -116,11 +117,11 @@ class Client:
     if "in_reply_to_status_id" in data and 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((URL_PREFIX, m["reply"]["nick"], "statuses", str(m["reply"]["id"])))
+      m["reply"]["nick"] = to_unicode(data["in_reply_to_screen_name"])
+      m["reply"]["url"] = to_unicode("/".join((URL_PREFIX, m["reply"]["nick"], "statuses", str(m["reply"]["id"]))))
 
     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
 
@@ -129,12 +130,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"]
 
     return m
@@ -145,37 +146,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):