def cloud_add_bt_task(cookie, tokens, source_url, save_path, selected_idx,<EOL>file_sha1='<STR_LIT>', vcode='<STR_LIT>', vcode_input='<STR_LIT>'):
url = '<STR_LIT>'.join([<EOL>const.PAN_URL,<EOL>'<STR_LIT>',<EOL>'<STR_LIT>', tokens['<STR_LIT>'],<EOL>])<EOL>type_ = '<STR_LIT:2>'<EOL>url_type = '<STR_LIT>'<EOL>if source_url.startswith('<STR_LIT>'):<EOL><INDENT>type_ = '<STR_LIT:4>'<EOL>url_type = '<STR_LIT>'<EOL><DEDENT>if not save_path.endswith('<STR_LIT:/>'):<EOL><INDENT>save_path = save_path + '<STR_LIT:/>'<EOL><DEDENT>data = [<EOL>'<STR_LIT>',<EOL>'<STR_LIT>', file_sha1,<EOL>'<STR_LIT>', encoder.encode_uri_component(save_path),<EOL>'<STR_LIT>', '<STR_LIT:U+002C>'.join(str(i) for i in selected_idx),<EOL>'<STR_LIT>',<EOL>'<STR_LIT>', util.timestamp(),<EOL>'<STR_LIT:&>', url_type, '<STR_LIT:=>', encoder.encode_uri_component(source_url),<EOL>'<STR_LIT>', type_<EOL>]<EOL>if vcode:<EOL><INDENT>data.append('<STR_LIT>')<EOL>data.append(vcode_input)<EOL>data.append('<STR_LIT>')<EOL>data.append(vcode)<EOL><DEDENT>data = '<STR_LIT>'.join(data)<EOL>req = net.urlopen(url, headers={'<STR_LIT>': cookie.header_output()},<EOL>data=data.encode())<EOL>if req:<EOL><INDENT>content = req.data<EOL>return json.loads(content.decode())<EOL><DEDENT>else:<EOL><INDENT>return None<EOL><DEDENT>
新建一个BT类的离线下载任务, 包括magent磁链.

    source_path  - BT种子所在的绝对路径
    save_path    - 下载的文件要存放到的目录
    selected_idx - BT种子中, 包含若干个文件, 这里, 来指定要下载哪些文件,
                   从1开始计数.
    file_sha1    - BT种子的sha1值, 如果是magent的话, 这个sha1值可以为空
    vcode        - 验证码的vcode
    vcode_input  - 用户输入的四位验证码