def set_next_available_subitem(self): """ select the next available subitem. Loops on each subitem and checks if the needed media is really there. If the media is there, sets self.current_subitem to the given subitem and returns 1. If no media has been found, we set self.current_subitem to None. If the search for the next available subitem did start from the beginning of the list, then we consider that no media at all was available for any subitem: we return 0. If the search for the next available subitem did not start from the beginning of the list, then we consider that at least one media had been found in the past: we return 1. """ if hasattr(self, 'conf_select_this_item'): # XXX bad hack, clean me up self.current_subitem = self.conf_select_this_item del self.conf_select_this_item return True cont = 1 from_start = 0 si = self.current_subitem while cont: if not si: # No subitem selected yet: take the first one si = self.subitems[0] from_start = 1 else: pos = self.subitems.index(si) # Else take the next one if pos < len(self.subitems) - 1: # Let's get the next subitem si = self.subitems[pos + 1] else: # No next subitem si = None cont = 0 if si: if (si.media_id or si.media): # If the file is on a removeable media if util.check_media(si.media_id): self.current_subitem = si return 1 elif si.media and util.check_media(si.media.id): self.current_subitem = si return 1 else: # if not, it is always available self.current_subitem = si return 1 self.current_subitem = None return not from_start
def set_next_available_subitem(self): """ Select the next available subitem. Loops on each subitem and checks if the needed media is really there. If the media is there, sets self.current_subitem to the given subitem and returns True. If no media has been found, we set self.current_subitem to None. If the search for the next available subitem did start from the beginning of the list, then we consider that no media at all was available for any subitem: we return False. If the search for the next available subitem did not start from the beginning of the list, then we consider that at least one media had been found in the past: we return True. """ if hasattr(self, 'conf_select_this_item'): # XXX bad hack, clean me up self.current_subitem = self.conf_select_this_item del self.conf_select_this_item return True si = self.current_subitem from_start = False cont = True while cont: if not si: # No subitem selected yet: take the first one si = self.subitems[0] from_start = True else: pos = self.subitems.index(si) # Else take the next one if pos < len(self.subitems)-1: # Let's get the next subitem si = self.subitems[pos+1] else: # No next subitem si = None cont = False if si: if (si.media_id or si.media): # If the file is on a removeable media if util.check_media(si.media_id): self.current_subitem = si return True elif si.media and util.check_media(si.media.id): self.current_subitem = si return True else: # if not, it is always available self.current_subitem = si return True self.current_subitem = None return not from_start
async def album_process(event): msg_caption = None for message in event.messages: if not util.check_tags(message): continue else: msg_caption = message break if not msg_caption: return response = await boards.new_card(**util.extract_card_info(msg_caption)) Tags.create(chat_id=event.chat_id, message_id=msg_caption.id, user_id=event.from_id, card_id=response['id'], short_url=response['shortUrl']) logging.info( f"{event.from_id} uploaded a new issue {response['shortUrl']} " + "with Photo Album") for message in event.messages: if not util.check_media(message): return stream = await message.download_media(file=bytes) await boards.attach_card(response['id'], stream, str(message.id) + message.file.ext, message.file.mime_type)
async def process(event): response = await boards.new_card(**util.extract_card_info(event)) Tags.create(chat_id=event.chat_id, message_id=event.id, user_id=event.from_id, card_id=response['id'], short_url=response['shortUrl']) logging.info( f"{event.from_id} uploaded a new issue {response['shortUrl']}") if not util.check_media(event): return stream = await event.download_media(file=bytes) await boards.attach_card(response['id'], stream, str(event.id) + event.file.ext, event.file.mime_type)
def play(self, arg=None, menuw=None, alternateplayer=False): """ execute commands if defined """ if config.VIDEO_PRE_PLAY: os.system(config.VIDEO_PRE_PLAY) """ play the item. """ if not self.possible_player: for p in plugin.getbyname(plugin.VIDEO_PLAYER, True): rating = p.rate(self) * 10 if config.VIDEO_PREFERED_PLAYER == p.name: rating += 1 if hasattr(self, 'force_player') and p.name == self.force_player: rating += 100 self.possible_player.append((rating, p)) self.possible_player.sort(lambda l, o: -cmp(l[0], o[0])) if alternateplayer: self.possible_player.reverse() if not self.possible_player: return self.player_rating, self.player = self.possible_player[0] if self.parent: self.parent.current_item = self if not self.menuw: self.menuw = menuw # if we have variants, play the first one as default if self.variants: self.variants[0].play(arg, menuw) return # if we have subitems (a movie with more than one file), # we start playing the first that is physically available if self.subitems: self.error_in_subitem = 0 self.last_error_msg = '' self.current_subitem = None result = self.set_next_available_subitem() if self.current_subitem: # 'result' is always 1 in this case # The media is available now for playing # Pass along the options, without loosing the subitem's own # options if self.current_subitem.mplayer_options: if self.mplayer_options: self.current_subitem.mplayer_options += ' ' + self.mplayer_options else: self.current_subitem.mplayer_options = self.mplayer_options # When playing a subitem, the menu must be hidden. If it is not, # the playing will stop after the first subitem, since the # PLAY_END/USER_END event is not forwarded to the parent # videoitem. # And besides, we don't need the menu between two subitems. self.menuw.hide() self.last_error_msg = self.current_subitem.play( arg, self.menuw) if self.last_error_msg: self.error_in_subitem = 1 # Go to the next playable subitem, using the loop in # eventhandler() self.eventhandler(PLAY_END) elif not result: # No media at all was found: error ConfirmBox(text=(_('No media found for "%s".\n') + _('Please insert the media.')) % self.name, handler=self.play).show() return # normal plackback of one file if self.url.startswith('file://'): file = self.filename if self.media_id: mountdir, file = util.resolve_media_mountdir( self.media_id, file) if mountdir: util.mount(mountdir) else: self.menuw.show() ConfirmBox(text=(_('No media found for "%s".\n') + _('Please insert the media.')) % file, handler=self.play).show() return elif self.media: util.mount(os.path.dirname(self.filename)) elif self.mode in ('dvd', 'vcd') and not self.filename and not self.media: media = util.check_media(self.media_id) if media: self.media = media else: self.menuw.show() ConfirmBox(text=(_('No media found for "%s".\n') + _('Please insert the media.')) % self.url, handler=self.play).show() return if self.player_rating < 10: AlertBox(text=_('No player for this item found')).show() return mplayer_options = self.mplayer_options.split(' ') if not mplayer_options: mplayer_options = [] if arg: mplayer_options += arg.split(' ') if self.menuw.visible: self.menuw.hide() self.plugin_eventhandler(PLAY, menuw) error = self.player.play(mplayer_options, self) if error: # If we are a subitem we don't show any error message before # having tried all the subitems if hasattr(self.parent, 'subitems') and self.parent.subitems: return error else: AlertBox(text=error, handler=self.error_handler).show()
def __play(self, arg=None, menuw=None): # execute commands if defined if config.VIDEO_PRE_PLAY: os.system(config.VIDEO_PRE_PLAY) if self.parent: self.parent.current_item = self if not self.menuw: self.menuw = menuw # if we have variants, play the first one as default if self.variants: self.variants[0].play(arg, menuw) return # if we have subitems (a movie with more than one file), # we start playing the first that is physically available if self.subitems: self.error_in_subitem = 0 self.last_error_msg = '' self.current_subitem = None result = self.set_next_available_subitem() if self.current_subitem: # 'result' is always 1 in this case # The media is available now for playing # Pass along the options, without loosing the subitem's own # options if self.current_subitem.mplayer_options: if self.mplayer_options: # With this set the player options are incorrect when there is more than 1 item #self.current_subitem.mplayer_options += ' ' + self.mplayer_options pass else: self.current_subitem.mplayer_options = self.mplayer_options # When playing a subitem, the menu must be hidden. If it is not, # the playing will stop after the first subitem, since the # PLAY_END/USER_END event is not forwarded to the parent # videoitem. # And besides, we don't need the menu between two subitems. self.menuw.hide() self.last_error_msg = self.current_subitem.play( arg, self.menuw) if self.last_error_msg: self.error_in_subitem = 1 # Go to the next playable subitem, using the loop in # eventhandler() self.eventhandler(PLAY_END) elif not result: # No media at all was found: error ConfirmBox(text=(_( 'No media found for "%(name)s".\nPlease insert the media "%(media_id)s".' )) % ({ 'name': self.name, 'media_id': self.media_id }), handler=self.play).show() return # normal plackback of one file if self.url.startswith('file://'): file = self.filename if self.media_id: mountdir, file = util.resolve_media_mountdir( self.media_id, file) if mountdir: util.mount(mountdir) else: self.menuw.show() ConfirmBox(text=(_('No media found for "%(file)s".\nPlease insert the media "%(media_id)s".')) % \ ({'file': file, 'media_id': self.media_id}), handler=self.play).show() return elif self.media: util.mount(os.path.dirname(self.filename)) # dvd and vcd elif self.mode in ('dvd', 'vcd') and not self.filename and not self.media: media = util.check_media(self.media_id) if media: self.media = media else: self.menuw.show() ConfirmBox(text=(_( 'No media found for "%(media_id)s".\nPlease insert the media "%(url)s".' )) % ({ 'media_id': self.media_id, 'url': self.url }), handler=self.play).show() return mplayer_options = self.mplayer_options.split(' ') if not mplayer_options: mplayer_options = [] if arg: mplayer_options += arg.split(' ') if self.menuw.visible: self.menuw.hide() self.plugin_eventhandler(PLAY, menuw) self.menuw.delete_submenu() error = self.player.play(mplayer_options, self) # Clear any resume settings self['resume'] = '' if error: # If we are a subitem we don't show any error message before # having tried all the subitems if hasattr(self.parent, 'subitems') and self.parent.subitems: return error else: AlertBox(text=error, handler=self.error_handler).show()
def __play(self, arg=None, menuw=None): # execute commands if defined if config.VIDEO_PRE_PLAY: os.system(config.VIDEO_PRE_PLAY) if self.parent: self.parent.current_item = self if not self.menuw: self.menuw = menuw # if we have variants, play the first one as default if self.variants: self.variants[0].play(arg, menuw) return # if we have subitems (a movie with more than one file), # we start playing the first that is physically available if self.subitems: self.error_in_subitem = 0 self.last_error_msg = '' self.current_subitem = None result = self.set_next_available_subitem() if self.current_subitem: # 'result' is always 1 in this case # The media is available now for playing # Pass along the options, without loosing the subitem's own # options if self.current_subitem.mplayer_options: if self.mplayer_options: # With this set the player options are incorrect when there is more than 1 item #self.current_subitem.mplayer_options += ' ' + self.mplayer_options pass else: self.current_subitem.mplayer_options = self.mplayer_options # When playing a subitem, the menu must be hidden. If it is not, # the playing will stop after the first subitem, since the # PLAY_END/USER_END event is not forwarded to the parent # videoitem. # And besides, we don't need the menu between two subitems. self.menuw.hide() self.last_error_msg = self.current_subitem.play(arg, self.menuw) if self.last_error_msg: self.error_in_subitem = 1 # Go to the next playable subitem, using the loop in # eventhandler() self.eventhandler(PLAY_END) elif not result: # No media at all was found: error ConfirmBox(text=(_('No media found for "%(name)s".\nPlease insert the media "%(media_id)s".')) % ({'name': self.name, 'media_id': self.media_id}), handler=self.play).show() return # normal plackback of one file if self.url.startswith('file://'): file = self.filename if self.media_id: mountdir, file = util.resolve_media_mountdir(self.media_id,file) if mountdir: util.mount(mountdir) else: self.menuw.show() ConfirmBox(text=(_('No media found for "%(file)s".\nPlease insert the media "%(media_id)s".')) % \ ({'file': file, 'media_id': self.media_id}), handler=self.play).show() return elif self.media: util.mount(os.path.dirname(self.filename)) # dvd and vcd elif self.mode in ('dvd', 'vcd') and not self.filename and not self.media: media = util.check_media(self.media_id) if media: self.media = media else: self.menuw.show() ConfirmBox(text=(_('No media found for "%(media_id)s".\nPlease insert the media "%(url)s".')) % ({ 'media_id': self.media_id, 'url': self.url}), handler=self.play).show() return mplayer_options = self.mplayer_options.split(' ') if not mplayer_options: mplayer_options = [] if arg: mplayer_options += arg.split(' ') if self.menuw.visible: self.menuw.hide() self.plugin_eventhandler(PLAY, menuw) self.menuw.delete_submenu() error = self.player.play(mplayer_options, self) # Clear any resume settings self['resume'] = '' if error: # If we are a subitem we don't show any error message before # having tried all the subitems if hasattr(self.parent, 'subitems') and self.parent.subitems: return error else: AlertBox(text=error, handler=self.error_handler).show()