Skip to content

Commit c52c430

Browse files
authored
Merge pull request #10 from rossbridger/master
Update against Kodi Python API 21
2 parents b105488 + 3e76524 commit c52c430

File tree

3 files changed

+43
-41
lines changed

3 files changed

+43
-41
lines changed

addon.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
22
<addon id="script.ircchat"
33
name="IrcChat"
4-
version="1.0.1"
4+
version="3.0.1"
55
provider-name="divingmule, MassIV">
66
<requires>
7-
<import addon="xbmc.python" version="2.1.0"/>
7+
<import addon="xbmc.python" version="3.0.1"/>
88
</requires>
99
<extension point="xbmc.python.script" library="default.py">
1010
<provides>executable</provides>

default.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@
33
import sys
44
import os
55
import threading
6-
import Queue
6+
import queue
77
import ctypes
88
import time
99
import xbmcgui
1010
import xbmcaddon
11+
import xbmcvfs
1112

1213
addon = xbmcaddon.Addon()
1314
addon_id = addon.getAddonInfo('id')
1415
addon_version = addon.getAddonInfo('version')
1516
language = addon.getLocalizedString
16-
addon_path = xbmc.translatePath(addon.getAddonInfo('path'))
17+
addon_path = xbmcvfs.translatePath(addon.getAddonInfo('path'))
1718
icon = os.path.join(addon_path, 'icon.png')
18-
chat_queue = Queue.Queue(maxsize=0)
19-
client_queue = Queue.Queue(maxsize=0)
19+
chat_queue = queue.Queue(maxsize=0)
20+
client_queue = queue.Queue(maxsize=0)
2021
action_previous_menu = (9, 10, 92, 216, 247, 257, 275, 61467, 61448)
2122

2223

@@ -270,7 +271,7 @@ def __init__( self, *args, **kwargs ):
270271
def onInit(self):
271272
self.window = xbmcgui.Window(xbmcgui.getCurrentWindowDialogId())
272273
self.client = irc_client()
273-
self.client.setDaemon(True)
274+
self.client.daemon = True
274275
self.client.start()
275276
self.window.setProperty('windowLabel', 'IrcChat')
276277
self.channels_list = None
@@ -665,11 +666,11 @@ def addon_log(string):
665666
if not isinstance(string, str):
666667
string = str(string)
667668
try:
668-
log_message = string.encode('utf-8', 'ignore')
669+
log_message = string
669670
except:
670671
log_message = 'addonException: addon_log: %s' %format_exc()
671672
# for ease in development change the level to LOGNOTICE
672-
xbmc.log("[%s-%s]: %s" %(addon_id, addon_version, log_message), level=xbmc.LOGNOTICE)
673+
xbmc.log("[%s-%s]: %s" %(addon_id, addon_version, log_message), level=xbmc.LOGINFO)
673674

674675

675676
def get_params():

resources/pyircmod.py

+33-32
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def whois(self, nickname, server=None):
5151

5252
while(1):
5353
tmpresponse = self.getmessage()
54-
print tmpresponse['responsetype']
54+
print(tmpresponse['responsetype'])
5555

5656
if tmpresponse['responsetype'] == "ERR_NOSUCHSERVER":
5757
returninfo['errormessage'] = tmpresponse['responsetype']
@@ -64,39 +64,39 @@ def whois(self, nickname, server=None):
6464
returninfo['errormessage'] = tmpresponse['responsetype']
6565
return returninfo
6666
else:
67-
print "ERROR IN whois() --> (ERR_NOSUCHNICK)" # it shouldn't get here
67+
print("ERROR IN whois() --> (ERR_NOSUCHNICK)") # it shouldn't get here
6868
return 1
6969

7070
elif tmpresponse['responsetype'] == "RPL_WHOISUSER":
71-
tmpstring = string.split(tmpresponse['text'])
71+
tmpstring = tmpresponse['text'].split()
7272
returninfo['nickname'] = tmpstring[1]
7373
returninfo['username'] = tmpstring[2]
7474
returninfo['hostname'] = tmpstring[3]
75-
returninfo['realname'] = string.join(tmpstring[5:])[1:]
75+
returninfo['realname'] = ''.join(tmpstring[5:])[1:]
7676
del tmpstring
7777

