在Linux下资源下载的速度长期受限,ed2k,torrent什么都木有速度,坑爹呀,自从购买了迅雷VIP的服务,可以直接以http形式来从迅雷服务器内下载自己托迅雷下载的东西,而且如果你这个资源别人下载过的话,你就不用再次下载了,迅雷马上提示你这个任务已经完成了。

至于其他的,用过的人都知道了,也不再细说。如果windows平台配合迅雷客户端用迅雷VIP的话,这个脚本也没有啥意义了(因为客户端更人性化,当然占用资源也不少,嘿嘿),所以前提是你的OS要是Linux,然后使用迅雷离线的web界面。

由于firefox下载迅雷离线的东西存在这样几个问题,比如文件名中文乱码,要自己改(暗骂编码ing),不支持断点续传(我挂过几次,不过无奈重新下载了),迅雷在点击下载的时候,响应慢死了,好久才跳出窗口。

出于这几个原因,我就去研究了下PT酱的那个离线下载的脚本,然后根据自己的需要重新写如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#Time-stamp: <2014-12-07 21:36:28 Tuesday by roowe>

#File Name: thuner_xl_with_wget.py

#Author: bestluoliwe@gmail.com

#My Blog: www.iroowe.com

import re

import time

import os

import logging

import sys

from htmlentitydefs import entitydefs

import subprocess

LOG_FILE = "/tmp/thuner_with_wget.log"

log = None

def log_init(log_file, quiet=False):

logger = logging.getLogger()

logger.setLevel(logging.DEBUG)

hdlr = logging.FileHandler(log_file)

formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")

hdlr.setFormatter(formatter)

logger.addHandler(hdlr)

if not quiet:

hdlr = logging.StreamHandler()

hdlr.setFormatter(formatter)

logger.addHandler(hdlr)

return logger

def handle_entitydef(matchobj):

key = matchobj.group(1)

if entitydefs.has_key(key):

return entitydefs[key]

else:

return matchobj.group(0)

def collect_urls(html, only_bturls = False):

"""

collect urls

"""

urls = []

for name, url in re.findall(r"", html):

name = re.sub("&(.*?);", handle_entitydef, name)

url = re.sub("&(.*?);", handle_entitydef, url)

urls.append((name, url))

if not only_bturls:

