Ejemplo n.º 1
0
def start():
    import urllib

    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.cleanProg(True)

    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.updateChannels(True)

    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.updateProgram()

    startTime = datetime.datetime.now()  #-datetime.timedelta(minutes = 60)
    endTime = datetime.datetime.now() + datetime.timedelta(minutes=20)

    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    #xbmcgui.Dialog().notification(localString(31916), localString(30110),  __addon__.getAddonInfo('path') + '/icon.png', 3000, False)
    _zattooDB_.getProgInfo(True, startTime, endTime)

    #xbmcgui.Dialog().notification(localString(31106), localString(31915),  __addon__.getAddonInfo('path') + '/icon.png', 3000, False)
    #xbmc.executebuiltin("ActivateWindow(busydialog)")
    recInfo()
    _library_.delete_library()  # add by samoth
    _library_.make_library()
Ejemplo n.º 2
0
	def __init__(self):
		super(Teletext, self).__init__()

		self.channelID = ZattooDB().get_playing()['channel']

		self.imagePath=''
		self.pageInput=''

		self.bgImage = xbmcgui.ControlImage(0,0,1280,720,'')
		self.addControl(self.bgImage)
		self.bgImage.setImage(__addon__.getAddonInfo('path') + '/resources/teletextBG.png')

		self.pageInputCtrl = xbmcgui.ControlLabel(0, 0, 265, 100, '100', font='font30', alignment=2)
		self.addControl(self.pageInputCtrl)
		self.pageInputCtrl.setVisible(False)

		self.pageImage = xbmcgui.ControlImage(260, 0, 800, 720, "")
		self.addControl(self.pageImage)
		
		self.button0 = xbmcgui.ControlButton(50, 640, 170, 40, localString(31912), font='font20', alignment=6)
		self.addControl(self.button0)
		
		self.button1 = xbmcgui.ControlButton(1090, 640, 50, 40, "<", font='font30', alignment=6)
		self.addControl(self.button1)
		
		self.button2 = xbmcgui.ControlButton(1190, 640, 50, 40, ">", font='font30', alignment=6)
		self.addControl(self.button2)

		self.currentPage=100
		self.subPage=1
		self.showPage(str(self.currentPage))#, str(self.subPage))
Ejemplo n.º 3
0
def  toggle_channel():
  lastChannel=xbmcgui.Window(10000).getProperty('ZBElastChannel')
  watch_channel(lastChannel, '0', '0')
  
  _zattooDB_=ZattooDB()
  channelList = _zattooDB_.getChannelList(_listMode_ == 'favourites')
  nr=channelList[lastChannel]['nr']
  return nr
Ejemplo n.º 4
0
def recInfo():
    import urllib
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()

    resultData = _zattooDB_.zapi.exec_zapiCall('/zapi/playlist', None)
    if resultData is None: return
    for record in resultData['recordings']:
        _zattooDB_.getShowInfo(record['program_id'])
Ejemplo n.º 5
0
def getProgNextDay():
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()

    start = datetime.time(14, 0, 0)
    now = datetime.datetime.now().time()
    tomorrow = datetime.datetime.today() + datetime.timedelta(days=1)

    if now > start:
        #debug('NextDay ' + str(start) + ' - ' + str(now) + ' - ' + str(tomorrow))
        _zattooDB_.updateProgram(tomorrow)
Ejemplo n.º 6
0
def toggle_channel():
    _zattooDB_ = ZattooDB()
    toggleChannel = xbmcgui.Window(10000).getProperty('toggleChannel')
    playing = _zattooDB_.get_playing()
    xbmcgui.Window(10000).setProperty('toggleChannel', playing['channel'])

    if toggleChannel == "":
        xbmc.executebuiltin("Action(Back)")  #go back to channel selector
    else:
        watch_channel(toggleChannel, '0', '0')
        channelList = _zattooDB_.getChannelList(_listMode_ == 'favourites')
        nr = channelList[toggleChannel]['nr']
        return nr
