예제 #1
0
def recordProgram(chID, chName, programID, name, startTime, endTime):

        command = 'SetTimer|{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}'.format(
                '-1', # => epg based timer
                chID, # Channel ID
                startTime, # Start date and time of listing
                endTime,  # End date and time of listing
                str(pvr_time_state.pvr_timer_state_new),
                name, # name of listing
                '0',  #XBMc Priotiry (not used)
                '2', # pre padding in minutes
                '3',  # post padding in minutes
                'false',  # XBMC bIsRepeating (not used)
                u.getEntryID(programID=programID),  # ScheduleEntry ID
                'False',  # force prepad bool
                'False'   # force postpad bool
        )

        message = 'You have successfully scheduled {0} to be recorded on {1} at {2} on {3}.'.format(
                name,
                chName,
                u.getDateTime12(startTime, format='time'),
                u.getDateTime12(startTime, format='date')
        )

        responses = socketClient(command, '')
        if DEBUG == 'Verbose':
                Log.Debug('----------recordProgram----------')
                Log.Debug('Send Command:' + command)
                Log.Debug(responses)
                Log.Debug(message)
        return ObjectContainer(header='Recording', message=message)
예제 #2
0
def recordProgram(chID, chName, programID, name, startTime, endTime):

    command = 'SetTimer|{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}'.format(
        '-1',  # => epg based timer
        chID,  # Channel ID
        startTime,  # Start date and time of listing
        endTime,  # End date and time of listing
        str(pvr_time_state.pvr_timer_state_new),
        name,  # name of listing
        '0',  #XBMc Priotiry (not used)
        '2',  # pre padding in minutes
        '3',  # post padding in minutes
        'false',  # XBMC bIsRepeating (not used)
        u.getEntryID(programID=programID),  # ScheduleEntry ID
        'False',  # force prepad bool
        'False'  # force postpad bool
    )

    message = 'You have successfully scheduled {0} to be recorded on {1} at {2} on {3}.'.format(
        name, chName, u.getDateTime12(startTime, format='time'),
        u.getDateTime12(startTime, format='date'))

    responses = socketClient(command, '')
    if DEBUG == 'Verbose':
        Log.Debug('----------recordProgram----------')
        Log.Debug('Send Command:' + command)
        Log.Debug(responses)
        Log.Debug(message)
    return ObjectContainer(header='Recording', message=message)
예제 #3
0
def GetTimers():

    oc = ObjectContainer(title2='Scheduled Recordings', no_cache=True)

    # Connect and Get list of recordings
    resultsArray = socketClient('GetTimers', '')

    if DEBUG == 'Verbose':
        Log.Debug('----------GetTimers----------')
        Log.Debug(resultsArray)

    for result in resultsArray:
        infoArray = result.split('|')
        timerID = infoArray[0]
        chID = infoArray[1]
        startDateTime = infoArray[2]
        endDateTime = infoArray[3]
        pvr_timer_state = infoArray[4]
        if not 'series' in infoArray[5]:
            programName = infoArray[5]
        else:
            programName = infoArray[5].split(':')[1]
        programID = infoArray[15]
        SeriesTimerID = infoArray[16]
        programImage = getListingInfo(chID=chID,
                                      progItem='programImage',
                                      infoType='singleItem',
                                      startDt=startDateTime,
                                      endDt=endDateTime)

        if len(SeriesTimerID) > 1:
            programName = programName + ' (Series)'

        programInfo = '{0} - Airing : {1} - {2}'.format(
            programName, u.getDateTime12(startDateTime, format='datetime'),
            u.getDateTime12(endDateTime))

        programSummary = unicode(infoArray[7], 'UTF-8')

        if DEBUG == 'Verbose':
            Log.Debug(infoArray)

        oc.add(
            DirectoryObject(key=Callback(cancelTimer,
                                         timerID=timerID,
                                         programName=programInfo,
                                         startTime=startDateTime),
                            title=programInfo,
                            summary=programSummary,
                            thumb=programImage))

    return oc
