コード例 #1
0
ファイル: pyplex.py プロジェクト: alfonsosiloniz/pyplex
 def __init__(self, omxArgs):
     self.media = None
     self.plex = PlexInterface()
     self.omx = None
     self.omxArgs = omxArgs
     self.cgcmd = CGCommands();
コード例 #2
0
ファイル: pyplex.py プロジェクト: fillet54/pyplex
 def __init__(self, omxArgs):
     self.media = None
     self.plex = PlexInterface()
     self.omx = None
     self.omxArgs = omxArgs
コード例 #3
0
ファイル: pyplex.py プロジェクト: alfonsosiloniz/pyplex
class xbmcCommands:
    def __init__(self, omxArgs):
        self.media = None
        self.plex = PlexInterface()
        self.omx = None
        self.omxArgs = omxArgs
        self.cgcmd = CGCommands();


    def PlayMedia(self, fullpath, tag, unknown1, unknown2, unknown3):
        global parsed_path
        global media_key
        global duration

        parsed_path = urlparse(fullpath)
        media_path = parsed_path.scheme + "://" + parsed_path.netloc + tag
        self.media = self.plex.getMedia(media_path)
        
        print 'mediapath', media_path
        if(self.omx):
            self.Stop()
        transcodeURL = self.media.getTranscodeURL()
        
        f = urllib2.urlopen(transcodeURL)
        rawXML = f.read()

        f.close()
		
        for line in string_to_lines(rawXML):
             line = line.strip()
             if line.startswith("#"):
                 sessionURL = ""
             else:
             	sessionURL = self.media.getTranscodeSessionURL() + line

        self.cgcmd.SendPlay(sessionURL)                  
        

    def Pause(self, message):
        self.cgcmd.SendCommand(40);

    def Play(self, message):
        self.cgcmd.SendCommand(39);

    def Stop(self, message):
        self.cgcmd.SendCommand(41);

    def Up(self, message):
        self.cgcmd.SendCommand(19);

    def Down(self, message):
        self.cgcmd.SendCommand(20);

    def Left(self, message):
        self.cgcmd.SendCommand(21);

    def Right(self, message):
        self.cgcmd.SendCommand(22);
        
    def ContextMenu(self, message):
        self.cgcmd.SendCommand(17);

    def ParentDir(self, message):
        self.cgcmd.SendCommand(24);

    def Select(self, message):
        self.cgcmd.SendCommand(23);

    def OSD(self, message):
        self.cgcmd.SendCommand(2);
        
    def getMilliseconds(self,s):
        hours, minutes, seconds = (["0", "0"] + ("%s" % s).split(":"))[-3:]
        hours = int(hours)
        minutes = int(minutes)
        seconds = float(seconds)
        miliseconds = int(3600000 * hours + 60000 * minutes + 1000 * seconds)
        return miliseconds

    def getPosMilli(self):
        return self.getMilliseconds(self.omx.position)
    
    def setPlayed(self):
        self.media.setPlayed()

    def isFinished(self):
        if(self.omx):
            finished = self.omx.finished
        else:
            finished = True
        return finished
    
    def isRunning(self):
        if(self.omx):
            return True
        return False

    def updatePosition(self):
        if self.isFinished():
            if (self.getPosMilli() > (self.media.duration * .95)):
                self.setPlayed()
            self.Stop()
        else:
            self.media.updatePosition(self.getPosMilli())
コード例 #4
0
ファイル: pyplex.py プロジェクト: fillet54/pyplex
class xbmcCommands:
    def __init__(self, omxArgs):
        self.media = None
        self.plex = PlexInterface()
        self.omx = None
        self.omxArgs = omxArgs

    def PlayMedia(self, fullpath, tag, unknown1, unknown2, unknown3):
        global parsed_path
        global media_key
        global duration
        
        parsed_path = urlparse(fullpath)
        media_path = parsed_path.scheme + "://" + parsed_path.netloc + tag

        self.media = self.plex.getMedia(media_path)
        
        #print 'mediapath', mediapath
        if(self.omx):
            self.Stop()
        transcodeURL = self.media.getTranscodeURL()
        print transcodeURL
        self.omx = OMXPlayer(transcodeURL, args=self.omxArgs, start_playback=True)

    def Pause(self, message):
        if(self.omx):
            self.omx.set_speed(1)
            self.omx.toggle_pause()

    def Play(self, message):
        if(self.omx):
            ret = self.omx.set_speed(1)
            if(ret == 0):
                self.omx.toggle_pause()

    def Stop(self, message=""):
        if(self.omx):
            self.omx.stop()
            self.omx = None

    def stopPyplex(self, message):
        self.Stop()
        global service
        pygame.quit()
        exit()

    def SkipNext(self, message = None):
        if(self.omx):
            self.omx.increase_speed()

    def SkipPrevious(self, message = None):
        if(self.omx):
            self.omx.decrease_speed()

    def StepForward(self, message = None):
        if(self.omx):
            self.omx.increase_speed()

    def StepBack(self, message = None):
        if(self.omx):
            self.omx.decrease_speed()

    def BigStepForward(self, message = None):
        if(self.omx):
            self.omx.jump_fwd_600()

    def BigStepBack(self, message = None):
        if(self.omx):
            self.omx.jump_rev_600()

    def getMilliseconds(self,s):
        hours, minutes, seconds = (["0", "0"] + ("%s" % s).split(":"))[-3:]
        hours = int(hours)
        minutes = int(minutes)
        seconds = float(seconds)
        miliseconds = int(3600000 * hours + 60000 * minutes + 1000 * seconds)
        return miliseconds

    def getPosMilli(self):
        return self.getMilliseconds(self.omx.position)
    
    def setPlayed(self):
        self.media.setPlayed()

    def isFinished(self):
        if(self.omx):
            finished = self.omx.finished
        else:
            finished = True
        return finished
    
    def isRunning(self):
        if(self.omx):
            return True
        return False

    def updatePosition(self):
        if self.isFinished():
            if (self.getPosMilli() > (self.media.duration * .95)):
                self.setPlayed()
            self.Stop()
        else:
            self.media.updatePosition(self.getPosMilli())