郑云搞笑视频全集批量下载(using python bash)

郑云是谁?你懂得, 还在为下载他的搞笑视频而嫌麻烦么?两个脚本就搞定!

共需三步:

(1)还记得之前发的那个下载视频的python脚本么?就在下面(有所改进,可以传递第二个视频质量参数,默认是high,即高清质量):

(请用指定的python安装路径替换#!/usr/local/bin/python)

#!/usr/local/bin/python

#test for command line parameter(s)
#import sys
#print 'scriptname: ', sys.argv[0]
#(i, len) = (1, len(sys.argv))
#while i < len:
#  print 'command parameter', i, sys.argv[i]
#  i = i+1
#exit(0)

import sys

argc = len(sys.argv)
if argc == 2:
  format = 'high'
elif argc == 3:
  format = sys.argv[2]
else:
  print("Usage: %s videourl [videoquality=normal|high|super|...]" % sys.argv[0])
  print(" e.g.");
  print("   %s http://v.youku.com/v_show/id_XMzMzMjE0MjE2.html super" % sys.argv[0])
  exit(1)

videourl = sys.argv[1];

import urllib2
import urllib
url = 'http://www.flvcd.com/parse.php?kw=' + urllib.quote(videourl)  + '&format=' + format;

req = urllib2.Request(url);
# add some headers to fake Firefox Browser(if we don't do so, there will be a problem when try to get tudou video)
req.add_header('host', 'www.flvcd.com');
req.add_header('Referer', url[:-4]);
req.add_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0) Gecko/20100101 Firefox/4.0');
req.add_header('Accept-Language', 'en-us,en;q=0.5');
req.add_header('Accept-Encoding', 'gzip, deflate');
req.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7');
req.add_header('Keep-Alive', '115');
res = urllib2.urlopen(req);
html = res.read()

import re
pattern = re.compile('<input\s+type="hidden"\s+name="inf"\s+value="([^"]+)');
firstmatch = pattern.search(html);
urls = firstmatch.group(1);
urls = unicode(urls, 'gbk'); # urls turns out to be utf8 encoding

urlpattern = re.compile('<[NU]>(.+)');
result = urlpattern.findall(urls);

data = [result[i:i+2] for i in range(0, len(result), 2)]

print '\n--- Start to download from url "%s" (%d block(s) in total):' % (videourl, len(data))
for k, v in enumerate(data):
  print '  >downloading Block %.2d ...' % (k+1,)
  urllib.urlretrieve(v[1], v[0] + '.flv')
  print '  downloaded Block.%.2d completely<' % (k+1,)
print '--- finished ---\n'
保存到~/dl.py

然后chmod u+x ~/dl.py使其可执行


(2)然后编写批量下载郑云优酷空间的视频的shell脚本

(请确保linux or mac系统中已经安装curl, 否则需要用其他方法解析郑云优酷空间视频地址了, 比如可以用python)

#!/bin/bash

echo
echo 'press Control-Z to exit downloading if you wanna, now begin downloading...'
echo

downloadpage () {
  page=$1
  set $(curl http://u.youku.com/user_video/id_UODU1ODc1NTI=_order_1_type_1_page_$page.html 2> /dev/null | grep -oP '<a href="http://v.youku.com/v_show/[^"]+' | grep -oP 'http://.+')

  echo "downloading page $page"
 
  while [ "$1" != "" ]
  do
    echo " downloading from $1: "
    ~/dl.py "$1" super
    shift
  done
  echo "page $page downloaded"
}

set 1 2 3 4 5 6 7
while [ "$1" != "" ]
do
  downloadpage "$1"
  shift
done
保存为~/zy.sh

然后chmod u+x ~/zy.sh使其可执行


(3)进入欲下载到的目录, 然后执行~/zy.sh就可以将郑云优酷空间所有搞笑视频下载下来了


PS: 视频很多,请确保磁盘有足够的空间和足够的时间(可能需要相当一段时间, 大概有7*30个视频, 你懂得),另外偶没有在python中检查错误(偶才学一点点呢),Windows用户请当做没看过这篇文章伐。。。没有合并相同视频的多个分块,目前正在研究flv视频的合并在。。。


预览图:



updated log:

2011-12-20 16:15  更新解决编码转换问题(flvcd.com是gbk编码的, 所以之前flvcd.com网站上写的gb2312和偶写的gb2312都有问题)


试试看!


非常搞笑视频网简介 非常搞笑视频网源码采用苹果maccms8x为内核,集成了优秀的ckplayer播放器和搞笑视频资源联盟的采集插件,资源丰富,定时更新。 经过程序结构优化,占用系统资源较少。本程序一健安装,完善的标签可以快速制作各种模板。 全面支持二级分类,设置灵活,支持自定义各分类名! 全面支持伪静态设置和全站静态生成,使网站在不用生成静态的条件下对搜索引擎更友好! 网站运行模式可以一键切换(PHP动态/HTML静态/PHP伪静态) ,支持设置伪静态,对首页、分类、内容三大页面的动静切换以及自由设置后缀! 多种播放类型,全屏.窗口任意切换(后台可设置)! 完美的二级分类,强悍逻辑标签,一级分类嵌套二级循环。 后台支持对连载视频、推荐视频、热门视频、隐藏视频进行单独批量管理! 全面支持本地视频批量添加,完美支持本地多服务器路径设置! 数据库后台备份还原压缩功能。 会员功能,支持点播收费功能。 非常搞笑视频网安装说明: 一:将程序上传至空间 二:运行http://你的域名 首次登陆后会自动配置安装,重新安装程序,请先删除inc/install.lock文件 三:安装完毕,进入至后台管理 数据还原: 系统自带1600条数据,还原方法如下:进入后台--数据库选项卡---点击还原。 在后台更新缓存,数据库还原程序。 非常搞笑视频网前台页面 非常搞笑视频网后台管理 后台路径:域名/admin/index.php?m=admin-index 用户名与密码: 后台页面 相关阅读 同类推荐:站长常用源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值