Beispiel #1
0
    def _reallyShowPhoto(self):
        self.setProperty('photo', 'script.plex/indicators/busy-photo.gif')
        photo = self.playQueue.current()
        photo.softReload()
        self.playerObject = plexplayer.PlexPhotoPlayer(photo)
        meta = self.playerObject.build()
        url = photo.server.getImageTranscodeURL(meta.get('url', ''),
                                                self.width, self.height)
        self.setRotation(0)
        self.setProperty('photo', url)
        self.setProperty(
            'background',
            photo.thumb.asTranscodedImageURL(
                self.width,
                self.height,
                blur=128,
                opacity=60,
                background=colors.noAlpha.Background))

        self.setProperty('photo.title', photo.title)
        self.setProperty(
            'photo.date',
            util.cleanLeadingZeros(
                photo.originallyAvailableAt.asDatetime('%d %B %Y')))
        self.setProperty('camera.model', photo.media[0].model)
        self.setProperty('camera.lens', photo.media[0].lens)

        if photo.media[0].height:
            dims = u'{0} x {1}{2}'.format(
                photo.media[0].width, photo.media[0].height,
                photo.media[0].parts[0].orientation and
                u' \u2022 {0} Mo'.format(photo.media[0].parts[0].orientation)
                or '')
            self.setProperty('photo.dims', dims)
        settings = []
        if photo.media[0].iso:
            settings.append('ISO {0}'.format(photo.media[0].iso))
        if photo.media[0].aperture:
            settings.append('{0}'.format(photo.media[0].aperture))
        if photo.media[0].exposure:
            settings.append('{0}'.format(photo.media[0].exposure))
        self.setProperty('camera.settings', u' \u2022 '.join(settings))
        self.setProperty('photo.summary', photo.summary)
        container = photo.media[0].container_ or os.path.splitext(
            photo.media[0].parts[0].file)[-1][1:].lower()
        if container == 'jpg':
            container = 'jpeg'
        self.setProperty('photo.container', container)
        self.updateNowPlaying(force=True, refreshQueue=True)
        self.resetSlideshowTimeout()
Beispiel #2
0
    def setItemInfo(self, video, mli):
        # video.reload(checkFiles=1)
        mli.setProperty('background', video.art.asTranscodedImageURL(self.width, self.height, blur=128, opacity=60, background=colors.noAlpha.Background))
        mli.setProperty('title', video.title)
        mli.setProperty('show.title', video.grandparentTitle or (self.show_.title if self.show_ else ''))
        mli.setProperty('duration', util.durationToText(video.duration.asInt()))
        mli.setProperty('summary', video.summary.strip().replace('\t', ' '))

        if video.index:
            mli.setProperty('season', u'{0} {1}'.format(T(32303, 'Season'), video.parentIndex))
            mli.setProperty('episode', u'{0} {1}'.format(T(32304, 'Episode'), video.index))
        else:
            mli.setProperty('season', '')
            mli.setProperty('episode', '')

        mli.setProperty('date', util.cleanLeadingZeros(video.originallyAvailableAt.asDatetime('%B %d, %Y')))

        # mli.setProperty('related.header', 'Related Shows')
        mli.setProperty('year', video.year)
        mli.setProperty('content.rating', video.contentRating.split('/', 1)[-1])
        mli.setProperty('genre', self.genre)

        if video.get('userRating'):
            stars = str(int(round((video.userRating.asFloat() / 10) * 5)))
            mli.setProperty('rating.stars', stars)
        # elif video.rating:
        #     stars = str(int(round((video.rating.asFloat() / 10) * 5)))
        #     mli.setProperty('rating.stars', stars)

        if video.get('ratingImage'):
            rating = video.rating
            audienceRating = video.audienceRating
            if video.ratingImage.startswith('rottentomatoes:'):
                rating = '{0}%'.format(int(rating.asFloat() * 10))
                if audienceRating:
                    audienceRating = '{0}%'.format(int(audienceRating.asFloat() * 10))

            mli.setProperty('rating', rating)
            mli.setProperty('rating.image', 'script.plex/ratings/{0}.png'.format(video.ratingImage.replace('://', '/')))
            if video.get('audienceRatingImage'):
                mli.setProperty('rating2', audienceRating)
                mli.setProperty('rating2.image', 'script.plex/ratings/{0}.png'.format(video.audienceRatingImage.replace('://', '/')))
        else:
            mli.setProperty('rating', video.rating)