Ejemplo n.º 7
0
def start():
    import urllib
    #xbmc.executebuiltin('ActivateWindow(busydialognocancel)')
    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.cleanProg(True)
    
    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.updateChannels()
    
    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    _zattooDB_.updateProgram()
    
    try: 
        tomorrow = datetime.datetime.today() + datetime.timedelta(days=1)
        _zattooDB_.updateProgram(tomorrow)
    except:pass


    startTime=datetime.datetime.now()#-datetime.timedelta(minutes = 60)
    endTime=datetime.datetime.now()+datetime.timedelta(minutes = 20)
    
    #re-import ZattooDB to prevent "convert_timestamp" error
    from resources.zattooDB import ZattooDB
    _zattooDB_ = ZattooDB()
    #xbmcgui.Dialog().notification(localString(31916), localString(30110),  __addon__.getAddonInfo('path') + '/icon.png', 3000, False)
    
    if __addon__.getSetting('dbonstart') == 'true':
        _zattooDB_.getProgInfo(True, startTime, endTime)
        recInfo()
        _library_.delete_library() # add by samoth
        _library_.make_library()
Ejemplo n.º 8
0
def skip_channel(skipDir):
    #new ZattooDB instance because this is called from thread-timer on channel-nr input (sql connection doesn't work)
    _zattooDB_ = ZattooDB()

    channelList = _zattooDB_.getChannelList(_listMode_ == 'favourites')
    currentChannel = _zattooDB_.get_playing()['channel']
    nr = channelList[currentChannel]['nr']
    nr += skipDir

    if nr < len(channelList) and nr > -1:
        watch_channel(channelList['index'][nr], '0', '0')
        return nr
    else:
        xbmc.executebuiltin('XBMC.Action(FullScreen)')
        return channelList[currentChannel]['nr']
Ejemplo n.º 9
0
def refreshProg():
    import urllib
    monitor = xbmc.Monitor()
    while not monitor.abortRequested():
        if monitor.waitForAbort(600): break
        from resources.zattooDB import ZattooDB
        _zattooDB_ = ZattooDB()
        #update programInfo
        startTime=datetime.datetime.now()
        endTime=datetime.datetime.now()+datetime.timedelta(minutes = 120)

        try:
            getProgNextDay()
            _zattooDB_.getProgInfo(False, startTime, endTime,'all')
        except:
            pass
Ejemplo n.º 10
0
    def showChannels(self):
        start = int(self.selected / 16) * 16
        channels = self.channels
        self.programms = ZattooDB().getPrograms(channels, False,
                                                datetime.datetime.now(),
                                                datetime.datetime.now())

        #xbmcgui.lock()
        for nr in range(0, 16):
            current = start + nr
            control = self.controls[nr]

            if current > (len(channels) - 2):  #-2: skip channel['index']
                control['image'].setVisible(False)
                control['logo'].setVisible(False)
                control['label'].setVisible(False)
                control['channelNr'].setVisible(False)
                control['visible'] = False
            else:
                currenChannel = channels[channels['index'][current]]
                title = ''
                control['program'] = ''
                for search in self.programms:
                    if search['channel'] == currenChannel['id']:
                        title = search['title']
                        control['program'] = search
                        break

                control['logo'].setImage(currenChannel['logo'])
                control['label'].setLabel(title)
                control['channelNr'].setLabel(str(current + 1))
                control['channel'] = currenChannel['id']
                if control['visible'] == False:
                    control['image'].setVisible(True)
                    control['logo'].setVisible(True)
                    control['label'].setVisible(True)
                    control['channelNr'].setVisible(True)
                    control['visible'] = True

        #show images
        now = int(time.time())
        for control in self.controls:
            if control['visible']:
                #src = 'http://thumb.zattic.com/' + control['channel'] + '/500x288.jpg?r=' + str(now)
                src = 'http://thumb.zattic.com/' + control[
                    'channel'] + '/256x144.jpg?r=' + str(now)
                control['image'].setImage(src, False)
