def playVideo(self, play_version=False): if not self.video.available(): util.messageDialog(T(32312, 'Unavailable'), T(32313, 'This item is currently unavailable.')) return if play_version: if not preplayutils.chooseVersion(self.video): return else: preplayutils.resetVersion(self.video) resume = False if self.video.viewOffset.asInt(): button = optionsdialog.show(T(32314, 'In Progress'), T(32315, 'Resume playback?'), T(32316, 'Resume'), T(32317, 'Play From Beginning')) if button is None: return resume = (button == 0) self.processCommand(videoplayer.play(video=self.video, resume=resume))
def showSections(self): self.sectionHubs = {} items = [] homemli = kodigui.ManagedListItem(T(32332, 'Home'), data_source=HomeSection) homemli.setProperty('is.home', '1') homemli.setProperty('item', '1') items.append(homemli) pl = plexapp.SERVERMANAGER.selectedServer.playlists() if pl: plli = kodigui.ManagedListItem( 'Playlists', thumbnailImage='script.plex/home/type/playlists.png', data_source=PlaylistsSection) plli.setProperty('is.playlists', '1') plli.setProperty('item', '1') items.append(plli) try: sections = plexapp.SERVERMANAGER.selectedServer.library.sections() except plexnet.exceptions.BadRequest: self.setFocusId(self.SERVER_BUTTON_ID) util.messageDialog("Error", "Bad request") return if plexapp.SERVERMANAGER.selectedServer.hasHubs(): self.tasks = [ SectionHubsTask().setup(s, self.sectionHubsCallback) for s in [HomeSection, PlaylistsSection] + sections ] backgroundthread.BGThreader.addTasks(self.tasks) for section in sections: mli = kodigui.ManagedListItem( section.title, thumbnailImage='script.plex/home/type/{0}.png'.format( section.type), data_source=section) mli.setProperty('item', '1') items.append(mli) self.bottomItem = len(items) - 1 for x in range(len(items), 8): mli = kodigui.ManagedListItem() items.append(mli) self.lastSection = HomeSection self.sectionList.reset() self.sectionList.addItems(items) if items: self.setFocusId(self.SECTION_LIST_ID) else: self.setFocusId(self.SERVER_BUTTON_ID)
def delete(self): button = optionsdialog.show( T(32326, 'Really delete?'), T(32327, 'Are you sure you really want to delete this media?'), T(32328, 'Yes'), T(32329, 'No') ) if button != 0: return if not self._delete(): util.messageDialog(T(32330, 'Message'), T(32331, 'There was a problem while attempting to delete the media.'))
def userSelected(self, item, pin=None): user = item.dataSource # xbmc.sleep(500) util.DEBUG_LOG('Home user selected: {0}'.format(user)) from lib import plex with plex.CallbackEvent(plexapp.util.APP, 'account:response') as e: if plexapp.ACCOUNT.switchHomeUser(user.id, pin) and plexapp.ACCOUNT.switchUser: util.DEBUG_LOG('Waiting for user change...') else: e.close() item.setProperty('pin', item.dataSource.title) item.setProperty('editing.pin', '') util.messageDialog(T(32427, 'Failed'), T(32428, 'Login failed!')) return self.selected = True self.doClose()
def selectServer(self): mli = self.serverList.getSelectedItem() if not mli: return server = mli.dataSource self.setFocusId(self.SERVER_BUTTON_ID) if not server.isReachable(): if server.pendingReachabilityRequests > 0: util.messageDialog(T(32339, 'Server is not accessible'), T(32340, 'Connection tests are in progress. Please wait.')) else: util.messageDialog( T(32339, 'Server is not accessible'), T(32341, 'Server is not accessible. Please sign into your server and check your connection.') ) return plexapp.SERVERMANAGER.setSelectedServer(server, force=True)
def episodeListClicked(self, play_version=False, force_episode=None): if not force_episode: mli = self.episodeListControl.getSelectedItem() if not mli: return episode = mli.dataSource else: episode = force_episode if not episode.available(): util.messageDialog(T(32312, 'unavailable'), T(32332, 'This item is currently unavailable.')) return if play_version: if not preplayutils.chooseVersion(episode): return else: preplayutils.resetVersion(episode) resume = False if episode.viewOffset.asInt(): button = optionsdialog.show( T(32314, 'In Progress'), T(32315, 'Resume playback?'), T(32316, 'Resume'), T(32317, 'Play From Beginning') ) if button is None: return resume = (button == 0) pl = playlist.LocalPlaylist(self.show_.all(), self.show_.getServer()) if len(pl): # Don't use playlist if it's only this video pl.setCurrent(episode) self.processCommand(videoplayer.play(play_queue=pl, resume=resume)) return True self.processCommand(videoplayer.play(video=episode, resume=resume)) return True
def hubItemClicked(self, hubControlID): for controls in self.hubControls: for control in controls.values(): if control.controlID == hubControlID: break else: continue break else: return mli = control.getSelectedItem() if not mli: return hubItem = mli.dataSource if hubItem.TYPE == 'playlist' and not hubItem.exists( ): # Workaround for server bug util.messageDialog('No Access', 'Playlist not accessible by this user.') util.DEBUG_LOG( 'Search: Playlist does not exist - probably wrong user') return self.doClose() try: command = opener.open(hubItem) if not hubItem.exists(): control.removeManagedItem(mli) self.processCommand(command) finally: if not self.exitCommand: self.show() else: self.isActive = False