예제 #4
0
def GetTimers():

        oc = ObjectContainer(title2='Scheduled Recordings', no_cache=True)

        # Connect and Get list of recordings
        resultsArray = socketClient('GetTimers', '')

        if DEBUG == 'Verbose':
                Log.Debug('----------GetTimers----------')
                Log.Debug(resultsArray)

        for result in resultsArray:
                infoArray = result.split('|')
                timerID = infoArray[0]
                chID = infoArray[1]
                startDateTime = infoArray[2]
                endDateTime = infoArray[3]
                pvr_timer_state = infoArray[4]
                if not 'series' in infoArray[5]:
                        programName = infoArray[5]
                else:
                        programName = infoArray[5].split(':')[1]
                programID = infoArray[15]
                SeriesTimerID = infoArray[16]
                programImage = getListingInfo(
                        chID=chID, progItem='programImage', infoType='singleItem', startDt=startDateTime, endDt=endDateTime
                )

                if len(SeriesTimerID) > 1:
                        programName = programName + ' (Series)'

                programInfo = '{0} - Airing : {1} - {2}'.format(
                        programName,
                        u.getDateTime12(startDateTime, format='datetime'),
                        u.getDateTime12(endDateTime)
                )

                programSummary = unicode(infoArray[7], 'UTF-8')

                if DEBUG == 'Verbose':
                        Log.Debug(infoArray)

                oc.add(DirectoryObject(
                        key=Callback(cancelTimer, timerID=timerID, programName=programInfo, startTime=startDateTime),
                        title=programInfo,
                        summary=programSummary,
                        thumb=programImage
                        )
                )

        return oc
예제 #5
0
def cancelTimer(timerID, programName, startTime):

    command = 'CancelTimer|{0}'.format(timerID)

    message = 'You have successfully cancelled the scheduled recording for {0} on {1}.'.format(
        programName, u.getDateTime12(startTime, format='date'))

    responses = socketClient(command, '')
    if DEBUG == 'Verbose':
        Log.Debug('----------cancelTimer----------')
        Log.Debug('Send Command:' + command)
        Log.Debug(responses)
        Log.Debug(message)
    return ObjectContainer(header='Cancelled', message=message)
예제 #6
0
def GetRecordings():

    oc = ObjectContainer(title2='Recorded TV', no_cache=True)

    # Connect and Get list of recordings
    resultsArray = socketClient('GetRecordings', '')
    Log.Debug('----------GetRecordings Function----------')
    if DEBUG == 'Verbose':
        Log.Debug(resultsArray)

    for result in resultsArray:
        infoArray = result.split('|')
        programID = infoArray[0]
        programName = infoArray[1]
        programURL = infoArray[2]
        programSummary = infoArray[5].decode(encoding='UTF-8', errors='strict')
        programChannel = infoArray[6]
        programImage = infoArray[7]
        startDtTime = infoArray[9]
        endDtTime = int(infoArray[9]) + int(infoArray[10])
        duration = int(infoArray[11])
        airedDate = u.getDateTime12(infoArray[21], format='date')

        if DEBUG == 'Verbose':
            Log.Debug(programName + ', ' + programImage + ', ' +
                      programSummary + ', ' + programChannel + ', ' +
                      programImage)
            Log.Debug(str(startDtTime) + ' - ' + str(endDtTime))

        oc.add(
            DirectoryObject(key=Callback(getProgramPage,
                                         chID='',
                                         chName=programChannel,
                                         programID=programID,
                                         title=programName,
                                         name=programName,
                                         summary=programSummary,
                                         startTime=startDtTime,
                                         endTime=endDtTime,
                                         url=programURL,
                                         itemType='recordings'),
                            title=programName,
                            summary='(Aired: ' + str(airedDate) + ') ' +
                            programSummary,
                            thumb=programImage))

        if DEBUG == 'Verbose':
            Log.Debug(infoArray)

    return oc