Ejemplo n.º 11
0
def refreshProg():
    import urllib
    monitor = xbmc.Monitor()
    while not monitor.abortRequested():
        if monitor.waitForAbort(600): break
        from resources.zattooDB import ZattooDB
        _zattooDB_ = ZattooDB()
        #update programInfo
        startTime = datetime.datetime.now()
        endTime = datetime.datetime.now() + datetime.timedelta(minutes=120)
        print 'StartRefresh  ' + str(datetime.datetime.now())
        try:
            _zattooDB_.getProgInfo(False, startTime, endTime)
        except:
            print 'ERROR on REFRESH'
            pass
        print "REFRESH Prog  " + str(datetime.datetime.now())
Ejemplo n.º 12
0
Archivo: epg.py Proyecto: Magibaer/repo
	def onInit(self):
		self.db = ZattooDB()
		control = self.getControl(self.C_MAIN_EPG_VIEW_MARKER)
		if control:
			left, top = control.getPosition()
			self.focusPoint.x = left
			self.focusPoint.y = top
			self.epgView.left = left
			self.epgView.top = top
			self.epgView.right = left + control.getWidth()
			self.epgView.bottom = top + control.getHeight()
			self.epgView.width = control.getWidth()
			self.epgView.cellHeight = control.getHeight() / CHANNELS_PER_PAGE

			# draw epg on open
			self.onRedrawEPG(self.channelIdx, self.viewStartDate)

# 		 self.notification = Notification(self.database, ADDON.getAddonInfo('path')+'/resources/epg')
		self.updateTimebar()
		
		self.getControl(4400).setVisible(False)
		self.getControl(4401).setVisible(True)
Ejemplo n.º 13
0
    def showInfo(self, jump=True):
        controlNr = self.selected % 16

        endPos = self.getControlPos(controlNr)
        if (not jump):
            #moving highlight
            pos = self.highlightImage.getPosition()
            stepX = (endPos['x'] - pos[0]) / 5
            stepY = (endPos['y'] - pos[1]) / 5

            for nr in range(1, 5):
                self.highlightImage.setPosition(pos[0] + (stepX * nr),
                                                pos[1] + (stepY * nr))
                xbmc.sleep(10)
        self.highlightImage.setPosition(endPos['x'], endPos['y'])

        #refresh image
        if hasattr(self, 'refreshImageTimer'): self.refreshImageTimer.cancel()
        src = 'http://thumb.zattic.com/' + self.controls[controlNr][
            'channel'] + '/256x144.jpg?r=' + str(int(time.time()))
        self.refreshImageTimer = threading.Timer(
            1, lambda: self.controls[controlNr]['image'].setImage(src, False))
        self.refreshImageTimer.start()

        #program= self.controls[controlNr]['program']
        program = ZattooDB().getPrograms(
            {'index': [self.controls[controlNr]['channel']]}, False,
            datetime.datetime.now(), datetime.datetime.now())[0]
        nextprog = ZattooDB().getPrograms(
            {'index': [self.controls[controlNr]['channel']]}, False,
            program['end_date'] + datetime.timedelta(seconds=60),
            program['end_date'] + datetime.timedelta(seconds=60))

        self.controls[controlNr]['label'].setLabel('')
        self.highLabel = program['title']
        self.scrollLabel.reset()
        self.scrollLabel.setPosition(endPos['x'] + 6, endPos['y'] + 149)
        self.scrollLabel.addLabel(program['title'])

        #update info
        channel = self.channels[self.channels['index'][self.selected]]
        self.infoLogo.setImage(channel['logo'], False)

        self.infoTitle.reset()
        self.infoDesc.reset()
        self.infoNext.reset()

        if (not program):
            self.infoChannelTitle.setLabel('[B]' + channel['title'] +
                                           '[/B]\n ')
            self.infoTitle.addLabel('[B] [/B]')
            self.infoImg.setImage('')
            self.infoDesc.addLabel('[B] [/B]')
            self.infoPlot.setText('')
            self.infoNext.addLabel('')

        else:
            self.infoChannelTitle.setLabel(
                '[B]' + channel['title'] + '[/B]\n' +
                program['start_date'].strftime('%H:%M') + ' - ' +
                program['end_date'].strftime('%H:%M'))
            self.infoTitle.addLabel('[B]' + program['title'] + '[/B]')
            self.infoImg.setImage(program['image_small'], False)
            self.infoNext.addLabel(
                '[COLOR blue]' + localString(30010) + '[/COLOR]' +
                '[COLOR aquamarine]' + nextprog[0]['title'] + '[/COLOR]' +
                '  ' + '[COLOR khaki]' +
                nextprog[0]['start_date'].strftime('%H:%M') + ' - ' +
                nextprog[0]['end_date'].strftime('%H:%M') + '[/COLOR]')

            desc = program['description']
            if (not desc): desc = " "
            self.infoDesc.addLabel('[B]' + desc + '[/B]')

            plot = self.db.getShowInfo(program['showID'], 'description')
            if (not plot): plot = "No description "
            self.infoPlot.setText(plot)