Beispiel #3
0
    def setInfo(self):
        if self.next:
            self.setProperty(
                'post.play.background',
                self.next.art.asTranscodedImageURL(
                    self.width,
                    self.height,
                    blur=128,
                    opacity=60,
                    background=colors.noAlpha.Background))
            self.setProperty('info.title', self.next.title)
            self.setProperty('info.duration',
                             util.durationToText(self.next.duration.asInt()))
            self.setProperty('info.summary', self.next.summary)

        if self.prev:
            self.setProperty(
                'post.play.background',
                self.prev.art.asTranscodedImageURL(
                    self.width,
                    self.height,
                    blur=128,
                    opacity=60,
                    background=colors.noAlpha.Background))
            self.setProperty('prev.info.title', self.prev.title)
            self.setProperty('prev.info.duration',
                             util.durationToText(self.prev.duration.asInt()))
            self.setProperty('prev.info.summary', self.prev.summary)

        if self.prev.type == 'episode':
            if self.next:
                self.setProperty(
                    'next.thumb',
                    self.next.thumb.asTranscodedImageURL(*self.NEXT_DIM))
                self.setProperty('related.header', T(32306, 'Related Shows'))
                self.setProperty(
                    'info.date',
                    util.cleanLeadingZeros(
                        self.next.originallyAvailableAt.asDatetime(
                            '%B %d, %Y')))

                self.setProperty('next.title', self.next.grandparentTitle)
                self.setProperty(
                    'next.subtitle',
                    u'{0} {1} \u2022 {2} {3}'.format(T(32303, 'Season'),
                                                     self.next.parentIndex,
                                                     T(32304, 'Episode'),
                                                     self.next.index))
            if self.prev:
                self.setProperty(
                    'prev.thumb',
                    self.prev.thumb.asTranscodedImageURL(*self.PREV_DIM))
                self.setProperty('prev.title', self.prev.grandparentTitle)
                self.setProperty(
                    'prev.subtitle',
                    u'{0} {1} \u2022 {2} {3}'.format(T(32303, 'Season'),
                                                     self.prev.parentIndex,
                                                     T(32304, 'Episode'),
                                                     self.prev.index))
                self.setProperty(
                    'prev.info.date',
                    util.cleanLeadingZeros(
                        self.prev.originallyAvailableAt.asDatetime(
                            '%B %d, %Y')))
        elif self.prev.type == 'movie':
            if self.next:
                self.setProperty(
                    'next.thumb',
                    self.next.defaultArt.asTranscodedImageURL(*self.NEXT_DIM))
                self.setProperty('related.header', T(32404, 'Related Movies'))
                self.setProperty('info.date', self.next.year)

                self.setProperty('next.title', self.next.title)
                self.setProperty('next.subtitle', self.next.year)
            if self.prev:
                self.setProperty(
                    'prev.thumb',
                    self.prev.defaultArt.asTranscodedImageURL(*self.PREV_DIM))
                self.setProperty('prev.title', self.prev.title)
                self.setProperty('prev.subtitle', self.prev.year)
                self.setProperty('prev.info.date', self.prev.year)
Beispiel #4
0
    def setInfo(self):
        self.setProperty(
            'background',
            self.video.art.asTranscodedImageURL(
                self.width,
                self.height,
                blur=128,
                opacity=60,
                background=colors.noAlpha.Background))
        self.setProperty('title', self.video.title)
        self.setProperty('duration',
                         util.durationToText(self.video.duration.asInt()))
        self.setProperty('summary',
                         self.video.summary.strip().replace('\t', ' '))

        directors = u' / '.join([d.tag for d in self.video.directors()][:5])
        directorsLabel = len(self.video.directors) > 1 and T(
            32401, u'DIRECTORS').upper() or T(32383, u'DIRECTOR').upper()
        self.setProperty(
            'directors',
            directors and u'{0}    {1}'.format(directorsLabel, directors)
            or '')

        if self.video.type == 'episode':
            self.setProperty('content.rating', '')
            self.setProperty(
                'thumb',
                self.video.defaultThumb.asTranscodedImageURL(
                    *self.THUMB_POSTER_DIM))
            self.setProperty(
                'preview',
                self.video.thumb.asTranscodedImageURL(*self.PREVIEW_DIM))
            self.setProperty(
                'info', u'{0} {1} {2} {3}'.format(T(32303, 'Season'),
                                                  self.video.parentIndex,
                                                  T(32304, 'Episode'),
                                                  self.video.index))
            self.setProperty(
                'date',
                util.cleanLeadingZeros(
                    self.video.originallyAvailableAt.asDatetime('%B %d, %Y')))

            writers = u' / '.join([w.tag for w in self.video.writers()][:5])
            writersLabel = len(self.video.writers) > 1 and T(
                32403, u'WRITERS').upper() or T(32402, u'WRITER').upper()
            self.setProperty(
                'writers',
                writers and u'{0}    {1}'.format(writersLabel, writers) or '')
            self.setProperty('related.header', T(32306, 'Related Shows'))
        elif self.video.type == 'movie':
            self.setProperty('preview', '')
            self.setProperty(
                'thumb',
                self.video.thumb.asTranscodedImageURL(*self.THUMB_POSTER_DIM))
            genres = u' / '.join([g.tag for g in self.video.genres()][:3])
            self.setProperty('info', genres)
            self.setProperty('date', self.video.year)
            self.setProperty('content.rating',
                             self.video.contentRating.split('/', 1)[-1])

            cast = u' / '.join([r.tag for r in self.video.roles()][:5])
            castLabel = 'CAST'
            self.setProperty(
                'writers', cast and u'{0}    {1}'.format(castLabel, cast)
                or '')
            self.setProperty('related.header', T(32404, 'Related Movies'))

        self.setProperty('video.res', self.video.resolutionString())
        self.setProperty('audio.codec', self.video.audioCodecString())
        self.setProperty('audio.channels',
                         self.video.audioChannelsString(metadata.apiTranslate))

        self.setProperties(('rating.stars', 'rating', 'rating.image',
                            'rating2', 'rating2.image'), '')
        if self.video.userRating:
            stars = str(int(round((self.video.userRating.asFloat() / 10) * 5)))
            self.setProperty('rating.stars', stars)
        # elif self.video.rating:
        #     stars = str(int(round((self.video.rating.asFloat() / 10) * 5)))
        #     self.setProperty('rating.stars', stars)

        if self.video.ratingImage:
            rating = self.video.rating
            audienceRating = self.video.audienceRating
            if self.video.ratingImage.startswith('rottentomatoes:'):
                rating = '{0}%'.format(int(rating.asFloat() * 10))
                if audienceRating:
                    audienceRating = '{0}%'.format(
                        int(audienceRating.asFloat() * 10))

            self.setProperty('rating', rating)
            self.setProperty(
                'rating.image', 'script.plex/ratings/{0}.png'.format(
                    self.video.ratingImage.replace('://', '/')))
            if self.video.audienceRatingImage:
                self.setProperty('rating2', audienceRating)
                self.setProperty(
                    'rating2.image', 'script.plex/ratings/{0}.png'.format(
                        self.video.audienceRatingImage.replace('://', '/')))
        else:
            self.setProperty('rating', self.video.rating)

        self.setAudioAndSubtitleInfo()

        self.setProperty(
            'unavailable', not self.video.media()[0].isAccessible() and '1'
            or '')

        if self.video.viewOffset.asInt():
            width = self.video.viewOffset.asInt() and (1 + int(
                (self.video.viewOffset.asInt() / self.video.duration.asFloat())
                * self.width)) or 1
            self.progressImageControl.setWidth(width)
        else:
            self.progressImageControl.setWidth(1)