예제 #7
0
def cancelTimer(timerID, programName, startTime):

        command = 'CancelTimer|{0}'.format(
                timerID
        )

        message = 'You have successfully cancelled the scheduled recording for {0} on {1}.'.format(
        programName,
        u.getDateTime12(startTime, format='date')
        )

        responses = socketClient(command, '')
        if DEBUG == 'Verbose':
                Log.Debug('----------cancelTimer----------')
                Log.Debug('Send Command:' + command)
                Log.Debug(responses)
                Log.Debug(message)
        return ObjectContainer(header='Cancelled', message=message)
예제 #8
0
def GetRecordings():

        oc = ObjectContainer(title2='Recorded TV', no_cache=True)

        # Connect and Get list of recordings
        resultsArray = socketClient('GetRecordings', '')
        Log.Debug('----------GetRecordings Function----------')
        if DEBUG == 'Verbose':
                Log.Debug(resultsArray)

        for result in resultsArray:
                infoArray = result.split('|')
                programID = infoArray[0]
                programName = infoArray[1]
                programURL = infoArray[2]
                programSummary = infoArray[5].decode(encoding='UTF-8', errors='strict')
                programChannel = infoArray[6]
                programImage = infoArray[7]
                startDtTime = infoArray[9]
                endDtTime = int(infoArray[9]) + int(infoArray[10])
                duration = int(infoArray[11])
                airedDate = u.getDateTime12(infoArray[21], format='date')

                if DEBUG=='Verbose':
                        Log.Debug(programName + ', ' + programImage +', ' + programSummary +', ' + programChannel + ', ' + programImage)
                        Log.Debug(str(startDtTime) + ' - ' + str(endDtTime))

                oc.add(DirectoryObject(
                        key=Callback(getProgramPage, chID='', chName=programChannel, programID=programID, title=programName, name=programName,
                                     summary=programSummary, startTime=startDtTime, endTime=endDtTime, url=programURL, itemType='recordings'
                        ),
                        title=programName,
                        summary='(Aired: ' + str(airedDate) + ') ' + programSummary,
                        thumb=programImage
                ))

                if DEBUG == 'Verbose':
                        Log.Debug(infoArray)

        return oc
예제 #9
0
def getListingInfo(chID, progItem, infoType='Upcoming', startDt='', endDt=''):

    # Get Start and end datetime and convert to seconds
    if infoType != 'singleItem':
        startDt = u.getTimeS(datetime.datetime.utcnow())
        endDt = int(startDt + (timedelta(
            days=int(Prefs['serverwmc_epg_days']))).total_seconds())

    # build request string
    sendCommand = 'GetEntries|{0}|{1}|{2}'.format(chID, startDt, endDt)

    # Connect and get channel/program info
    resultsArray = socketClient(sendCommand, '')

    if DEBUG == 'Verbose':
        Log.Debug('----------getListingInfo Function----------')
        Log.Debug(resultsArray)

    # Loop through results array and build Channel info objects
    if len(resultsArray) > 1:
        count = 0
        for result in resultsArray:
            count += 1
            infoArray = result.split('|')
            # only get now playing item
            if count in (1, 2) and infoType in ('nowPlaying', 'upNext'):
                programID = infoArray[0] + '-' + infoArray[16]
                programName = infoArray[1]
                programStartDt = u.getDateTime12(infoArray[3],
                                                 format='datetime')
                programEndDt = u.getDateTime12(infoArray[4], format='time')
                programAirTime = '(' + programStartDt + ' - ' + programEndDt + ') '
                programOverview = infoArray[5]
                programImage = infoArray[14]
                programEpisodeTitle = infoArray[15]
                try:
                    programRating = getRating(infoArray[8])
                except:
                    programRating = 'NR'
                programName = programAirTime + programName

                if DEBUG == 'Verbose':
                    Log.Debug(programID + ',' + programName + ',' +
                              programStartDt + ',' + programEndDt + ',' +
                              programOverview + ',' + programRating)

                if progItem == 'programID': progData = programID,
                elif progItem == 'programName': progData = programName,
                elif progItem == 'programStartDt': progData = programStartDt,
                elif progItem == 'programEndDt': progData = programEndDt,
                elif progItem == 'programOverview': progData = programOverview,
                elif progItem == 'programImage': progData = programImage,
                elif progItem == 'programEpisodeTitle':
                    progData = programEpisodeTitle
                else:
                    progItem = ''
                break
            elif infoType == 'singleItem':
                programID = infoArray[0] + '-' + infoArray[16]
                programName = infoArray[1]
                programStartDt = u.getDateTime12(infoArray[3],
                                                 format='datetime')
                programEndDt = u.getDateTime12(infoArray[4], format='time')
                programAirTime = '(' + programStartDt + ' - ' + programEndDt + ') '
                programOverview = infoArray[5]
                programImage = infoArray[14]
                programEpisodeTitle = infoArray[15]
                try:
                    programRating = u.getRating(infoArray[8])
                except:
                    programRating = 'NR'
                programName = programAirTime + programName

                if DEBUG == 'Verbose':
                    Log.Debug(programID + ',' + programName + ',' +
                              programStartDt + ',' + programEndDt + ',' +
                              programOverview + ',' + programRating)

                if progItem == 'programID': progData = programID,
                elif progItem == 'programName': progData = programName,
                elif progItem == 'programStartDt': progData = programStartDt,
                elif progItem == 'programEndDt': progData = programEndDt,
                elif progItem == 'programOverview': progData = programOverview,
                elif progItem == 'programImage': progData = programImage,
                elif progItem == 'programEpisodeTitle':
                    progData = programEpisodeTitle
                else:
                    progItem = ''
                break
            elif count > 2:
                break
            else:
                pass

        progData = str(progData[0])

    else:
        progData = 'No Listing Info : Update WMC Guide Data and/or check WMC logs for details.'

    if DEBUG == 'Normal' or DEBUG == 'Verbose':
        Log.Debug(progData)

    return progData