Ejemplo n.º 14
0
    def createPreview(self, fav):
        imgW = 256
        imgH = 150
        # collect all controls and add them in one call to save time
        allControls = []
        # create preview images first so they are behind highlight image
        images = []

        for nr in range(0, 16):
            pos = self.getControlPos(nr)
            image = xbmcgui.ControlImage(pos['x'], pos['y'] + 1, imgW - 2,
                                         imgH, '')
            allControls.append(image)
            images.append(image)

        self.highlightImage = xbmcgui.ControlImage(0, 0, imgW, 178, '')
        allControls.append(self.highlightImage)
        self.highLabel = ''

        #add a scroll label for highlighted item
        self.scrollLabel = xbmcgui.ControlFadeLabel(0, 0, 240, 30, 'font13',
                                                    '0xFF000000')
        allControls.append(self.scrollLabel)

        #preloadImage is buffer for image update
        self.preloadImage = xbmcgui.ControlImage(0, -200, 256, 150, '')
        allControls.append(self.preloadImage)

        for nr in range(0, 16):
            pos = self.getControlPos(nr)
            logo = xbmcgui.ControlImage(pos['x'] + 5, pos['y'] + 100, 84, 48,
                                        '')
            label = xbmcgui.ControlLabel(pos['x'] + 6, pos['y'] + imgH - 1,
                                         250, 30, 'font13')
            channelNr = xbmcgui.ControlLabel(pos['x'] + 200,
                                             pos['y'] + 5,
                                             50,
                                             20,
                                             'font13',
                                             alignment=1)

            allControls.append(logo)
            allControls.append(label)
            allControls.append(channelNr)

            self.controls.append({
                'image': images[nr],
                'logo': logo,
                'label': label,
                'channelNr': channelNr,
                'program': '',
                'visible': True
            })

        addonPath = xbmcaddon.Addon().getAddonInfo('path')

        #add info controls
        posX = 768
        #bg = xbmcgui.ControlImage(posX-10, -10, 530, 376, 'recentaddedback.png')
        #bg = xbmcgui.ControlImage(posX, 0, 512, 360, 'ContentPanel.png')
        #bg = xbmcgui.ControlImage(posX, 0, 512, 360, 'episodematte.png', colorDiffuse='0xFF333333')
        bg = xbmcgui.ControlImage(
            posX, 0, 512, 360, addonPath + '/resources/media/previewInfo.png')

        self.infoLogo = xbmcgui.ControlImage(
            74 + posX, 5, 140, 70, (xbmcaddon.Addon().getAddonInfo('path') +
                                    '/resources/media/channel-highlight.png'))
        self.infoChannelTitle = xbmcgui.ControlLabel(0 + posX,
                                                     85,
                                                     287,
                                                     30,
                                                     'TITLE',
                                                     alignment=2)
        self.infoImg = xbmcgui.ControlImage(
            284 + posX, 3, 225, 146,
            (xbmcaddon.Addon().getAddonInfo('path') +
             '/resources/media/channel-highlight.png'))

        self.infoTitle = xbmcgui.ControlFadeLabel(5 + posX, 150, 500, 20,
                                                  'font16', '0xFFFFFFFF', 2)
        self.infoDesc = xbmcgui.ControlFadeLabel(5 + posX, 180, 500, 20,
                                                 'font13', '0xFFFFFFFF', 2)
        self.infoPlot = xbmcgui.ControlTextBox(8 + posX, 205, 500, 128,
                                               'font13')
        self.infoNext = xbmcgui.ControlFadeLabel(8 + posX, 333, 500, 128,
                                                 'font12', '0xFFFFFFFF', 2)

        allControls.append(bg)
        allControls.append(self.infoLogo)
        allControls.append(self.infoChannelTitle)
        allControls.append(self.infoImg)
        allControls.append(self.infoTitle)
        allControls.append(self.infoDesc)
        allControls.append(self.infoPlot)
        allControls.append(self.infoNext)

        self.addControls(allControls)
        self.highlightImage.setImage(addonPath +
                                     '/resources/media/channel-highlight.png')
        self.infoPlot.autoScroll(5000, 1800, 5000)

        self.db = ZattooDB()
        if fav == 'popular': self.channels = self.db.getPopularList()
        else: self.channels = self.db.getChannelList(fav)