Beispiel #5
0
    def fillPhotos(self):
        self.setBoolProperty('no.content', False)
        self.setBoolProperty('no.content.filtered', False)
        items = []
        keys = []
        self.firstOfKeyItems = {}
        idx = 0

        if self.section.TYPE == 'photodirectory':
            photos = self.section.all()
        else:
            photos = self.section.all(filter_=self.getFilterOpts(),
                                      sort=self.getSortOpts(),
                                      unwatched=self.filterUnwatched)

        if not photos:
            return

        photo = random.choice(photos)
        self.setProperty(
            'background',
            photo.art.asTranscodedImageURL(
                self.width,
                self.height,
                blur=128,
                opacity=60,
                background=colors.noAlpha.Background))
        thumbDim = TYPE_KEYS.get(self.section.type,
                                 TYPE_KEYS['movie'])['thumb_dim']
        fallback = 'script.plex/thumb_fallbacks/{0}.png'.format(
            TYPE_KEYS.get(self.section.type, TYPE_KEYS['movie'])['fallback'])

        if not photos:
            if self.filter or self.filterUnwatched:
                self.setBoolProperty('no.content.filtered', True)
            else:
                self.setBoolProperty('no.content', True)
            return

        for photo in photos:
            title = photo.title
            if photo.TYPE == 'photodirectory':
                thumb = photo.composite.asTranscodedImageURL(*thumbDim)
                mli = kodigui.ManagedListItem(title,
                                              thumbnailImage=thumb,
                                              data_source=photo)
                mli.setProperty('is.folder', '1')
            else:
                thumb = photo.defaultThumb.asTranscodedImageURL(*thumbDim)
                label2 = util.cleanLeadingZeros(
                    photo.originallyAvailableAt.asDatetime('%d %B %Y'))
                mli = kodigui.ManagedListItem(title,
                                              label2,
                                              thumbnailImage=thumb,
                                              data_source=photo)

            mli.setProperty('thumb.fallback', fallback)
            mli.setProperty('index', str(idx))

            key = title[0].upper()
            if key not in KEYS:
                key = '#'
            if key not in keys:
                self.firstOfKeyItems[key] = mli
                keys.append(key)
            mli.setProperty('key', str(key))
            items.append(mli)
            idx += 1

        litems = []
        self.keyItems = {}
        for i, key in enumerate(keys):
            mli = kodigui.ManagedListItem(key, data_source=key)
            mli.setProperty('key', key)
            mli.setProperty('original', '{0:02d}'.format(i))
            self.keyItems[key] = mli
            litems.append(mli)

        self.showPanelControl.reset()
        self.keyListControl.reset()

        self.showPanelControl.addItems(items)
        self.keyListControl.addItems(litems)

        if keys:
            self.setProperty('key', keys[0])