7878
elif tmpresponse['responsetype'] == "RPL_WHOISSERVER":
79-
tmpstring = string.split(tmpresponse['text'])
79+
tmpstring = tmpresponse['text'].split()
8080
returninfo['server'] = tmpstring[2]
81-
returninfo['serverinfo'] = string.join(tmpstring[3:])[1:]
81+
returninfo['serverinfo'] = ''.join(tmpstring[3:])[1:]
8282
del tmpstring
8383

8484
elif tmpresponse['responsetype'] == "RPL_WHOISOPERATOR":
8585
returninfo['isoperator'] = 1
8686

8787
elif tmpresponse['responsetype'] == "RPL_WHOISIDLE":
88-
tmpstring = string.split(tmpresponse['text'])
88+
tmpstring = tmpresponse['text'].split()
8989
returninfo['idle'] = int(tmpstring[2])
9090
del tmpstring
9191

9292
elif tmpresponse['responsetype'] == "RPL_AWAY":
93-
tmpstring = string.split(tmpresponse['text'])
93+
tmpstring = tmpresponse['text'].split()
9494
returninfo['away'] = 1
95-
returninfo['awaymessage'] = string.join(tmpstring[2:])[1:]
95+
returninfo['awaymessage'] = ''.join(tmpstring[2:])[1:]
9696

9797
elif tmpresponse['responsetype'] == "RPL_WHOISCHANNELS":
98-
tmpstring = string.split(tmpresponse['text'])
99-
tmpstring[2] = string.replace(tmpstring[2], ':', '')
98+
tmpstring = tmpresponse['text'].split()
99+
tmpstring[2] = tmpstring[2].replace(':', '')
100100
returninfo['channels'] = tmpstring[2:]
101101

102102
elif tmpresponse['responsetype'] == "RPL_ENDOFWHOIS":
@@ -116,7 +116,7 @@ def debug(self, msg):
116116
if self.setDebug == 0:
117117
pass
118118
else:
119-
print msg
119+
print(msg)
120120

121121
def list(self, channels=None, server=None):
122122
"Returns a list of channels in (channel_name, users, topic) form"
@@ -131,8 +131,8 @@ def list(self, channels=None, server=None):
131131
while 1:
132132
x = self.getmessage()
133133
if (x['event'] == "RESPONSE" and x['responsetype'] == "RPL_LIST"):
134-
d = string.split(x['text'])
135-
chan = [d[1], d[2], string.join(d[3:]," ")[1:]]
134+
d = x['text'].split()
135+
chan = [d[1], d[2], (" ".join(d[3:]))[1:]]
136136
list.append(chan)
137137
elif (x['event'] == "RESPONSE" and x['responsetype'] == "RPL_LISTEND"):
138138
return list
@@ -152,7 +152,7 @@ def names(self, channels=None):
152152
while 1:
153153
x = self.getmessage()
154154
if x['event'] == "RESPONSE" and x['responsetype'] == "RPL_NAMREPLY":
155-
tmptxt = string.split(x['text'])
155+
tmptxt = x['text'].split()
156156
chan = tmptxt[2]
157157
for i in range((len(tmptxt) - 3)):
158158
if i == 0:
@@ -174,8 +174,8 @@ def __init__(self,host,port):
174174

175175
def send(self,data): # reimplementation of socket.send function with error handling
176176
try:
177-
self.sockfd.send(data)
178-
except socket.error, e:
177+
self.sockfd.send(data.encode('utf-8'))
178+
except socket.error as e:
179179
if e:
180180
self.debug( "Socket error: %s" %e)
181181
return "ERR_COULDNOTSEND"
@@ -415,19 +415,20 @@ def getresponsetype(self, number): # returns (responseno, responsestr)
415415
elif number == 384: return("RPL_MYPORTIS")
416416
elif number == 476: return("ERR_BADCHANMASK")
417417
# not official
418-
elif number == 001: return("RPL_WELCOME")
418+
elif number == 1: return("RPL_WELCOME")
419419