Ejemplo n.º 15
0
 def onAction(self, action):
   _zattooDB_=ZattooDB()
   channel=_zattooDB_.get_playing()['channel']
   channeltitle=_zattooDB_.get_channeltitle(channel)
   program = _zattooDB_.getPrograms({'index':[channel]}, True, datetime.datetime.now(), datetime.datetime.now())
   program=program[0]
   #print('ZATTOOGUI BUTTON'+str(action.getButtonCode()))
   #print('ZATTOOGUI ACTIONID'+str(action.getId()))
   self.channelInputCtrl.setVisible(False)
   action = action.getId()
   
   if action in [ACTION_PARENT_DIR, KEY_NAV_BACK, ACTION_PREVIOUS_MENU]:
     if hasattr(self, 'hideNrTimer'): self.hideNrTimer.cancel()
     self.close()
     xbmc.executebuiltin("Action(Stop)")
   if action==ACTION_STOP:
     if hasattr(self, 'hideNrTimer'): self.hideNrTimer.cancel()
     self.close()
   elif action==ACTION_OSD:
     if hasattr(self, 'hideNrTimer'): self.hideNrTimer.cancel()
     self.close()
   elif action in [ACTION_SELECT_ITEM, ACTION_MOUSE_LEFT_CLICK]:
     self.hidePrevImg()
     if(self.channelInput):
       self.channelInputTimer.cancel()
       self.channelInputTimeout()
     else:
       makeOsdInfo()
       gui = zattooOSD("zattooOSD.xml",__addon__.getAddonInfo('path'))
       gui.doModal()
   elif action == ACTION_MOVE_DOWN:
     if self.hidePrevImg():return
     xbmc.executebuiltin("Action(OSD)") #close hidden gui
     xbmc.executebuiltin('RunPlugin("plugin://'+__addonId__+'/?mode=epgOSD")')
   elif action == ACTION_MOVE_UP:
     if self.hidePrevImg():return
     xbmc.executebuiltin("Action(OSD)") #close hidden gui
     xbmc.executebuiltin('ActivateWindow(10025,"plugin://'+__addonId__+'/?mode=channellist")')
   elif action == ACTION_MOVE_LEFT:
     self.setPrevImg()
     self.showChannelNr(toggle_channel()+1)
   elif action == ACTION_MOVE_RIGHT:
     change_stream(1)
   elif action in [ACTION_CHANNEL_UP, ACTION_PAGE_UP]:
     #if self.hidePrevImg():return
     nr=skip_channel(+1)
     self.showChannelNr(nr+1)
   elif action in [ACTION_CHANNEL_DOWN, ACTION_PAGE_DOWN]:
     #if self.hidePrevImg():return
     nr=skip_channel(-1)
     self.showChannelNr(nr+1)
   elif action == ACTION_RECORD:
     setup_recording(program['showID'])
   elif (action>57 and action<68): #numbers 0-9
     self.hidePrevImg()
     #print('channel ipnut'+str(action))
     if hasattr(self, 'channelInputTimer'): self.channelInputTimer.cancel()
     self.channelInput+=str(action-58)
     self.channelInputCtrl.setLabel(self.channelInput)
     self.channelInputCtrl.setVisible(True)
     if len(self.channelInput)>2: self.channelInputTimeout()
     else:
        self.channelInputTimer = threading.Timer(1.5, self.channelInputTimeout)
        self.channelInputTimer.start()
   elif action == ACTION_BUILT_IN_FUNCTION:self.close() #keymap functions
