3赞

16回答

9收藏

[教程] 树莓派可用的迅雷离线下载程序,分享给大家!

 

Raspberry Pi Raspberry Pi 18713 人阅读 | 16 人回复 | 2013-01-15

下载地址:https://github.com/iambus/xunlei-lixian
详细内容请往下看:

xunlei-lixian

迅雷离线下载脚本。

安装指南
  • 安装git(非github用户应该只需要执行第一步Download and Install Git)
  • 下载代码(Windows用户请在git-bash里执行)
    git clone git://github.com/iambus/xunlei-lixian.git
  • 安装Python 2.x(请下载最新的2.7版本。3.x版本不支持。)
  • 在命令行里运行
    python lixian_cli.py

注:不方便安装git的用户可以选择跳过前两步,在github网页上下载最新的源代码包(选择"Download as zip"或者"Download as tar.gz"):

https://github.com/iambus/xunlei-lixian/downloads

一些提示
  • 你可以为python lixian_cli.py创建一个别名(比如lx),以减少敲键次数。
    Linux上可以使用:
    ln -s 你的lixian_cli.py路径 ~/bin/lx
    Windows上可以创建一个lx.bat脚本,放在你的PATH中:
    @echo offpython 完整的lixian_cli.py路径 %*
    注:下文中提到的lx都是指python lixian_cli.py的别名。
  • 你可以使用lx config保存一些配置。见“命令详解”一节。
    lx config deletelx config tool asynlx config username your-idlx config password your-password
    注:密码保存的时候会加密(hash)
  • 使用lx download下载的文件会自动验证hash。其中ed2k和bt会做完整的hash校验。http下载只做部分校验(目前为止尚未发现迅雷离线能提供完整的hash码)。
    注:包含多个文件的bt种子,如果没有完整下载所有文件,对于已下载的文件,可能有少量片段无法验证。如果很重视文件的正确性请选择下载bt种子中的所有文件。(目前还没有发现由于软件问题而导致hash验证失败的情况。)
  • 如果觉得大文件的hash速度太慢,可以关掉:
    lx download --no-hash ...
    也可以使用lx config默认关掉它:
    lx config no-hash
  • lixian_hash.py可以用于手动计算hash。见“其他工具”一节。

命令详解

注:下文中提到的lx都是指python lixian_cli.py的别名。

常用命令:

  • lx login
  • lx download
  • lx list
  • lx add
  • lx delete
  • lx pause
  • lx restart
  • lx rename
  • lx config
  • lx info
  • lx help
lx login

登录,获得一个有效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。虽然你可以差不多可以保存任何参数,但是目前只有以下几个参数会真正起作用:

  • username
  • password
  • tool
  • continue
  • delete
  • output-dir
  • hash
  • mini-hash
  • id
  • n
  • size
  • format-size
  • colors
  • wget-opts(见稍后的说明)
  • aria2-opts(见稍后的说明)(见支持的下载工具一节)
  • axel-opts(见稍后的说明)

(因为只有这几个参数我觉得是比较有用的。如果你觉得其他的参数有用可以发信给我或者直接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支持的下载工具
  • wget:默认下载工具。注意有些Linux发行版(比如某些运行在路由设备上的mini系统)自带的wget可能无法满足功能要求。可以尝试使用其他工具。
  • asyn:内置的下载工具。在命令行中加上--tool asyn可以启用。注意此工具的下载表现一般,在高速下载或者设备性能不太好的情况(比如运行在低端路由上),CPU使用可能稍高。在我的RT-N16上,以250K/s的速度下载,CPU使用大概在10%~20%。
  • urllib2:内置下载工具。不支持断点续传错误重连,不建议使用。
  • curl:尚未测试。
  • aria2:测试通过。注意某些环境里的aria2c需要加上额外的参数才能运行。可以使用lx config进行配置:lx config -- aria2-opts --event-poll=select
  • axel: 测试通过。注意官方版本的axel有一个URL重定向长度超过255被截断的bug,需要手动修改源代码编译。见issue #44.
  • 其他工具,比如ProZilla,暂时都不支持。有需要请可以我,或者直接提交一个issue。
其他工具
  • lixian_hash.py可以用于手动计算hash。
    python lixian_hash.py --ed2k filenamepython lixian_hash.py --info-hash torrent-filepython lixian_hash.py --verify-sha1 filename sha1python lixian_hash.py --verify-bt filename torrent-file
  • lixian_batch.py是我自己用的一个简单的“多任务”下载脚本。其实就是多个--input文件,每个文件里定义的链接下载到文件所在的目录里。
    python lixian_batch.py folder1/links.txt folder2/links.txt ...
既知问题
  • --tool=asyn的性能不是很好。见“支持的下载工具”一节里的说明。
  • 任务匹配有点混乱。比如不能混用id和url:lx download id url;lx download mkv合法,lx download mkv mp4却非法。有时间会重构下。
  • 有些时候任务添加到服务器上,但是马上刷新拿不到这个数据。这应该是服务器同步的问题。技术上可以自动重刷一遍,但是暂时没有做。用户可以自己重试下。
  • bt下载的校验如果失败,可能需要重新下载所有文件。从技术上来讲这是没有必要的。但是一来重下出错的片段有些繁琐,二来我自己都从来没遇到过bt校验失败需要重下的情况,所以暂时不考虑支持片段修复。更新:bt校验失败不会重下。

博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
分享到:
回复

使用道具 举报

回答|共 16 个

倒序浏览

沙发

lenoki

发表于 2013-1-16 01:00:14 | 只看该作者

感觉好复杂的样子,刚在欧时定了板子,等到到货了试试
板凳

血染盔甲

发表于 2013-1-16 13:13:35 | 只看该作者

这个给力啊,怒赞!
地板

ddkangfu

发表于 2013-1-16 23:01:55 | 只看该作者

这个需要成为迅雷的会员才以离线下载吧,得花钱是吗?
5#

ukonline2000

发表于 2013-1-17 09:52:55 | 只看该作者

ddkangfu 发表于 2013-1-16 23:01
这个需要成为迅雷的会员才以离线下载吧,得花钱是吗?

恩,需要是收费会员
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
6#

wenaser

发表于 2013-1-17 18:19:13 | 只看该作者

不会是迅雷自己出的吧。
7#

GeekNapster

发表于 2013-1-17 20:23:42 | 只看该作者

不管是不是原创,过来帮顶了! :-)

mark之!
8#

goalone

发表于 2013-2-27 11:17:25 | 只看该作者

感觉好复杂...
9#

mrlong

发表于 2013-3-2 20:40:52 | 只看该作者

登录不成功, 我已是会员了.
10#

luckiest

发表于 2013-3-2 20:50:44 | 只看该作者

我下午刚到手的树莓,装好VNC之后第一件事就是设置这个脚本,以前在笔记本上用过,效果很好。
一开始我总是遇到编码报错的问题,需要修改lixian_commands/util.py里面69行encoding为('utf8')。
设置用户名密码,找到任务id之后运行
lx download <任务ID> --output-dir <下载目录> --continue  
霍比特720飞速下载中
为了下载大文件,我挂了个exfat的u盘,支持这个格式需要
apt-get install exfat-fuse
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条