def _createItem(self, teaser):
        settings = self.settings
        item = None
        genre = ''
        sep = ''
        if teaser.genre:
            genre += sep + teaser.genre
            sep = ' | '
        if teaser.category:
            genre += sep + teaser.category
        title = teaser.title

        #self.log.info("settings.mergeCategoryAndTitle: {} - cat: {}, title: {}, starts: {}.", self.settings.mergeCategoryAndTitle, teaser.category, title, title.startswith(teaser.category))
        if settings.mergeCategoryAndTitle and settings.showGenreInTitle:        
            if teaser.category is not None and title.startswith(teaser.category):
                title = title[len(teaser.category):].strip()
        #self.log.info("settings.mergeCategoryAndTitle: {} - cat: {}, title: {}, starts: {}.", settings.mergeCategoryAndTitle, teaser.category, title, title.startswith(teaser.category))

        if teaser.label is not None and teaser.label != "" and settings.showTagsInTitle:
            label = teaser.label
            if teaser.type is not None:
                label = teaser.type.capitalize() + ": " + label
            title = '[' + label + '] ' + title
        title.strip()
        
        if teaser.playable and settings.showPlayableInTitle:
            title = '(>) ' + title
        if genre is not None and genre != "" and settings.showGenreInTitle:
            title = '[' + genre + '] ' + title
        title = title.strip()

        if teaser.date is not None and settings.showDateInTitle:
            title = teaser.date + " " + title
           
        isFolder = False
        #self.log.info("_createItem: title='{}' contentName='{}' playable='{}'", title, teaser.contentName, teaser.playable)
        if teaser.contentName is not None and teaser.playable:
            params = {'contentName': teaser.contentName, 'title': title}
            if teaser.apiToken is not None:
                params['apiToken'] = teaser.apiToken
            if teaser.url is not None:
                params['videoUrl'] = teaser.url
            if teaser.date is not None:
                params['date'] = teaser.date
            if teaser.duration is not None:
                params['duration'] = teaser.duration
            if genre is not None:
                params['genre'] = genre
            action = Action(pagelet='PlayVideo', params=params)
            isFolder = False
        else:   
            action = Action(pagelet='RubricPage', params={'rubricUrl': teaser.url})
            self.info("redirecting to rubric-url  '{}' and teaser-title '{}' ...", teaser.url, title)
            isFolder = True
            #return None
        item = Item(title, action, teaser.image, teaser.text, genre, teaser.date, teaser.duration, isFolder, teaser.playable)
        return item
Exemple #2
0
    def service(self, request, response):
        apiToken = request.getParam('apiToken')

        response.addFolder(self._(32030),
                           Action('SearchHistoryPage', {'apiToken': apiToken}))
        response.addFolder(
            self._(32001),
            Action('SearchPage', {
                'apiToken': apiToken,
                'contentTypes': 'episode'
            }))
        response.addFolder(self._(32002),
                           Action('SearchPage', {'apiToken': apiToken}))
Exemple #3
0
 def _sendMessage(self, level, caption, message, action=Action()):
     dialog = xbmcgui.Dialog()
     dialog.notification(caption, message, level)
     url = self.encodeUrl(action)
     self.context.log.info("[Response] - send{} '{}', redirecting to '{}'", caption, message, url)
     listItem = xbmcgui.ListItem()
     xbmcplugin.setResolvedUrl(self.handle, False, listItem)
    def service(self, request, response):
        configuration = ConfigurationResource(Constants.configUrl)
        self._parse(configuration)
        apiToken = configuration.apiToken

        response.addFolder(self._(32005),
                           Action('SearchMenuPage', {'apiToken': apiToken}))

        response.addFolder(self._(32003),
                           Action('RubricsPage', {'apiToken': apiToken}))

        response.addFolder(
            self._(32031),
            Action('RubricPage', {
                'apiToken': apiToken,
                'rubricUrl': '/bestbewertet'
            }))
        response.addFolder(
            self._(32032),
            Action('RubricPage', {
                'apiToken': apiToken,
                'rubricUrl': '/meist-gesehen'
            }))
        response.addFolder(self._(32037),
                           Action('ShowsAzPage', {'apiToken': apiToken}))
        #response.addFolder(self._(32034), Action('RubricPage', {'apiToken': apiToken, 'rubricUrl': '/barrierefreiheit-im-zdf'}))
        response.addFolder(
            self._(32036),
            Action('RubricPage', {
                'apiToken': apiToken,
                'rubricUrl': '/sendung-verpasst'
            }))

        response.addFolder(self._(32035),
                           Action('LiveTvPage', {'apiToken': apiToken}))
