def _single_magnet_resolve(self, magnet, args, pack_select=False): folder_details = self.direct_download(magnet)['content'] folder_details = sorted(folder_details, key=lambda i: int(i['size']), reverse=True) folder_details = [ i for i in folder_details if source_utils.is_file_ext_valid(i['link']) ] filter_list = [ i for i in folder_details if source_utils.filter_movie_title(i['path'].split( '/')[-1], args['info']['title'], args['info']['year']) ] if len(filter_list) == 1: stream_link = self._fetch_transcode_or_standard(filter_list[0]) self._handle_add_to_cloud(magnet) return stream_link filter_list = [ tfile for tfile in folder_details if 'sample' not in tfile['path'].lower() ] filter_list = [ tfile for tfile in filter_list if source_utils.cleanTitle(args['info']['title']) in source_utils.cleanTitle(tfile['path'].lower()) ] if len(filter_list) == 1: stream_link = self._fetch_transcode_or_standard(filter_list[0]) self._handle_add_to_cloud(magnet) return stream_link
def is_streamable_storage_type(self, storage_variant): """ Confirms that all files within the storage variant are video files This ensure the pack from RD is instantly streamable and does not require a download :param storage_variant: :return: BOOL """ return False if len([i for i in storage_variant.values() if not source_utils.is_file_ext_valid(i['filename'])]) > 0 else True
def _get_selected_files(self): """ :return: """ if self.source.get("type") in ["hoster", "cloud"]: return self.source available_files = self._fetch_available_files() available_files = [(i, i["path"].split("/")[-1]) for i in available_files if source_utils.is_file_ext_valid(i["path"])] available_files = sorted(available_files, key=lambda k: k[1]) file_titles = [i[1] for i in available_files] selection = xbmcgui.Dialog().multiselect(g.get_language_string(30509), file_titles) selection = [available_files[i] for i in selection] return selection
def resolve_magnet(self, magnet, args, torrent, pack_select): if 'showInfo' not in args: return self._single_magnet_resolve(magnet, args) try: folder_details = self.direct_download(magnet)['content'] if pack_select is not False and pack_select is not None: return self.user_select(folder_details) folder_details = source_utils.clear_extras_by_string( args, 'extras', folder_details) folder_details = source_utils.clear_extras_by_string( args, 'specials', folder_details) folder_details = source_utils.clear_extras_by_string( args, 'featurettes', folder_details) folder_details = source_utils.clear_extras_by_string( args, 'deleted scenes', folder_details) folder_details = source_utils.clear_extras_by_string( args, 'sample', folder_details) folder_details = [ i for i in folder_details if source_utils.is_file_ext_valid(i['link']) ] identified_file = source_utils.get_best_match( 'path', folder_details, args) stream_link = self._fetch_transcode_or_standard(identified_file) except: import traceback traceback.print_exc() return if stream_link is not None: self._handle_add_to_cloud(magnet) return stream_link
def _filter_non_playable_files(folder_details): return [i for i in folder_details if source_utils.is_file_ext_valid(i["path"])]