Completed
Push — master ( 3fb799...a93322 )
by Matt
01:03
created

LastFM   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 47
Duplicated Lines 0 %
Metric Value
dl 0
loc 47
rs 10
wmc 11

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __init__() 0 12 3
D handle() 0 33 8
1
import sys
2
import urllib2
3
import json
4
class LastFM:
5
  def __init__(self, events=None, printer_handle=None, bot=None, say=None):
6
    self.bot_handle = bot
7
    self.events = events
8
    self.printer = printer_handle
9
    self.bot = bot
10
    self.interests = ['__.lastfm__']
11
12
    self.help = ".lastfm add <lastfm username>, .lastfm"
13
14
    for event in events:
15
      if event._type in self.interests:
16
        event.subscribe(self)
17
18
  def handle(self, event):
19
    msg = event.line.rsplit(":")[-1]
20
    # replace username in db if their nick already exists; otherwise insert new row
21
    if msg.startswith(".lastfm add"):
22
      lastfm_username = msg.split()[-1]
23
      try:
24
        self.bot_handle.db.e("REPLACE INTO lastfm (lastfm_username, nick) VALUES ('" + lastfm_username + "', '" + event.user + "')")
25
      except Exception, e:
26
        print e
27
    elif msg.startswith(".lastfm"):
28
      try:
29
      # go get it
30
        username = self.bot_handle.db.e("SELECT lastfm_username FROM lastfm WHERE nick = '" + event.user + "'")[0][0]
31
        api_key = "80688df02fc5af99f1ed97b5f667f0c4"
32
        url = "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user="+username+"&api_key="+api_key+"&format=json"
33
        response = urllib2.urlopen(url)
34
        text = response.read()
35
        j = json.loads(text)
36
37
        try:
38
          if "@attr" in j["recenttracks"]["track"][0]:
39
            if j["recenttracks"]["track"][0]["@attr"]["nowplaying"] == "true":
40
              output = j["recenttracks"]["track"][0]['artist']['#text'] + " - " + j["recenttracks"]["track"][0]['name'] 
41
              self.printer("PRIVMSG " + event.channel + " :" + event.user + " is now playing: " + output + '\n')
42
          else:
43
            output = j["recenttracks"]["track"][0]['artist']['#text'] + " - " + j["recenttracks"]["track"][0]['name'] 
44
            self.printer("PRIVMSG " + event.channel + " :" + event.user + " recently played: " + output + '\n')
45
46
        except Exception, e:
47
          print e
48
49
      except IndexError:
50
        self.printer("PRIVMSG " + event.channel + " : no lastfm username for " + event.user + '\n')
51