def test_resolve(event_loop, library): Resolver.loop = event_loop Resolver.library = library album = XAlbumModel() result = resolve('/img/data', model=album) assert result == IMG_DATA
def load_state(self): playlist = self.playlist player = self.player try: with open(STATE_FILE, 'r', encoding='utf-8') as f: state = json.load(f) except FileNotFoundError: pass except json.decoder.JSONDecodeError: logger.exception('invalid state file') else: player.volume = state['volume'] playlist.playback_mode = PlaybackMode(state['playback_mode']) songs = [] for song in state['playlist']: try: song = resolve(song) except ResolverNotFound: pass else: songs.append(song) playlist.set_models(songs) song = state['song'] def before_media_change(old_media, media): # When the song has no media or preparing media is failed, # the current_song is not the song we set. # # When user play a new media directly through player.play interface, # the old media is not None. if old_media is not None or playlist.current_song != song: player.media_about_to_changed.disconnect( before_media_change) player.set_play_range() if song is not None: try: song = resolve(state['song']) except ResolverNotFound: pass else: player.media_about_to_changed.connect(before_media_change, weak=False) player.pause() player.set_play_range(start=state['position']) playlist.set_current_song(song)
def load_state(self): playlist = self.playlist player = self.player try: with open(STATE_FILE, 'r') as f: state = json.load(f) except FileNotFoundError: pass except json.decoder.JSONDecodeError: logger.exception('invalid state file') else: player.volume = state['volume'] playlist.playback_mode = PlaybackMode(state['playback_mode']) songs = [] for song in state['playlist']: try: song = resolve(song) except ResolverNotFound: pass else: songs.append(song) playlist.init_from(songs) if songs and self.mode & App.GuiMode: self.browser.goto(page='/player_playlist') song = state['song'] def before_media_change(old_media, media): if old_media is not None or playlist.current_song != song: player.media_about_to_changed.disconnect( before_media_change) player.set_play_range() player.resume() if song is not None: try: song = resolve(state['song']) except ResolverNotFound: pass else: player.media_about_to_changed.connect(before_media_change, weak=False) player.pause() player.set_play_range(start=state['position']) player.load_song(song)
async def get(self, img_url, img_name): if img_url.startswith('fuo://'): return resolve(img_url) fpath = self.cache.get(img_name) if fpath is not None: logger.info('read image:%s from cache', img_name) with open(fpath, 'rb') as f: content = f.read() self.cache.update(img_name) return content event_loop = asyncio.get_event_loop() action_msg = 'Downloading image from {}'.format(img_url) with self._app.create_action(action_msg) as action: res = await event_loop.run_in_executor( None, partial(self._app.request.get, img_url)) if res is None: action.failed() return None fpath = self.cache.create(img_name) self.save(fpath, res.content) return res.content