Exemple #5
0
    def service(self, request, response):

        navigation = NavigationResource(Constants.baseUrl)
        self._parse(navigation)

        for rubric in navigation.rubrics:
            if self._isExcluded(rubric):
                continue
            response.addFolder(str(self._(32004)) + ' - ' + rubric.title, Action('RubricPage', {'rubricUrl': rubric.url}))
    def service(self, request, response):
        entries = self.searchHistory.getEntries()

        for entry in entries:
            params = {'q': entry.query}
            if entry.contentTypes is not None:
                params['contentTypes'] = entry.contentTypes

            response.addFolder(self._(32029, entry.date, entry.query),
                               Action('SearchPage', params),
                               date=entry.date)
Exemple #7
0
 def service(self, request, response):
     rubricBaseUrl = Constants.showsAzUrl + '?group='
     groups = []
     for i in range (0, 26):
         group = chr(ord('a') + i)
         groups.append(group)
     groups.append('0 - 9')
     
     for group in groups:
         url = rubricBaseUrl + group.replace(' ', '+')
         response.addFolder(self._(32038, group.upper()), Action('RubricPage', {'rubricUrl': url}))
Exemple #8
0
 def _renderClusters(self, clusters, response, rubricUrl):
     for cluster in clusters:
         clusterTitle = cluster.title  #.encode('ascii', 'ignore')
         action = Action(pagelet='RubricPage',
                         params={
                             'rubricUrl': rubricUrl,
                             'listType': cluster.listType,
                             'listStart': str(cluster.listStart),
                             'listEnd': str(cluster.listEnd)
                         })
         item = Item(cluster.title, action, cluster.image, isFolder=True)
         response.addItem(item)
Exemple #9
0
 def _getMoreAction(self, moreUrl, pages, page):
     i = moreUrl.find('?')
     if i != -1:
         moreQuery = moreUrl[i + 1:]
         moreQuery = moreQuery.replace('=', '=')
         moreQuery = moreQuery.replace('&', '&')
         searchArgs = urlparse.parse_qs(moreQuery)
         for key, value in searchArgs.iteritems():
             searchArgs[key] = value[0]
         searchArgs['pages'] = pages
         searchArgs['page'] = page
         moreAction = Action('SearchPage', searchArgs)
         return moreAction
    def service(self, request, response):
        apiToken = request.getParam('apiToken')

        rubricBaseUrl = '/sendungen-a-z?group='
        groups = []
        for i in range(0, 26):
            group = chr(ord('a') + i)
            groups.append(group)
        groups.append('0 - 9')

        for group in groups:
            url = rubricBaseUrl + group.replace(' ', '+')
            response.addFolder(
                self._(32038, group.upper()),
                Action('RubricPage', {
                    'apiToken': apiToken,
                    'rubricUrl': url
                }))
