我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们。尽管chrome和firefox的一些插件可以下载,但有时候下载下来是分段的视频,还要手动用ffmpeg合成一个视频太繁琐,而且用插件下载要点击好多次鼠标,太不符合linuxer的性格了哈~于是我用python3写了一个youkuDown.py,代码如下:

import re

import urllib.request

import json

import time

import random

import sys

def getVideoInfo(url):

ruleTitle=re.compile('

(.*)')

ruleId=re.compile('http://v.youku.com/v_show/id_(.*).html')

videoTitle=ruleTitle.findall(urllib.request.urlopen(url).read().decode('utf8'))

videoId=ruleId.findall(url)

return videoTitle[0],videoId[0]

def getTrueLink(videoid):

data=urllib.request.urlopen('http://v.youku.com/player/getPlayList/VideoIDS/'+videoid)

info=json.loads(data.read().decode('utf8'))

segs=info['data'][0]['segs']

types=segs.keys()

seed=info['data'][0]['seed']

source=list("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890")

mixed=''

while source:

seed=(seed*211+30031)&0xFFFF

index=seed*len(source)>>16

c=source.pop(index)

mixed+=c

ids=info['data'][0]['streamfileids']['flv'].split('*')[:-1]

vid=''.join(mixed[int(i)] for i in ids)

sid='%s%s%s'%(int(time.time()*1000),random.randint(1000,1999),random.randint(1000,9999))

urls=[]

for s in segs['flv']:

no='%02x'%int(s['no'])

url='http://f.youku.com/player/getFlvPath/sid/%s_%s/st/flv/fileid/%s%s%s?K=%s&ts=%s'%(sid,no,vid[:8],no.upper(),vid[10:],s['k'],s['seconds'])

urls.append(url)

return urls

def down2file(urls,filename):

f=open(filename,'wb')

fileNum=len(urls)

count=0

for url in urls:

count+=1

print('downloading file %d/%d'%(count,fileNum))

req=urllib.request.Request(url,headers={'Referer':'http://www.youku.com'})

data=urllib.request.urlopen(req).read()

f.write(data)

f.close()

print('download '+filename+' OK!')

def youkuDown(link):

videotitle,videoid=getVideoInfo(link)

urls=getTrueLink(videoid)

down2file(urls,videotitle+'.flv')

if __name__=='__main__':

if len(sys.argv)<2:

print('Example Usage: python3 youkuDown.py http://v.youku.com/v_show/id_XNjUzNDQwMzIw.html')

print('')

exit()

youkuDown(sys.argv[1])

简单说明一下,因为优酷视频的真实链接是动态变化的,而每个视频的ID是不变的,比如在链接http://v.youku.com/v_show/id_XNjUzNDQwMzIw.html中,“XNjUzNDQwMzIw”就是视频的唯一ID标识,通过这个ID可以通过GET方式请求“http://v.youku.com/player/getPlayList/VideoIDS/”+ID产生的新链接,得到json格式的视频信息,然后组装成视频的真实链接,这个真实链接也是有时效性的,而且向这个真实链接发起请求的时候必须把头的Referer设为www.youku.com骗过服务器才能下载,所以我没有像以前一样用os.system('wget '+url)这样搞起。还有,优酷对大的视频是分段的,所以得到的真实url我存在一个List里面,下载的时候会显示出共有几段以及实时下载了多少段。下面是我的使用举例:

保存到本地的视频播放情况:

在linux下想下载优酷视频的盆友们enjoy it~~同时祝大家新年愉快~~哈哈哈

python自动下载安装软件_python3自动下载优酷视频小程序相关推荐

  1. python3自动下载优酷视频小程序

    我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们.尽管chrome和firefox的一些插件可以下载,但有 ...

  2. html引入优酷视频自动播放,h5页面上如何播放优酷视频

    看到上面的答案,可能有人会有雾水.我来补充一下. 如果使用ueditor,kineditor等富文本编辑器插入的视频,其默认是插入swf结尾的url 这个时候,html5是不支持的. 那么如何做呢? ...

  3. 如何解决电脑不停自动下载安装软件问题?

    如何解决电脑不停自动下载安装软件问题? 一.查看网络使用 1.当出现这情况后,我们首先要做的就是查看一下任务管理器里面的网络资源管理,看看是哪个程序,在偷偷的连接网络下载软件,先按住电脑的CTRL+A ...

  4. 更换ubuntu软件源为阿里源,解决ubuntu下载安装软件慢的问题并安装open-vm-tools和open-vm-tools-desktop

    *************** 一.更换ubuntu软件源为阿里源,解决ubuntu下载安装软件慢的问题 1.打开终端(快捷键ctrl+alt+t),输入cd /etc/apt并回车 2.输入sudo ...

  5. ubuntu16.04 wget java_linux centos ubuntu下载安装JDK wget方式下载JDK

    linux centos ubuntu下载安装JDK wget方式下载JDK 本文以jdk_8u162为例 切换到源码目录 cd /usr/local/src/ wget方式下载JDK官方最新包 wg ...

  6. =。= 好吧,获取优酷视频真实下载地址的后台完成了

    =.= 好吧,获取优酷视频真实下载地址的后台完成了 Written by dreamfairy on 2011 年 02 月 28 日. Posted in DIARY, PHP, Working 这 ...

  7. 如何直接下载优酷视频?不用优酷下载器下载视频方法技巧

    转载原地址:http://www.jb51.net/softjc/135042.html 以下为转载内容: 可能有许多朋友平常喜欢在优酷土豆下载视频观看,通常都只有安装i酷加速器或者飞速土豆软件才可以 ...

  8. 优酷视频下载器 优酷视频下载方法

    iku爱酷V2.1版优酷视频加速器下载优酷视频下载器 iku爱酷V2.1版优酷视频加速器. 视频加速器播放速度更快!下载速度更快!旋风般的加速感觉! 视频下载看下载优酷站内视频,充分满足你的收藏欲. ...

  9. 优酷视频下载|优酷播放器下载

    优酷网从上周开始,全站视频已经开始完美支持iPad和iPhone 4的在线视频播放服务.采用HTML5和HTTP Live Streaming技术,对苹果iOS系统实现全面的支持,并达到和PC上一样流 ...

最新文章

  1. JavaWeb实现分页的四种方法
  2. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)
  3. 查询v$lock缓慢和direct path write temp等待
  4. jeecg-easypoi-2.0.3版本发布
  5. 【华为云技术分享】降本增效的背后:华为云瑶光数字化经营实战
  6. Android下拉刷新上拉更多瀑布流(附源码)
  7. 我的开源项目:JPEG分析器
  8. 如何为自己找到合适的销售工作?
  9. java开发工具比较(16个工具修订版)
  10. Windows下安装Tp6.0框架,图文。Thinkphp6.0安装教程
  11. Linux - ZModem协议的sz命令传输文件异常
  12. 机器学习教程 之 随机森林: 算法及其特征选择原理
  13. 如何给多段视频制作一行滚动字幕,并添加GIF表情包
  14. 远程唤醒、WOL、Magic_Packet
  15. windows MSOCache删除
  16. PLSQL--表空间管理
  17. 扫地机器人的构造及核心技术详解
  18. 2033-人见人爱A+B(java)
  19. 【LeetCode】括号(有效括号、括号生成、最长有效括号)
  20. 十分钟带你了解阿里、美团、滴滴、头条等互联网头部大厂面经

热门文章

  1. SQL Server查询
  2. 基于jsp java的汽车租赁租车行管理系统
  3. flutter混合开发怎么调试
  4. python开发的程序_Python二次开发程序详解
  5. 让客户两眼放光,美容店无法抗拒的成交主张,7天收款91万!
  6. setTimeout()用法
  7. 啥是伪代码?假的代码??是代码吗??
  8. IDC 中国边缘云市场最新报告解读:阿里云蝉联中国公有云市场第一
  9. java尚硅谷 项目三《开发团队调度项目》最细致流程、总结
  10. 【VINS论文笔记】Online Temporal Calibration for Monocular Visual-Inertial Systems 单目视觉惯性系统在线时间标定