420420
def getmessage(self):
421-
buffer = ''
421+
buffer = b''
422422
self.sockfd.settimeout(3.0)
423423
try:
424424
while(1):
425425
x = self.sockfd.recv(1)
426-
if x != '\n':
426+
if x != b'\n':
427427
buffer = buffer + x
428428
else:
429+
buffer = buffer.decode('utf-8')
429430
self.debug("BUFFER IS: " + buffer)
430-
msg = string.split(buffer,':')
431+
msg = buffer.split(':')
431432
message = ({"seqnumber":'notvalid', "responsetype":0,"channel":0,"nickname":0,"username":0,"hostname":0,"event":0,"recpt":0, "text":0})
432433
if buffer[:4] == "PING":
433434
self.debug("PING!")
@@ -452,26 +453,26 @@ def getmessage(self):
452453
self.messages.append(message)
453454
return message
454455
else:
455-
tmpmsg = string.split(msg[1])
456+
tmpmsg = msg[1].split()
456457
if "!" in (tmpmsg[0]):
457-
message['nickname'] = tmpmsg[0][:string.find(tmpmsg[0],"!")]
458-
message['username'] = tmpmsg[0][string.find(tmpmsg[0],"!")+1:string.find(tmpmsg[0],"@")] # ugly line ;)
458+
message['nickname'] = tmpmsg[0][:tmpmsg[0].find("!")]
459+
message['username'] = tmpmsg[0][tmpmsg[0].find("!")+1:tmpmsg[0].find("@")] # ugly line ;)
459460
else:
460461
message['nickname'] = tmpmsg[0]
461462
message['username'] = tmpmsg[0]
462-
message['hostname'] = tmpmsg[0][string.find(tmpmsg[0],"@")+1:]
463+
message['hostname'] = tmpmsg[0][tmpmsg[0].find("@")+1:]
463464
try:
464465
message['event'] = "RESPONSE"
465466
message['responsetype'] = self.getresponsetype(int(tmpmsg[1]))
466-
message['text'] = buffer[(string.find(buffer,tmpmsg[1]))+4:]
467+
message['text'] = buffer[(buffer.find(tmpmsg[1]))+4:]
467468
message['seqnumber'] = self.getseqnumber()
468469
self.messages.append(message)
469470
return message
470471
except (TypeError, ValueError):
471472
message['event'] = tmpmsg[1]
472473
if (message['event'] == "PRIVMSG"):
473474
message['recpt'] = tmpmsg[2]
474-
message['text'] = string.join(msg[2:],':')
475+
message['text'] = ':'.join(msg[2:])
475476
elif (message['event'] == "JOIN"):
476477
try:
477478
message['channel'] = msg[2]
@@ -483,17 +484,17 @@ def getmessage(self):
483484
message['text'] = msg[2]
484485
elif (message['event'] == "MODE"):
485486
try:
486-
message['text'] = string.join(msg[2:],':')
487+
message['text'] = ':'.join(msg[2:])
487488
except IndexError:
488489
message['text'] = tmpmsg[3]
489490
message['recpt'] = tmpmsg[2]
490491
elif (message['event'] == "NOTICE"):
491-
message['text'] = buffer[string.find(buffer,"NOTICE")+7:]
492+
message['text'] = buffer[buffer.find("NOTICE")+7:]
492493
elif (message['event'] == "KILL"):
493-
message['text'] = buffer[(string.find(buffer,"("))+1:-1]
494+
message['text'] = buffer[(buffer.find("("))+1:-1]
494495
self.debug(message['text'])
495496
elif (message['event'] == "NICK"):
496-
message['text'] = buffer[(string.find(buffer,"NICK"))+5:]
497+
message['text'] = buffer[(buffer.find("NICK"))+5:]
497498
else:
498499
message['event'] = "UNKNOWN"
499500
message['text'] = "DO SOMETHING HERE!"
@@ -502,5 +503,5 @@ def getmessage(self):
502503
self.messages.append(message)
503504
return message
504505
except:
505-
print_exc
506+
print_exc()
506507

0 commit comments

Comments
 (0)