Ejemplo n.º 16
0
def watch_channel(channel_id,
                  start,
                  end,
                  showID="",
                  restart=False,
                  showOSD=False):
    #print('WATCH: '+channel_id+' st:'+str(start)+' en:'+str(end))
    #new ZattooDB instance because this is called from thread-timer on channel-nr input (sql connection doesn't work)
    _zattooDB_ = ZattooDB()

    #selected currently playing live TV
    playing = _zattooDB_.get_playing()
    if (xbmc.Player().isPlaying() and channel_id == playing['channel']
            and start == '0'):
        xbmc.executebuiltin("Action(FullScreen)")

        return

    # (64 150 300) 600 900 1500 3000 5000
    max_bandwidth = __addon__.getSetting('max_bandwidth')

    if DASH: stream_type = 'dash'
    else: stream_type = 'hls'

    if restart:
        startTime = datetime.datetime.fromtimestamp(int(start))
        endTime = datetime.datetime.fromtimestamp(int(end))
        params = {'stream_type': stream_type, 'maxrate': max_bandwidth}

    elif start == '0':
        startTime = datetime.datetime.now()
        endTime = datetime.datetime.now()
        params = {
            'cid': channel_id,
            'stream_type': stream_type,
            'maxrate': max_bandwidth
        }
    else:
        startTime = datetime.datetime.fromtimestamp(int(start))
        endTime = datetime.datetime.fromtimestamp(int(end))
        zStart = datetime.datetime.fromtimestamp(
            int(start) - _timezone_).strftime(
                "%Y-%m-%dT%H:%M:%SZ")  #5min zattoo skips back
        zEnd = datetime.datetime.fromtimestamp(int(end) - _timezone_).strftime(
            "%Y-%m-%dT%H:%M:%SZ")
        params = {
            'cid': channel_id,
            'stream_type': stream_type,
            'start': zStart,
            'end': zEnd,
            'maxrate': max_bandwidth
        }
        #print "RECALL: " +str(zStart) + "  " + str(startTime) + "  " +str(_timezone_)
    channelInfo = _zattooDB_.get_channelInfo(channel_id)

    if restart:
        resultData = _zattooDB_.zapi.exec_zapiCall(
            '/zapi/watch/selective_recall/' + channel_id + '/' + showID,
            params)
    else:
        resultData = _zattooDB_.zapi.exec_zapiCall('/zapi/watch', params)
    #resultData = _zattooDB_.zapi.exec_zapiCall('/zapi/watch',params)
    #print 'ResultData ' +str(resultData)
    if resultData is None:
        xbmcgui.Dialog().notification("ERROR", "NO ZAPI RESULT",
                                      channelInfo['logo'], 5000, False)
        return

    streams = resultData['stream']['watch_urls']
    if len(streams) == 0:
        xbmcgui.Dialog().notification("ERROR",
                                      "NO STREAM FOUND, CHECK SETTINGS!",
                                      channelInfo['logo'], 5000, False)
        return
    # change stream if settings are set
    streamNr = 0
    if len(streams) > 1 and __addon__.getSetting(
            'audio_stream') == 'B' and streams[1]['audio_channel'] == 'B':
        streamNr = 1
    xbmcgui.Window(10000).setProperty('playstream', streams[streamNr]['url'])

    # save currently playing
    streamsList = []
    for stream in resultData['stream']['watch_urls']:
        streamsList.append(stream['url'])
    streamsList = '|'.join(streamsList)
    _zattooDB_.set_playing(channel_id, streamsList, streamNr)

    #make Info
    program = _zattooDB_.getPrograms({'index': [channel_id]}, True, startTime,
                                     endTime)

    listitem = xbmcgui.ListItem(channel_id)
    if program:
        program = program[0]
        heading = ('[B]' + channelInfo['title'] + '[/B] ').translate(
            _umlaut_) + '  ' + program['start_date'].strftime(
                '%H:%M') + '-' + program['end_date'].strftime('%H:%M')
        xbmcgui.Dialog().notification(heading,
                                      program['title'].translate(_umlaut_),
                                      channelInfo['logo'], 5000, False)

        #set info for recall
        listitem.setThumbnailImage(program['image_small'])
        meta = {
            'title':
            program['title'],
            'season':
            'S',
            'episode':
            streamNr,
            'tvshowtitle':
            channelInfo['title'] + ', ' +
            program['start_date'].strftime('%A %H:%M') + '-' +
            program['end_date'].strftime('%H:%M'),
            'premiered':
            'premiered',
            'duration':
            '20',
            'rating':
            'rating',
            'director':
            'director',
            'writer':
            'writer',
            'plot':
            program['description_long']
        }
        listitem.setInfo(type="Video", infoLabels=meta)
        listitem.setArt({
            'poster': program['image_small'],
            'logo': channelInfo['logo']
        })

    if DASH:
        listitem.setProperty('inputstreamaddon', 'inputstream.adaptive')
        listitem.setProperty('inputstream.adaptive.manifest_type', 'mpd')

    #play liveTV: info is created in OSD
    if (start == '0'):
        _zattooDB_ = ZattooDB()
        channelList = _zattooDB_.getChannelList(_listMode_ == 'favourites')
        #print "ChannelList: " + str(channelList)
        currentChannel = _zattooDB_.get_playing()['channel']
        nr = channelList[currentChannel]['nr']
        player = xbmc.Player()
        #player.startTime=startTime
        player.play(streams[streamNr]['url'], listitem)
        #while (player.playing):xbmc.sleep(100)
        show_channelNr(nr + 1)
    else:
        #player= myPlayer(290)
        player = xbmc.Player()
        player.startTime = startTime
        player.play(streams[streamNr]['url'], listitem)
        while (player.playing):
            xbmc.sleep(100)