for id, name in re.findall(r'

result = re.search(r'

if result:

name = re.sub("&(.*?);", handle_entitydef, name)

url = result.group(1)

url = re.sub("&(.*?);", handle_entitydef, url)

urls.append((name, url))

log.info("Filter get %d links" % len(urls))

return urls

def choose_download(urls):

download_list = {}

for name, url in urls:

while True:

ans = raw_input("Download %s?[Y/n](default: Y) " % name)

if len(ans) == 0:

ans = True

break

elif ans.lower() == 'y':

ans = True

break

elif ans.lower() == 'n':

ans = False

break

else:

sys.stdout.write("please enter y or n!\n")

continue

download_list[name] = ans

return download_list

def thuner_xl_with_wget(urls, output_dir, cookies_file, quiet=False):

download_list = choose_download(urls)

for name, url in urls:

if len(url) == 0:

log.debug("Empty Link, Name: " + name)

continue

if not download_list[name]:

continue

cmd = ["wget", "--load-cookies", cookies_file, "-c", "-t", "5", "-O", os.path.join(output_dir, name), url]

if quiet:

cmd.insert(1, "-q")

log.info("wget cmd: '%s'" % ' '.join(cmd))

ret = subprocess.call(cmd)

if ret != 0:

log.debug("wget returned %d." % ret)

if ret in (3, 8):

log.error("Give up '%s', may be already finished download, or something wrong with disk." % name)

else:

urls.append((name, url))

log.error("will retry for %s later." % name)

continue

else:

log.info("Finished %s" % name)

time.sleep(2)

def thuner_xl_with_aria2c(urls, output_dir, cookies_file, quiet=False):

"""

download with aria2c

"""

download_list = choose_download(urls)

for name, url in urls:

if len(url) == 0:

log.debug("Empty Link, Name: " + name)

continue

if not download_list[name]:

continue

cmd = ["aria2c", "--load-cookies", cookies_file, "-d", output_dir, "-c", "-m", "5", "-s", "5", "-o", name, url]

if quiet:

cmd.insert(1, "-q")

log.info("wget cmd: '%s'" % ' '.join(cmd))

ret = subprocess.call(cmd)

if ret != 0:

log.debug("wget returned %d." % ret)

if ret in (13):

log.error("Give up '%s', file already existed." % name)

else:

urls.append((name, url))

log.error("the exit status number is %d, and then will retry for %s later." % (ret, name))

continue

else:

log.info("Finished %s" % name)

time.sleep(2)

if __name__ == "__main__":

import argparse

parser = argparse.ArgumentParser(description='Thuner li xian with wget', formatter_class=argparse.ArgumentDefaultsHelpFormatter)

parser.add_argument('-p', nargs='?', default="~/user_task.htm", help="load page file")

parser.add_argument('-c', nargs='?', default="~/cookies.txt", help="load cookie file")

parser.add_argument('-o', nargs='?', default="~/Downloads", help="output dir")

parser.add_argument('-b', action='store_true', default=False, help="bt files only")

parser.add_argument('-q', action="store_true", default=False, help="quiet, only log to file.")

parser.add_argument('-a', action="store_true", default=False, help="download with aria2c")

args = parser.parse_args()

only_bturls, cookies_file, output_dir, page_file, quiet = args.b, args.c, args.o, args.p, args.q

page_file = os.path.expanduser(page_file)

cookies_file = os.path.realpath(os.path.expanduser(cookies_file))

output_dir = os.path.expanduser(output_dir)

log = log_init(LOG_FILE, quiet = quiet)

if not os.path.exists(cookies_file):

log.info("please export cookies file")

sys.exit(0)

if not os.path.isdir(output_dir):

log.info("No such %s", output_dir)

sys.exit(0)

with open(page_file) as f:

page_html = f.read()

urls = collect_urls(page_html, only_bturls)

if not args.a:

thuner_xl_with_wget(urls, output_dir, cookies_file, quiet)

else:

thuner_xl_with_aria2c(urls, output_dir, cookies_file, quiet)

用法如下,有两个东西要解释下:

第一个,user_task.htm就是你的迅雷任务页面,在Firefox可以用Ctrl+S进行保存下来,下载信息都在里面;

第二个,cookie file就是你的cookie文件,这个是给wget用的,这个文件你可以用firefox的export cookie这个插件获取(一般重新登陆之后就需要再次export一次,因为这个时候旧的cookie已经失效了),其他浏览器请自行问google;output dir就是你的下载保存路径,其他就不说了,不明白可以联系我。

(virpython2)[roowe@Arch mytools]$ ./thuner_xl_with_wget.py -h

usage: thuner_xl_with_wget.py [-h] [-p [P]] [-c [C]] [-o [O]] [-b] [-q] [-a]

Thuner li xian with wget

optional arguments:

-h, --help  show this help message and exit

-p [P]  load page file (default: ~/user_task.htm)

-c [C]  load cookie file (default: ~/cookies.txt)

-o [O]  output dir (default: ~/Downloads)

-b  bt files only (default: False)

-q  quiet, only log to file. (default: False)

-a  download with aria2c (default: False)

执行下面的命令即可:

(virpython2)[roowe@Arch mytools]$ ./thuner_xl_with_wget.py -o /home/ftpusers/ics

linux 实现离线迅雷,Linux下使用wget/aria2进行离线迅雷批量下载相关推荐

  1. 简单备忘一下Linux下的wget和curl如何使用http proxy

    简单备忘一下Linux下的wget和curl如何使用http proxy wget -e "http_proxy=porxyhost:port" www.baidu.com cur ...

  2. mysql linux c tar_linux下mysql的tar包离线安装

    linux下mysql的tar包离线安装 1.确保mysql安装之前有libaio依赖 yum search libaio yum install libaio 2.下载mysql的tar离线包 下载 ...

  3. Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案

    Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...

  4. linux下的wget命令实现断点下载

    转载链接: http://man.linuxde.net/wget https://www.cnblogs.com/cindy-cindy/p/6847502.html wget命令用来从指定的URL ...

  5. linux安装meb工具,linux-docker下安装禅道全部

    友情提示:按照步骤走,99%的人会安装成功,1%的人可以咨询度娘 64位电脑安装禅道,满足发送邮件功能 第一步: docker ps 查看docker中的容器是否有禅道(docker ps -a    ...

  6. linux安装python3.6 setuptools_linux下安装Python3.6.1

    linux下安装Python3.6.1 Python-3.6.1下载wget  https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz ...

  7. 我的世界服务器linux加mod,在Linux下搭建带MOD 我的世界(Minecraft)服务器

    在Linux下搭建带MOD 我的世界(Minecraft)服务器 系统要求 官方服务器推荐配置要求如下: CPU:Intel Core-Based CPUs or AMD K8-Based CPUs ...

  8. linux下批量下载站点内容初稿

    此脚本适用于站点命名内容很有规律的网址,下载后会自动将文件拷贝到对应目录中,已测试过 尤其适合下图片 vi wgetlist #!/bin/bash #批量下载 mkdir -p 2010{1..12 ...

  9. linux wegt克隆网站,linux利用wget命令备份网站(镜像拷贝)

    上篇文章写到使用curl下载上传ftp,陋室博客最近想把之前的实验页面做一个镜像站点,不过由于curl不支持递归下载,所以当要备份一个ftp服务器上的文件时,略显不足. 还好linux为我们提供了更加 ...

  10. linux编译ffmpeg.exe,linux下编译FFmpeg

    linux下编译FFmpeg 2020年01月11日 阅读数:12 这篇文章主要向大家介绍linux下编译FFmpeg,主要内容包括基础应用.实用技巧.原理机制等方面,希望对大家有所帮助. 1.首先获 ...

最新文章

  1. Unity3D:中小型团队游戏研发的突围之道
  2. HDU 4121 Xiangqi --模拟
  3. linux下各个目录里面都装了什么
  4. 自定义函数_python3基础07函数(自定义)
  5. 基础编程题之奇数位(偶数位)都是奇数(偶数)
  6. (案例六)三种scrapy模拟登陆策略
  7. 上海高考女生计算机专业,@2020高考:女生最多的15个专业,一辈子的好友就在这里...
  8. bash上的mysql在zsh用不了_Zsh和Bash的兼容性问题
  9. GCP Marker生成的刺点文件导入Pix4D教程
  10. 初次涉足手机广告联盟行业
  11. 计算机网络管理员高级操作技能考核试卷,计算机网络管理员(高级)操作技能试题样题(2)...
  12. in_array函数漏洞
  13. 计算机老提示安全证书到期,安全证书过期,教您怎么解决网站安全证书过期
  14. 风光过后就崩溃,互联网公司让你心好累
  15. python re库,Python中的Re库简要总结
  16. 公钥密码学中的三大难解数学问题
  17. 从隔壁兄弟那爬点网页数据,整理成word文档
  18. 宽带信号的DOA估计学习笔记(四):空间分辨率
  19. 【51nod】2059 上台阶 easy
  20. 一年级的小孩可以学习机器人编程

热门文章

  1. 第三方支付相关知识结构
  2. office修复找不到msi_安装Office2007,总是提示找不到OfficeMUI.msi
  3. ubuntu20.04设置DNS
  4. python的csv安装_Python csv模块:处理csv文件
  5. 炫酷渐变色背景粒子线条折线连接canvas动画
  6. 2013级C++第15周项目——二维数组
  7. python turtle渐变色_Python : turtle色彩控制实例详解
  8. 今天申请了亚马逊新加坡站点
  9. 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉
  10. 《东周列国志》第六回 卫石碏大义灭亲 郑庄公假命伐宋