查看: 17067|回复: 16

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

  [复制链接]
  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-15 18:21:06 | 显示全部楼层 |阅读模式
    分享到:
    下载地址: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校验失败不会重下。

    回复

    使用道具 举报

  • TA的每日心情

    2013-12-6 13:36
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-1-16 01:00:14 | 显示全部楼层
    感觉好复杂的样子,刚在欧时定了板子,等到到货了试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2013-3-7 12:21
  • 签到天数: 32 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-1-16 13:13:35 | 显示全部楼层
    这个给力啊,怒赞!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-9 17:46
  • 签到天数: 536 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-1-16 23:01:55 | 显示全部楼层
    这个需要成为迅雷的会员才以离线下载吧,得花钱是吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-17 09:52:55 | 显示全部楼层
    ddkangfu 发表于 2013-1-16 23:01
    这个需要成为迅雷的会员才以离线下载吧,得花钱是吗?

    恩,需要是收费会员
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-17 18:19:13 | 显示全部楼层
    不会是迅雷自己出的吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-6-21 12:27
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-17 20:23:42 | 显示全部楼层
    不管是不是原创,过来帮顶了! :-)

    mark之!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-4-7 10:06
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-2-27 11:17:25 | 显示全部楼层
    感觉好复杂...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-3-2 20:40:52 | 显示全部楼层
    登录不成功, 我已是会员了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 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
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 02:50 , Processed in 0.199460 second(s), 35 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.