Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #4
0
    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
Beispiel #5
0
 def _filter_non_playable_files(folder_details):
     return [i for i in folder_details if source_utils.is_file_ext_valid(i["path"])]