I’m a complete python n00b here and just trying to mash a few bits together to make a project work but i’m struggling with some of the syntax i think.
Here is my script i have so far:
#!/usr/bin/env python
from plugin import *
from siriObjects.systemObjects import ResultCallback
import uuid
import json
import random
import types
import urllib
import urllib2
import random
import re
import select
import socket
import struct
import sys
import thread
import time
class tivoRemote(Plugin):
tivo_address = '192.168.0.9'
tivo_name = ''
tivo_swversions = {}
have_zc = True
captions_on = False
sock = None
outer = None
def connect():
""" Connect to the TiVo within five seconds or report error. """
global sock
try:
sock = socket.socket()
sock.settimeout(5)
sock.connect((tivo_address, 31339))
sock.settimeout(None)
except Exception, msg:
msg = 'Could not connect to %s:\n%s' % (tivo_name, msg)
print(msg)
def send(message):
""" The core output function, called from irsend(). Re-connect if
necessary (including restarting the status_update thread), send
message, sleep, and check for errors.
"""
if not sock:
self.connect()
thread.start_new_thread(status_update, ())
try:
sock.sendall(message)
time.sleep(0.1)
except Exception, msg:
error_window(str(msg))
def irsend(*codes):
""" Expand a command sequence for send(). """
for each in codes:
self.send('IRCODE %s\r' % each)
@register("en-US", ".*Change.*Channel.*")
def channelChanger(self, speech, language, matchedRegex):
if language == 'en-US':
answer = self.ask(u"Which channel would you like?")
self.say(u"Ok, one moment..".format(answer))
self.connect()
self.irsend(answer)
self.complete_request()
and the error i’m getting is:
Traceback (most recent call last):
File "/home/pi/SiriServerCore/plugin.py", line 150, in run
self.__method(self, self.__speech, self.__lang, self.__method.__dict__[__criteria_key__][self.__lang].match(self.__speech))
File "/home/pi/SiriServerCore/plugins/tivoRemote/__init__.py", line 70, in channelChanger
self.irsend(format(answer))
File "/home/pi/SiriServerCore/plugins/tivoRemote/__init__.py", line 61, in irsend
self.send('IRCODE %s\r' % each)
NameError: global name 'self' is not defined
If i remove the ‘self.’ i get the same error but saying ‘send’ is not defined.
Thanks in advance for any help 🙂
Ryan
More likely to work:
You need to use
selfwhen defining methods and you have to use it to access the current instance.