예제 #10
0
def CreateChannel(url, chID, title, thumb):

    oc = ObjectContainer(title2=title, no_cache=True)

    #closeLiveStream()

    # Get Start and end datetime and convert to seconds
    startDt = u.getTimeS(datetime.datetime.utcnow())
    endDt = int(startDt + (timedelta(
        days=int(Prefs['serverwmc_epg_days']))).total_seconds())

    # build request string
    sendCommand = 'GetEntries|{0}|{1}|{2}'.format(chID, startDt, endDt)

    # Connect and get channel/program info
    resultsArray = socketClient(sendCommand, '')

    if DEBUG == 'Verbose':
        Log.Debug('----------CreateChannel Function----------')
        Log.Debug('Full resultsArray : ' + str(resultsArray))
        Log.Debug('--------Array list Itemized--------')

    # Loop through resultsArray to build Channel objects
    if len(resultsArray) > 1:
        for result in resultsArray:
            infoArray = result.split('|')
            programID = infoArray[0] + '-' + infoArray[16]
            programName = infoArray[1]
            programStartDt24 = u.getDateTime24(infoArray[3])
            programEndDt24 = u.getDateTime24(infoArray[4])
            programStartDt12 = u.getDateTime12(infoArray[3], format='datetime')
            programEndDt12 = u.getDateTime12(infoArray[4], format='time')
            programAirTime = '(' + programStartDt12 + ' - ' + programEndDt12 + ') '
            programOverview = infoArray[5].decode(encoding='UTF-8',
                                                  errors='strict')
            if infoArray[14] == 'None':
                programImage = R(thumb)
            else:
                programImage = infoArray[14]
            programEpisodeTitle = infoArray[15]
            try:
                programRating = u.getRating(infoArray[8])
            except:
                programRating = 'NR'
            programTitle = programAirTime + programName

            if DEBUG == 'Verbose':
                Log.Debug('infoArray : ' + str(infoArray))
                Log.Debug(programID + ',' + programTitle + ',' +
                          programStartDt24 + ',' + programEndDt24 + ',' +
                          programOverview + ',' + programRating)
            if programStartDt24 <= u.getDateTime24(startDt) <= programEndDt24:
                oc.add(
                    CreateListing(url=url,
                                  chID=chID,
                                  chName=title,
                                  programID=programID,
                                  title=programTitle,
                                  name=programName,
                                  summary=programOverview,
                                  startTime=infoArray[3],
                                  endTime=infoArray[4],
                                  thumb=programImage,
                                  nowPlaying=True))
            else:
                oc.add(
                    CreateListing(url=url,
                                  chID=chID,
                                  chName=title,
                                  programID=programID,
                                  title=programTitle,
                                  name=programName,
                                  summary=programOverview,
                                  startTime=infoArray[3],
                                  endTime=infoArray[4],
                                  thumb=programImage))
    else:
        oc.add(
            CreateListing(
                url=url,
                chID=chID,
                chName=title,
                programID='99',
                title='No EPG Info Available',
                name='No EPG Info Available',
                summary='No EPG Info Available.  Check WMC for more info.',
                startTime=1423072800,
                endTime=1423072800 + DURATION,
                thumb=R(PLAY_ICON),
                nowPlaying=True))

    return oc
