研究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. JEECG 新手常见问题大全,入门必读

    大家还有什么问题,请跟帖,谢谢支持..  JEECG常见问题大全 原文地址:http://t.cn/RvYsEF61. jeecg数据库脚本问题   注意:jeecg3.5.2之前版本,不需要数据库脚 ...

  2. FireDac 组件说明二

    FDUpdateSQL 生成添加,删除,修改SQL语句 TFDMetaInfoQuery 查询数据源信息 TFDEventAlerter 负责处理数据库事件通知 使用TFDEventAlerter类来 ...

  3. java split函数结尾空字符串被丢弃的问题

    参考: http://yinny.iteye.com/blog/1750210 http://www.xuebuyuan.com/1692988.html java中的split函数用于将字符串分割为 ...

  4. Oracle数据文件转移操作

    由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下.本文主要描述Oracle表空间数据文件移动的操作步骤. ...

  5. [jQ/PHP]使用JS数组储值的两种情况(提交PHP处理)

    ---------------------------------------------------------------------------------------------------- ...

  6. 使用arguments对象验证函数的参数是否合法

    <script>function sum(arg1,arg2) //加法函数{ var realArgCount = arguments.length; //调用函数时传递的实参个数 va ...

  7. Structs复习 Path问题

    Path问题相对复杂 主要是路劲问题 但结论很简单 就是统一使用绝对路径 jar包 web.xml <?xml version="1.0" encoding="UT ...

  8. @PathVariable 与@RequestParam

    http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...

  9. 在linux和Mac中访问某个文件夹中所有的文件

    在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...

  10. Python 第一个程序_1

    第一个Python程序(P108) 目标 第一个HelloPython 程序 Python2.x与3.x版本简介 执行Python程序的三种方式 解释器--python/python3  (终端中.使 ...