def __init__(self): Player.__init__(self, 'audioplayer') WPlayer.__init__(self) self._getitems_keywords['edit_list'] = self._get_edit_list self._getitems_keywords['title'] = self._get_title self._getitems_keywords['artist'] = self._get_artist self._getitems_keywords['album'] = self._get_album self._getitems_keywords['track'] = self._get_track self.tasks.update({ 'show_help_playlist': Task(self._show_help_playlist), 'hide_help_playlist': Task(self._hide_help_playlist) }) self.set_items([], 'edit_list') self.eventhandler = AudioEventHandler(self) self.available_choices.append('edit_list') self._old_played_dt = None self._old_played = None self._current_played = None for sig in AudioPlayer.caching_sig: louie_connect(receiver=self._callback_fill_list, sender='audio', signal=sig) self._status_change_callback.task._considered_idle = True self._start_playing.task._considered_idle = True self.update_media_info.task._considered_idle = True return None
def _status_change_callback(self, status): log.info('status changed: %s', status) WPlayer._status_change_callback(self, status) if not self._start_playing.task.running and self.old_status == 'playing' and self.stopped: if self.repeat_mode: if self.repeat_mode == 'track': try: WPlayer.play(self, self.get_item_list('main_list').selected) except OverflowError: PRINT_EXCEPTION(stop=True) else: if self._check_exception(): self.stack.close_player() if not self.select(1, end_reached=True): if self.repeat_mode == 'all': old_pos = self.selected_pos self.select(0, force_pos=True, end_reached=True) if self.selected_pos == old_pos: self._start_playing() else: self.stack.close_player() else: if self._check_exception(): self.stack.close_player() elif self.playmode == 'track': self.stack.close_player() elif self.playmode == 'all': if not self.select(1, end_reached=True): self.stack.close_player() log.debug('end status changed') return None
def __init__(self, type_='videoplayer'): Player.__init__(self, type_=type_) WPlayer.__init__(self) self.eventhandler = VideoEventHandler(self) self._getitems_keywords['hd_info_icon'] = self._get_hd_info_icon self._getitems_keywords['snd_info_icon'] = self._get_snd_info_icon self.subserver = pygui_globs['subserver'] self.subtitles_textblock = None self.cur_subs_size = config.user_config['video']['subtitles_size'] self.playmode = 'all' return None
def _start_playing(self): log.debug('start playing...') try: sel = self.get_item_list('main_list').selected log.info('Start playing %s', sel) WPlayer.play(self, sel, show_loading=True) except Exception, e: PRINT_EXCEPTION(e) log.debug('Player unable to load/read selected item') if not self.select(1): pygui_globs['menustack'].close_player()
def _start_playing(self): log.debug('start playing...') sel = self.get_item_list('main_list').selected if sel.player != self: log.debug('Switching players %s <> %s', sel.player, self) self.stop() sel.player.play(sel, self.choices) else: try: WPlayer.play(self, sel, show_loading=False) except: PRINT_EXCEPTION() log.debug("Can't play selected, play next...") if not self.select(1): pygui_globs['menustack'].close_player() return None
def play(self, item=None, playlist=None, delay=0): try: Player.play(self, item, playlist) except: PRINT_EXCEPTION() if self._check_exception(_("Can't find media")): pygui_globs['menustack'].close_player() return None if self.subserver: self.subserver.register_txt_render(self._render_subtitle) self.set_subs_size(config.user_config['video']['subtitles_size']) try: WPlayer.play(self, self.selected, show_loading=False, offset=delay) except OverflowError: log.debug('Player unable to load/read selected item') if not self.select(1): pygui_globs['menustack'].close_player() return None
def stop(self): log.debug('stop() on MMI PLAYER') if self.active_list == 'edit_list': self.get_item_list('edit_list').edited = False self.focus_previous() try: self.get_item_list('main_list').selected.unwatch( self._selection_changed) except AttributeError: log.info('Item %s is not unwatchable', self.get_item_list('main_list').selected) self._start_playing.task.stop() WPlayer.stop(self) Player.stop(self) for sig in AudioPlayer.caching_sig: louie_disconnect(receiver=self._callback_fill_list, signal=sig, sender='audio') return None
def _get_status(self): ret = WPlayer._get_status(self) if ret == 'fast_forward': return forward_tricks_icons[self.eventhandler.forward_steps.index( self.speed)] elif ret == 'fast_rewind': return backward_tricks_icons[ self.eventhandler.backward_steps.index(self.speed)] elif ret == 'play' and self.playmode == 'all': return 'play_list' return ret
def stop(self): try: if 'transcode' in config.plugins: if hasattr(self, 'stop_transcode'): self.stop_transcode(0) del self.stop_transcode if config.resume_video: if self.selected['class'].endswith('tvRecord'): resume_pos = self.wpl.byte_pos['data'] else: resume_pos = self.time_elapsed unref_link = 'refid' in self.selected.wymedia_resource self.selected.vfs_set_metas(_unref_link=unref_link, playbackStatus=repr(resume_pos)) log.debug('%s save resume position at %s', self.selected, resume_pos) finally: WPlayer.stop(self) Player.stop(self) self._start_playing.task.stop() self.subserver.unregister_txt_render() self._render_subtitle(u'') return None
def tick_callback(self): log.debug('tick') if not self._start_playing.task.running and self.status == 'playing': WPlayer.tick_callback(self) log.debug('end tick') return None
def update_media_info(self): WPlayer.update_media_info(self) return None