Exemple #11
0
    def service(self, request, response):
        response.addFolder(self._(32005), Action('SearchMenuPage'))

        response.addFolder(self._(32003), Action('RubricsPage'))

        response.addFolder(self._(32043),
                           Action('RubricPage', {'rubricUrl': '/'}))
        response.addFolder(
            self._(32031), Action('RubricPage',
                                  {'rubricUrl': '/bestbewertet'}))
        response.addFolder(
            self._(32032), Action('RubricPage',
                                  {'rubricUrl': '/meist-gesehen'}))
        response.addFolder(self._(32037), Action('ShowsAzPage'))
        #response.addFolder(self._(32034), Action('RubricPage', {'rubricUrl': '/barrierefreiheit-im-zdf'}))
        response.addFolder(
            self._(32036),
            Action('RubricPage', {'rubricUrl': '/sendung-verpasst'}))

        response.addFolder(self._(32035), Action('LiveTvPage'))
    def service(self, request, response):
        contentName = request.getParam('contentName')
        title = request.getParam('title')
        videoUrl = request.getParam('videoUrl')
        date = request.getParam('date')
        genre = request.getParam('genre')

        # get api-token handling parameters
        self.videoUrl = request.getParam('videoUrl')
        self.apiToken = request.getParam('apiToken')
        if self.apiToken is None:
            self.apiToken = self.tokenCache.getApiToken()
            if self.apiToken is None:
                self._refreshApiToken()
            
        item = None
        if contentName is not None:
            try:
                dialog = xbmcgui.DialogProgressBG()
                dialog.create(self._(32007), self._(32008))
                videoContentUrl = Constants.apiContentUrl + contentName + '.json?profile=player2'
                self.debug("downloading video-content-url '{1}' ...", videoContentUrl)
                videoContent = self._getVideoContent(videoContentUrl)
                
                if videoContent.streamInfoUrl is None:
                    self.warn("can't find stream-info-url in video-content '{1}' in content '{2}'", contentName, videoContent.content)
                    response.sendError(self._(32011) + " '" + contentName +"'", Action('SearchPage'))
                    return
            
                dialog.update(percent=50, message=self._(32009))
                self.debug("downloading stream-info-url '{1}' ...", videoContent.streamInfoUrl)
                streamInfo = self._getStreamInfo(videoContent.streamInfoUrl)
                
                url = streamInfo.streamUrl
                if url is None:
                    self.warn("can't find stream-url in stream-info-url '{1}' in content '{2}'", videoContent.streamInfoUrl, streamInfo.content)
                    response.sendError(self._(32012) + " '" + contentName +"'", Action('SearchPage'))
                    return

                title = videoContent.title
                text = videoContent.text
                infoLabels = {}
                infoLabels['title'] = title
                infoLabels['sorttitle'] = title
                infoLabels['genre'] = genre
                #infoLabels['plot'] = text
                #infoLabels['plotoutline'] = text
                infoLabels['tvshowtitle'] = title
                infoLabels['tagline'] = text
                if videoContent.duration is not None:
                    infoLabels['duration'] = videoContent.duration
                infoLabels['mediatype'] = 'video'

                if date is not None and date != "":
                    infoLabels['date'] = date
        
                item = xbmcgui.ListItem(title, text)
                item.setPath(url)
                item.setInfo(type="Video", infoLabels=infoLabels)
                image = videoContent.image
                if image is not None:
                    item.setArt({'poster': image, 'banner': image, 'thumb': image, 'icon': image, 'fanart': image})

                # set subtitles
                self._setSubTitles(item, streamInfo.subTitlesUrl)
                
                dialog.update(percent=90, message=self._(32010))
                self.info("setting resolved url='{1}' ...", url)
                xbmcplugin.setResolvedUrl(response.handle, True, item)
            finally:
                dialog.close();
 def service(self, request, response):
     response.addFolder(self._(32030), Action('SearchHistoryPage'))
     response.addFolder(self._(32001), Action('SearchPage', {'contentTypes':'episode'}))
     response.addFolder(self._(32002), Action('SearchPage'))
Exemple #14
0
 def sendInfo(self, message, action=Action()):
     self._sendMessage(xbmcgui.NOTIFICATION_INFO, self.context._(32040), message, action)
Exemple #15
0
 def sendError(self, message, action=Action()):
     self._sendMessage(xbmcgui.NOTIFICATION_ERROR, self.context._(32039), message, action)