研究PySide与youtube_dl结合实现视频下载,抽丝剥蚕,步步维艰,却也颇有意思。

记录初始心得。界面以PySide之Qt编写,调用youtube_dl下载,回调出下载进度,代码如下:

# encoding: utf-8

from __future__ import unicode_literals
from PySide.QtGui import *
from PySide.QtCore import *
from main_ui import *
import youtube_dl
import threading class MainWindow(QMainWindow, Ui_Main):
update_info = Signal(dict) def __init__(self, parent=None):
super(MainWindow, self).__init__(parent) self.setupUi(self)
self.btnGet.setEnabled(False)
self.txtUrl.setText('https://www.youtube.com/watch?v=dvSLaHj9VVM')
self.update_info.connect(self.safe_hook_progress) def hook_progress(self, d):
self.update_info.emit(d) def safe_hook_progress(self, d):
info = ''
if d['status'] == 'downloading':
info = 'downloaded_bytes: ' + str(d['downloaded_bytes']) + ', elapsed: ' + str(
d['elapsed']) + ', speed: ' + str(d['speed']) + ', filename: ' + d['filename'];
elif d['status'] == 'finished':
info = '\r\ncomplete!'
self.txtUrl.setEnabled(True)
self.btnGet.setEnabled(True)
if info != '':
self.txtInfo.append(info)
# self.txtInfo.setText(info) def get_opts(self):
ydl_opts = {
'format': 'bestvideo',
# 'outtmpl': os.path.join(app.config['VIDEOS_FOLDER'], '%(id)s.%(ext)s'),
# 'logger': MyLogger(),
'progress_hooks': [self.hook_progress],
}
return ydl_opts def download(self, url):
print 'download......', url
if url.strip() == '':
return ydl = youtube_dl.YoutubeDL(self.get_opts())
ydl.download([url]) @Slot()
def on_txtUrl_returnPressed(self):
if self.btnGet.isEnabled():
self.btnGet.click() @Slot(str)
def on_txtUrl_textChanged(self, s):
self.btnGet.setEnabled(s != '') @Slot()
def on_btnGet_clicked(self):
self.txtUrl.setEnabled(False)
self.btnGet.setEnabled(False)
self.txtInfo.setText('')
t = threading.Thread(target=MainWindow.download, args=(self, self.txtUrl.text()), name='thread')
t.start()

效果如图所示:

参考:

youtube_dl

python脚本调用youtube-dl实现视频下载

Python: 调用youtube_dl实现视频下载的更多相关文章

  1. 【转】python调用youtube-dl实现视频下载

    youtube-dl是一个命令行程序,用于从YouTube.com和更多网站下载视频.它需要Python解释器,版本2.6,2.7或3.2+,并且支持Unix,Windows或Mac OS X中运行. ...

  2. python学习路线以及视频下载

    作者:林其链接:https://www.zhihu.com/question/19660572/answer/194904019来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  3. [uiautomator篇][python调用java][1]应用下载的插件需要很长时间问题解决

    1第一次打开应用,可能会要求下载插件,我们先在/sdcard/Android/data/<packageName>  或者/data/data/<pakeageName>找到插 ...

  4. python实现视频下载

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站 ...

  5. Python调用ffpmeg和ffprobe处理视频文件

    需求: 运营有若干批次的视频.有上千个,视频文件,有mp4格式的,有ts格式的 现在有需要去掉视频文件片头和片尾的批量操作需求. 比如 文件夹A下面的视频去掉片尾10秒 文件夹B下面的视频去掉片头6秒 ...

  6. 手把手教你用python打造网易公开课视频下载软件2-编码相关说明

    函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...

  7. 手把手教你用python打造网易公开课视频下载软件1-总述

    写作前面的话:最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html,在线看 ...

  8. python调用mediainfo工具批量提取视频信息

    写了2个脚本,分别是v1版本和v2版本 都是python调用mediainfo工具提取视频元数据信息 v1版本是使用pycharm中测试运行的,指定了视频路径 v2版本是最终交付给运营运行的,会把v2 ...

  9. Python 爬虫 Vimeo视频下载链接

    python vimeo_d.py https://vimeo.com/228013581 在https://vimeo.com/上看到稀罕的视频 按照上面加上视频的观看地址运行即可获得视频下载链接 ...

随机推荐

  1. Win2008R2配置WebDeploy(转)

    一.配置服务器 1.安装管理服务 2.点击管理服务进行配置 3.安装WebDeploy 3.1通过离线安装包方式安装: https://www.iis.net/downloads/microsoft/ ...

  2. hadoop-3

    结合https://blog.csdn.net/zhangjun5965/article/details/76796998,自己过一遍感受下 public class DFSZKFailoverCon ...

  3. html lesson one

    Review Congratulations on completing the first lesson of HTML & CSS! You are well on your way to ...

  4. C语言复习:结构体

    结构体专题 01.结构体类型定义及结构体变量定义     char c1,char c2, char name[62]; int age     char name[62]; int age,char ...

  5. 实现一个简单的shell

    使用已学习的各种C函数实现一个简单的交互式Shell,要求:1.给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执行完成后再次给出提示符.2.该程序可识别和处理以下 ...

  6. oracle第一天笔记

    Oracle体系结构: 数据库   ---->  实例(orcl) --->  表空间(逻辑单位)(用户)  ---> 数据文件(物理单位) 地球     ---->   国家 ...

  7. Haskell语言学习笔记(83)Pipes

    安装 pipes $ cabal install pipes Installed pipes-4.3.9 Prelude> import Pipes Prelude Pipes> impo ...

  8. wx小程序获取组件属性数据data-prop

    在微信小程序中有时会在组件上定义一些属性,使用data-来定义 <view data-idvalue="id" data-Index-Name="IndexName ...

  9. 【转】JS windows.open()详解

    window.open(url, name, features, replace)  Arguments - 参数 url  可选字符串参数,指向要在新窗口中显示的文档的URL.如果省略该参数,或者参 ...

  10. 吴裕雄 20-MySQL NULL 值处理

    MySQL NULL 值处理我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作.为了 ...