~greg.grossmeier/+junk/laconica.groups

« back to all changes in this revision

Viewing changes to gwibber/microblog/digg.py

  • Committer: Ryan Paul
  • Date: 2008-12-28 02:52:41 UTC
  • Revision ID: segphault@arstechnica.com-20081228025241-njioksqcdkuno9l5
Refactored microblog library to eliminate minidom usage

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
"""
8
8
 
9
 
import urllib2, urllib, support, re, can, simplejson
10
 
from xml.dom import minidom
 
9
import urllib2, support, re, can
 
10
import time, simplejson
11
11
 
12
12
PROTOCOL_INFO = {
13
13
  "name": "Digg",
36
36
    self.account = client.account
37
37
    self.protocol = client.account["protocol"]
38
38
    self.username = client.account["username"]
39
 
    self.data = data
40
 
    self.title = data.getElementsByTagName("title")[0].firstChild.nodeValue
41
 
    self.sender = data.getElementsByTagName("author")[0].firstChild.nodeValue
42
 
    self.sender_nick = self.sender
43
 
    self.sender_id = self.sender.replace(" ","_")
44
 
    self.time = support.parse_time(data.getElementsByTagName("pubDate")[0].firstChild.nodeValue)
45
 
    self.text = sanitize_text(data.getElementsByTagName("description")[0].firstChild.nodeValue)
46
 
    self.image = "http://digg.com/users/%s/l.png" % self.sender_nick
 
39
    self.title = data["title"]
 
40
    sender = data["friends"]["users"][0]
 
41
    self.sender = "fullname" in sender and sender["fullname"] or sender["name"]
 
42
    self.sender_nick = sender["name"]
 
43
    self.sender_id = sender["name"]
 
44
    
 
45
    try:
 
46
      self.time = support.parse_time(sender["date"])
 
47
    except:
 
48
      self.time = support.parse_time(time.asctime(time.gmtime(sender["date"])))
 
49
    
 
50
    self.text = sanitize_text(data["description"])
 
51
    self.image = sender["icon"]
47
52
    self.bgcolor = "comment_color"
48
 
    self.url = data.getElementsByTagName("link")[0].firstChild.nodeValue
49
 
    self.profile_url = "http://digg.com/users/%s" % self.sender
 
53
    self.url = data["link"]
 
54
    self.profile_url = "http://digg.com/users/%s" % self.sender_nick
 
55
    self.diggs = data["diggs"]
50
56
 
51
57
class Digg(Message):
52
58
  def __init__(self, client, data):
53
59
    Message.__init__(self, client, data)
54
 
    self.title = "%s <small>dugg %s</small>" % (self.sender_nick,    
55
 
      data.getElementsByTagName("title")[0].firstChild.nodeValue)
 
60
    self.title = "%s <small>dugg %s</small>" % (self.sender_nick, self.title)
56
61
    self.bgcolor = "digg_color"
57
62
 
58
 
    self.diggs = simplejson.loads(urllib2.urlopen(urllib2.Request(
59
 
      "http://services.digg.com/story/%s?appkey=http://cixar.com&type=json" %
60
 
        self.url.split("/")[-1])).read())["stories"][0]["diggs"]
61
 
 
62
63
class Client:
63
64
  def __init__(self, acct):
64
65
    self.account = acct
68
69
      self.account["username"] != None
69
70
 
70
71
  def connect(self, url, data = None):
71
 
    return urllib2.urlopen(urllib2.Request(url, data)).read()
 
72
    return urllib2.urlopen(urllib2.Request(url, data))
72
73
 
73
74
  def get_comments(self):
74
 
    return minidom.parseString(self.connect(
75
 
      "http://digg.com/users/%s/friends/comments.rss" %
76
 
        self.account["username"])).getElementsByTagName("item")
 
75
    return simplejson.load(self.connect(
 
76
      "http://services.digg.com/user/%s/friends/commented?appkey=http://launchpad.net/gwibber&type=json" %
 
77
        self.account["username"]))["stories"]
77
78
 
78
79
  def get_diggs(self):
79
 
    return minidom.parseString(self.connect(
80
 
      "http://digg.com/users/%s/friends/diggs.rss" %
81
 
        self.account["username"])).getElementsByTagName("item")
 
80
    return simplejson.load(self.connect(
 
81
      "http://services.digg.com/user/%s/friends/dugg?appkey=http://launchpad.net/gwibber&type=json" %
 
82
        (self.account["username"])))["stories"]
82
83
 
83
84
  def receive(self):
84
 
    for data in self.get_comments()[0:10]:
85
 
      yield Message(self, data)
 
85
    #for data in self.get_comments()[0:10]:
 
86
    #  yield Message(self, data)
86
87
 
87
 
    for data in self.get_diggs()[0:10]:
 
88
    for data in self.get_diggs():
88
89
      yield Digg(self, data)
89
90
 
90
91