添加本地BT任务

        :param torrent_path: 本地种子的路径

        :param save_path: 远程保存路径

        :param selected_idx: 要下载的文件序号 —— 集合为空下载所有，非空集合指定序号集合，空串下载默认

        :return: requests.Response

            .. note::
                返回正确时返回的 Reponse 对象 content 中的数据结构

                {"task_id":任务编号,"rapid_download":是否已经完成（急速下载）,"request_id":请求识别号}

def add_torrent_task(self, torrent_path, save_path='/', selected_idx=(), **kwargs):
        """
        添加本地BT任务

        :param torrent_path: 本地种子的路径

        :param save_path: 远程保存路径

        :param selected_idx: 要下载的文件序号 —— 集合为空下载所有，非空集合指定序号集合，空串下载默认

        :return: requests.Response

            .. note::
                返回正确时返回的 Reponse 对象 content 中的数据结构

                {"task_id":任务编号,"rapid_download":是否已经完成（急速下载）,"request_id":请求识别号}

        """

        # 上传种子文件
        torrent_handler = open(torrent_path, 'rb')
        basename = os.path.basename(torrent_path)

        # 清理同名文件
        self.delete(['/' + basename])

        response = self.upload('/', torrent_handler, basename).json()
        remote_path = response['path']
        logging.debug('REMOTE PATH:' + remote_path)

        # 获取种子信息
        response = self._get_torrent_info(remote_path).json()
        if response.get('error_code'):
            print(response.get('error_code'))
            return
        if not response['torrent_info']['file_info']:
            return

        # 要下载的文件序号：集合为空下载所有，非空集合指定序号集合，空串下载默认
        if isinstance(selected_idx, (tuple, list, set)):
            if len(selected_idx) > 0:
                selected_idx = ','.join(map(str, selected_idx))
            else:
                selected_idx = ','.join(map(str, range(1, len(response['torrent_info']['file_info']) + 1)))
        else:
            selected_idx = ''

        # 开始下载
        data = {
            'file_sha1': response['torrent_info']['sha1'],
            'save_path': save_path,
            'selected_idx': selected_idx,
            'task_from': '1',
            'source_path': remote_path,
            'type': '2'  # 2 is torrent file
        }
        url = 'http://{0}/rest/2.0/services/cloud_dl'.format(BAIDUPAN_SERVER)
        return self._request('create', 'add_task', url=url, data=data, **kwargs)