Ejemplo n.º 17
0
Archivo: epg.py Proyecto: Magibaer/repo
	def _showDescription(self, id):
		description = ZattooDB().getShowInfo(id,'description')
		if description == '': description = strings(NO_DESCRIPTION)
		self.setControlText(self.C_MAIN_DESCRIPTION, description)
Ejemplo n.º 18
0
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with zattooHiQ.  If not, see <http://www.gnu.org/licenses/>.
#

import xbmc, xbmcgui, xbmcplugin, xbmcaddon
import sys, urlparse
import time, datetime, threading
from resources.zattooDB import ZattooDB

__addon__ = xbmcaddon.Addon()
__addonId__ = __addon__.getAddonInfo('id')
__addonname__ = __addon__.getAddonInfo('name')
_zattooDB_ = ZattooDB()

_timezone_ = int(
    __addon__.getSetting('time_offset')) * 60 * -60  #-time.altzone

DEBUG = __addon__.getSetting('debug')


def debug(s):
    if DEBUG: xbmc.log(str(s), xbmc.LOGDEBUG)


class library:
    def make_library(self):
        folder = __addon__.getSetting('library_dir')
        if not folder: return
Ejemplo n.º 19
0
def watch_channel(channel_id, start, end, showID="", restart=False):
  #print('WATCH: '+channel_id+' st:'+str(start)+' en:'+str(end))
  
  #new ZattooDB instance because this is called from thread-timer on channel-nr input (sql connection doesn't work)
  _zattooDB_=ZattooDB()
  #selected currently playing live TV
  playing=_zattooDB_.get_playing()
  if (xbmc.Player().isPlaying() and channel_id == playing['channel'] and start=='0' ):
    xbmc.executebuiltin("Action(FullScreen)")
    makeZattooGUI()
    return

  #save current channel for toggle
  xbmcgui.Window(10000).setProperty('ZBElastChannel', playing['channel'])
  
  # (64 150 300) 600 900 1500 3000 5000
  max_bandwidth = __addon__.getSetting('max_bandwidth')
  
  if restart: params = {'stream_type': 'hls'}
  elif start == '0': params = {'cid': channel_id, 'stream_type': 'hls', 'maxrate':max_bandwidth}
  else:
    zStart = datetime.datetime.fromtimestamp(int(start) - _timezone_ ).strftime("%Y-%m-%dT%H:%M:%SZ")  #5min zattoo skips back
    zEnd = datetime.datetime.fromtimestamp(int(end) - _timezone_ ).strftime("%Y-%m-%dT%H:%M:%SZ")
    params = {'cid': channel_id, 'stream_type': 'hls', 'start':zStart, 'end':zEnd, 'maxrate':max_bandwidth }
    
  channelInfo = _zattooDB_.get_channelInfo(channel_id) 
  if restart: resultData = _zattooDB_.zapi.exec_zapiCall('/zapi/watch/selective_recall/'+channel_id+'/'+showID, params)
  else: resultData = _zattooDB_.zapi.exec_zapiCall('/zapi/watch',params)
  print 'ResultData ' +str(params)
  if resultData is None:
    xbmcgui.Dialog().notification("ERROR", "NO ZAPI RESULT", channelInfo['logo'], 5000, False)
    return
  
  streams = resultData['stream']['watch_urls']
  if len(streams)==0:
    xbmcgui.Dialog().notification("ERROR", "NO STREAM FOUND, CHECK SETTINGS!", channelInfo['logo'], 5000, False)
    return
  # change stream if settings are set 
  streamNr = 0
  if len(streams) > 1 and  __addon__.getSetting('audio_stream') == 'B' and streams[1]['audio_channel'] == 'B': streamNr = 1
  
  #play liveTV: info is created in OSD
  if (start=='0'):
    xbmc.Player().play(streams[streamNr]['url'], xbmcgui.ListItem(channel_id))
    xbmcgui.Window(10000).setProperty('playstream', streams[streamNr]['url'])
  
  #12005:fullscreenvideo
  #if (xbmcgui.getCurrentWindowId()!=12005):xbmc.executebuiltin("Action(FullScreen)")
   
  # save currently playing
  streamsList = []
  for stream in resultData['stream']['watch_urls']: streamsList.append(stream['url'])
  streamsList = '|'.join(streamsList)
  _zattooDB_.set_playing(channel_id, streamsList, streamNr)

  #make Info
  if start == '0':startTime = datetime.datetime.now()
  else: startTime = datetime.datetime.fromtimestamp(int(start))
  if end == '0': endTime = datetime.datetime.now() 
  else: endTime = datetime.datetime.fromtimestamp(int(end))
  program = _zattooDB_.getPrograms({'index':[channel_id]}, True, startTime, endTime)

  listitem = xbmcgui.ListItem(channel_id)
  if program:
    program = program[0]
    heading = ('[B]' + channelInfo['title'] + '[/B] ').translate(_umlaut_) + '  ' + program['start_date'].strftime('%H:%M') + '-' + program['end_date'].strftime('%H:%M')
    xbmcgui.Dialog().notification(heading, program['title'].translate(_umlaut_), channelInfo['logo'], 5000, False)

    #set info for recall
    listitem.setThumbnailImage(program['image_small'])
    meta = {'title': program['title'], 'season' : 'S', 'episode': streamNr, 'tvshowtitle': channelInfo['title']+ ', ' + program['start_date'].strftime('%A %H:%M') + '-' + program['end_date'].strftime('%H:%M'), 'premiered' :'premiered', 'duration' : '20', 'rating': 'rating', 'director': 'director', 'writer': 'writer', 'plot': program['description_long']}
    listitem.setInfo(type="Video", infoLabels = meta)

    listitem.setArt({ 'poster': program['image_small'], 'logo' : channelInfo['logo'] })

  #play recall
  if (start!='0') or restart:
    player= myPlayer(True)
    player.play(streams[streamNr]['url'], listitem)
    while (player.starting):xbmc.sleep(10) #wait for player to skip 5min on recall
  else: makeZattooGUI() #liveTV: intercept keys and show OSD