예제 #11
0
def getListingInfo(chID, progItem, infoType='Upcoming', startDt='', endDt=''):

        # Get Start and end datetime and convert to seconds
        if infoType != 'singleItem':
                startDt = u.getTimeS(datetime.datetime.utcnow())
                endDt = int(startDt + (timedelta(days=int(Prefs['serverwmc_epg_days']))).total_seconds())

        # build request string
        sendCommand = 'GetEntries|{0}|{1}|{2}'.format(chID, startDt, endDt)

        # Connect and get channel/program info
        resultsArray = socketClient(sendCommand, '')

        if DEBUG=='Verbose':
                Log.Debug('----------getListingInfo Function----------')
                Log.Debug(resultsArray)

        # Loop through results array and build Channel info objects
        if len(resultsArray) > 1:
                count = 0
                for result in resultsArray:
                        count += 1
                        infoArray = result.split('|')
                        # only get now playing item
                        if count in (1,2) and infoType in ('nowPlaying', 'upNext'):
                                programID = infoArray[0] + '-' + infoArray[16]
                                programName = infoArray[1]
                                programStartDt = u.getDateTime12(infoArray[3], format='datetime')
                                programEndDt = u.getDateTime12(infoArray[4], format='time')
                                programAirTime = '(' + programStartDt + ' - ' + programEndDt + ') '
                                programOverview = infoArray[5]
                                programImage = infoArray[14]
                                programEpisodeTitle = infoArray[15]
                                try:
                                        programRating = getRating(infoArray[8])
                                except:
                                        programRating = 'NR'
                                programName = programAirTime + programName

                                if DEBUG == 'Verbose':
                                        Log.Debug(programID + ',' + programName + ',' + programStartDt + ',' + programEndDt +
                                                 ',' + programOverview + ',' + programRating)

                                if progItem == 'programID' : progData=programID,
                                elif progItem == 'programName' : progData=programName,
                                elif progItem == 'programStartDt' : progData=programStartDt,
                                elif progItem == 'programEndDt' : progData=programEndDt,
                                elif progItem == 'programOverview' : progData=programOverview,
                                elif progItem == 'programImage' : progData=programImage,
                                elif progItem == 'programEpisodeTitle' : progData=programEpisodeTitle
                                else : progItem = ''
                                break
                        elif infoType == 'singleItem':
                                programID = infoArray[0] + '-' + infoArray[16]
                                programName = infoArray[1]
                                programStartDt = u.getDateTime12(infoArray[3], format='datetime')
                                programEndDt = u.getDateTime12(infoArray[4], format='time')
                                programAirTime = '(' + programStartDt + ' - ' + programEndDt + ') '
                                programOverview = infoArray[5]
                                programImage = infoArray[14]
                                programEpisodeTitle = infoArray[15]
                                try:
                                        programRating = u.getRating(infoArray[8])
                                except:
                                        programRating = 'NR'
                                programName = programAirTime + programName

                                if DEBUG == 'Verbose':
                                        Log.Debug(programID + ',' + programName + ',' + programStartDt + ',' + programEndDt +
                                                 ',' + programOverview + ',' + programRating)

                                if progItem == 'programID' : progData=programID,
                                elif progItem == 'programName' : progData=programName,
                                elif progItem == 'programStartDt' : progData=programStartDt,
                                elif progItem == 'programEndDt' : progData=programEndDt,
                                elif progItem == 'programOverview' : progData=programOverview,
                                elif progItem == 'programImage' : progData=programImage,
                                elif progItem == 'programEpisodeTitle' : progData=programEpisodeTitle
                                else : progItem = ''
                                break
                        elif count>2:
                                break
                        else:
                                pass

                progData = str(progData[0])

        else:
                progData = 'No Listing Info : Update WMC Guide Data and/or check WMC logs for details.'

        if DEBUG == 'Normal' or DEBUG == 'Verbose':
                Log.Debug(progData)

        return progData
