迅雷离线下载脚本。
安装指南注:不方便安装git的用户可以选择跳过前两步,在github网页上下载最新的源代码包(选择"Download as zip"或者"Download as tar.gz"):
https://github.com/iambus/xunlei-lixian/downloads
一些提示注:下文中提到的lx都是指python lixian_cli.py的别名。
常用命令:
登录,获得一个有效session,默认保存路径是~/.xunlei.lixian.cookies。一般来说,除非服务器故障或者执行了lx logout(或者你手动删除了cookies文件),否则session的有效期是一天左右。session过期之后需要手动重新执行login。但如果使用lx config password把密码保存到配置文件里,则会自动重新登录。后文会介绍lx config。
lx login接受两个参数,用户名和密码。第二次登录可以只填密码。
lx login username passwordlx login password如果不希望明文显示密码,也可以直接运行
lx login或者使用-代替密码
lx login username -上面的命令会进入交互式不回显的密码输入。
可以用--cookies指定保存的session文件路径。-表示不保存(在login这个例子里,没什么实际意义)。
lx login username password --cookies some-pathlx login username password --cookies -注意,除了lx login外,大多数lx命令,比如lx download,都需要先执行登录。这些命令大多支持--username和--password,以及--cookies参数,根据传递进来的参数,检查用户是否已经登录,如果尚未登录则尝试登录。一般来说不建议在其他命令里使用这些参数(因为麻烦),除非你不希望保存session信息到硬盘。
lx download下载。目前支持普通的http下载,ed2k下载,和bt下载。可以使用thunder/flashget/qq旋风的连接(bt任务除外)。在信息足够的情况下(见“一些提示”一节的第3条),下载的文件会自动验证hash,出错了会重新下载(我个人目前还没遇到过下载文件损坏的情况)。见“一些提示”一节的第3条。
lx download idlx download #nlx download http://somewherelx download ed2k://somefilelx download bt://info-hashlx download link1 link2 link3 ...lx download --alllx download keywordslx download date下载bt的时候需要加--bt参数(或者--torrent参数)。可以指定本地.torrent文件路径,或者.torrent文件的http url,或者torrent文件的info hash。(很多网站使用info hash来标识一个bt种子文件,这种情况你就不需要下载种子了,lx download可以自动下载种子,不过前提是之前已经有人使用迅雷离线下载过同样的种子。如后所述,你也可以使用lixian_hash.py --info-hash来手动生成bt种子的info hash。)
lx download --bt Community.S03E01.720p.HDTV.X264-DIMENSION.torrentlx download --bt http://tvu.org.ru/torrent.php?tid=64757lx download --bt 61AAA3C6FBB8B71EBE2F5A2A3481296B51D882F6lx download --bt bt://61AAA3C6FBB8B71EBE2F5A2A3481296B51D882F6注意,如果你使用最后一种方式,--bt参数是可选的。因为lx download可以从bt://识别出来这是一个bt任务。
可以把多个连接保存到文件里,使用--input参数批量下载:
lx download --input links.txt注意:在断点续传的情况下,如果文件已经存在,并且文件大小相等,并且使用了--continue,重新下载并不只是简单的忽略这个文件,而是先做hash校验,如果校验通过才忽略。如果文件比较多或者比较大,可能比较耗时。建议手动从--input文件里删除已经下载过的链接。也可以使用--mini-hash参数,如下。
如果指定了--mini-hash参数,对于已经下载过的文件,并且文件大小正确(一般意味着这个文件的正确性已经在前一次下载中验证过了),会做一个最简单的校验。对于尚未下载完成的任务,在完成之后还是会做完整的hash。
如果指定了--no-hash参数,永远不会做完整的hash。但还是会做文件大小检验和取样hash(很快)。
可以使用--delete参数在下载完成之后删除任务。
lx download link --delete如果一个文件已经存在,使用参数--continue支持断点续传,使用--overwrite覆盖已存在的文件,重新下载。
你可能需要用--tool参数来指定下载工具。默认的下载工具是wget,有些环境的wget是最低功能版本,不支持指定cookie或者断点续传。这种情况可以使用--tool asyn。这在“支持的下载工具”一节有说明。
lx download --tool=wget linklx download --tool=asyn link--output和--output-dir分别用来指定保存文件的路径和目录。
如果要下载的文件尚未在离线任务里,会被自动添加。
你也可以使用指定要下载的任务id(lx list命令可以用来查看任务id):
lx download task-id但是要注意,多任务下载的时候,不能混用id和url(以后可能会支持)。
类似任务id,也可以指定任务的序列号。序列号从0开始。可以使用lx list -n查看序列号。如果希望lx list默认显示序列号,可以使用lx config n。若要下载任务列表中的第一个任务:
lx download #0要下载前三个任务:
lx download #0-2注:#也可以省略。因为Shell里#会被当成注释。所以可以lx download 0或者lx download "#0"。
对于bt任务,如果只想下载部分文件,可以在task id后指定文件id:
lx download bt-task-id/file-id bt-task-id/file-id2或者:
lx download bt-task-id/[1,3,5-7]注:上面的命令下载对应bt任务里文件id为1,3,5,6,7的五个文件。
也可以指定bt子文件的扩展名:
lx download bt-task-id/.mkv或者:
lx download bt-task-id/[.mkv,.mp4]可以使用--all参数下载所有的任务(如果已经在参数中指定了要下载的链接或者任务id,--all参数会被忽略):
lx download --all也可以使用一个简单的关键字匹配要下载的文件名:
lx download mkv也可以搜索多个关键字(满足其中一个就算匹配):
lx download mkv mp4任务的添加日期也可以作为关键字:
lx download 2012.04.04lx download 2012.04.04 2012.04.05lx list列出已存在的离线任务。默认只会列出任务id,任务名,以及状态。可以使用--original-url和--download-url参数来列出原始链接和下载链接。--completed参数用于忽略未完成任务。
lx listlx list --completedlx list --no-status --original-url --download-url如果要列出bt任务的子文件,可以在任务id后面加上/:
lx list id/详细参数可以参考lx help list。
lx add添加任务到迅雷离线服务器上。一般来说你可以直接使用lx download下载而无需手动添加。如果你认为这个任务还没人下载过,你可以先手动添加,稍后下载。
lx add url1 url2 url3lx add --input links.txtlx add --bt torrent-filelx add --bt torrent-urllx add --bt info-hashlx delete从迅雷离线服务器上删除任务。
lx delete id1 id2lx delete [url]ed2k://...lx[/url] delete mkvlx delete --all mkvlx delete --all mkv mp4lx pause暂停任务。
lx pause id1 id2lx pause --all mkvlx restart重新开始任务。
lx restart id1 id2lx restart --all mkvlx rename重命名任务
lx rename task-id task-namelx logout不想保留session可以使用lx logout退出。一般用不着。
lx logout lx logout --cookies your-cookies-filelx config保存配置。配置文件的保存路径是~/.xunlei.lixian.config。虽然你可以差不多可以保存任何参数,但是目前只有以下几个参数会真正起作用:
(因为只有这几个参数我觉得是比较有用的。如果你觉得其他的参数有用可以发信给我或者直接open一个issue。)
不加参数会打印当前保存的所有配置:
lx config可以使用--print打印指定的配置:
lx config --print password添加一个新的参数:
lx config username your-usernamelx config password your-passwordlx config deletelx config no-delete删除一个参数:
lx config --delete password注:密码是hash过的,不是明文保存。 注:如果不希望在命令行参数中明文保存密码,可以运行lx config password,或者lx config password -,会进入交互式不回显密码输入(只支持password配置)。
关于wget-opts/aria2-opts/axel-opts,因为这些工具的命令行参数一般都包含-,所以需要用额外的--转义。另外多个命令行参数需要用引号合并到一起:
lx config -- aria2-opts "-s10 -x10 -c"lx info打印cookies文件里保存的迅雷内部id,包括登录的ID,一个内部使用的ID,以及gdriveid。
关于gdriveid:理论上gdriveid是下载迅雷离线链接需要的唯一cookie,你可以用lx list --download-url获取下载地址,然后用lx info获取gdriveid,然后手动使用其他工具下载,比如wget "--header=Cookie: gdriveid=your-gdriveid" download-url。
lx help打印帮助信息。
lx helplx help exampleslx help readmelx help download支持的下载工具