예제 #12
0
def CreateChannel(url, chID, title, thumb):

        oc = ObjectContainer(title2=title, no_cache=True)

        #closeLiveStream()

        # Get Start and end datetime and convert to seconds
        startDt = u.getTimeS(datetime.datetime.utcnow())
        endDt = int(startDt + (timedelta(days=int(Prefs['serverwmc_epg_days']))).total_seconds())

        # build request string
        sendCommand = 'GetEntries|{0}|{1}|{2}'.format(chID, startDt, endDt)

        # Connect and get channel/program info
        resultsArray = socketClient(sendCommand, '')

        if DEBUG=='Verbose':
                Log.Debug('----------CreateChannel Function----------')
                Log.Debug('Full resultsArray : ' + str(resultsArray))
                Log.Debug('--------Array list Itemized--------')

        # Loop through resultsArray to build Channel objects
        if len(resultsArray) > 1:
                for result in resultsArray:
                        infoArray = result.split('|')
                        programID = infoArray[0] + '-' + infoArray[16]
                        programName = infoArray[1]
                        programStartDt24 = u.getDateTime24(infoArray[3])
                        programEndDt24 = u.getDateTime24(infoArray[4])
                        programStartDt12 = u.getDateTime12(infoArray[3], format='datetime')
                        programEndDt12 = u.getDateTime12(infoArray[4], format='time')
                        programAirTime = '(' + programStartDt12 + ' - ' + programEndDt12 + ') '
                        programOverview = infoArray[5].decode(encoding='UTF-8', errors='strict')
                        if infoArray[14]=='None':
                                programImage = R(thumb)
                        else:
                                programImage = infoArray[14]
                        programEpisodeTitle = infoArray[15]
                        try:
                                programRating = u.getRating(infoArray[8])
                        except:
                                programRating = 'NR'
                        programTitle = programAirTime + programName

                        if DEBUG=='Verbose':
                                Log.Debug('infoArray : ' + str(infoArray))
                                Log.Debug(programID + ',' + programTitle + ',' + programStartDt24 + ',' + programEndDt24 +
                                        ',' + programOverview + ',' + programRating)
                        if programStartDt24 <= u.getDateTime24(startDt) <= programEndDt24:
                                oc.add(
                                        CreateListing(
                                                url=url,
                                                chID=chID,
                                                chName=title,
                                                programID=programID,
                                                title=programTitle,
                                                name=programName,
                                                summary=programOverview,
                                                startTime = infoArray[3],
                                                endTime = infoArray[4],
                                                thumb=programImage,
                                                nowPlaying=True
                                                ))
                        else:
                                oc.add(
                                        CreateListing(
                                                url=url,
                                                chID=chID,
                                                chName=title,
                                                programID=programID,
                                                title=programTitle,
                                                name=programName,
                                                summary=programOverview,
                                                startTime = infoArray[3],
                                                endTime = infoArray[4],
                                                thumb=programImage
                                                ))
        else:
                oc.add(
                        CreateListing(
                                url=url,
                                chID=chID,
                                chName=title,
                                programID='99',
                                title='No EPG Info Available',
                                name='No EPG Info Available',
                                summary='No EPG Info Available.  Check WMC for more info.',
                                startTime = 1423072800,
                                endTime = 1423072800 + DURATION,
                                thumb=R(PLAY_ICON),
                                nowPlaying=True
                                ))

        return oc