python 视频下载神器(you-get)的具体使用


Posted in Python onJanuary 06, 2021

you-get是github上python的一个开源库(https://github.com/soimort/you-get),使用you-get你只需要取得视频所在网页链接地址就可以很轻松的下载下来,目前you-get所支持的网站包含国内外几十个网站(youtube、twitter、腾讯、爱奇艺、优酷、bilibili等),基本上可以满足你的需求。

1.you-get可以直接通过命令行使用

前提是你要先安装you-get:pip install you-get

下载命令:you-get  your-url

l例如:

you-get https://www.bilibili.com/bangumi/play/ep118488?from=search&seid=5050973611974373611

效果如下:(我直接在pycharm的终端命令行执行)

python 视频下载神器(you-get)的具体使用

2.通过python 简单调用you-get库

# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author : xiaofeng
@Time : 2018/12/25 10:26
@Desc : Less interests,More interest.
@Project : python_appliction
@FileName: you-get.py
@Software: PyCharm
@Blog :https://blog.csdn.net/zwx19921215
"""
import sys
import you_get
 
 
def download(url, path):
 sys.argv = ['you-get', '-o', path, url]
 you_get.main()
 
 
if __name__ == '__main__':
 # 视频网站的地址
 url = 'https://www.bilibili.com/bangumi/play/ep118488?from=search&seid=5050973611974373611'
 # 视频输出的位置
 path = 'G:/test'
 download(url, path)

python 视频下载神器(you-get)的具体使用

3.python 简单集成 tkinter,通过GUI的形式展现(单线程,未做优化,后续做优化处理)

# !/usr/bin/env python
# -*-coding:utf-8-*-
"""
@Author  : xiaofeng
@Time    : 2018/12/25 11:50
@Desc : Less interests,More interest.
@Project : python_appliction
@FileName: you-get2.py
@Software: PyCharm
@Blog    :https://blog.csdn.net/zwx19921215
"""
 
import re
import sys
import tkinter as tk
import tkinter.messagebox as msgbox
import webbrowser
 
import you_get
 
"""
视频下载类
"""
 
 
class DownloadApp:
 # construct
 def __init__(self, width=800, height=200):
  self.w = width
  self.h = height
  self.title = '视频下载助手'
  self.root = tk.Tk(className=self.title)
  self.url = tk.StringVar()
  self.start = tk.IntVar()
  self.end = tk.IntVar()
  self.path = tk.StringVar()
  self.path.set('D:/DownloadApp')
 
  # define frame
  frame_1 = tk.Frame(self.root)
  frame_2 = tk.Frame(self.root)
  frame_3 = tk.Frame(self.root)
  frame_4 = tk.Frame(self.root)
 
  # menu
  menu = tk.Menu(self.root)
  self.root.config(menu=menu)
  menu1 = tk.Menu(menu, tearoff=0)
  menu.add_cascade(label='Menu', menu=menu1)
  menu1.add_command(label='about me', command=lambda: webbrowser.open('https://blog.csdn.net/zwx19921215'))
  menu1.add_command(label='exit', command=lambda: self.root.quit())
 
  # set frame_1
  label1 = tk.Label(frame_1, text='请输入视频链接:')
  entry_url = tk.Entry(frame_1, textvariable=self.url, highlightcolor='Fuchsia', highlightthickness=1, width=35)
 
  # set frame_2
  s_lable = tk.Label(frame_2, text='起始值:')
  e_lable = tk.Label(frame_2, text='结束值:')
  start = tk.Entry(frame_2, textvariable=self.start, highlightcolor='Fuchsia', highlightthickness=1, width=10)
  end = tk.Entry(frame_2, textvariable=self.end, highlightcolor='Fuchsia', highlightthickness=1, width=10)
 
  # set frame_3
  label2 = tk.Label(frame_3, text='请输入视频输出地址:')
  entry_path = tk.Entry(frame_3, textvariable=self.path, highlightcolor='Fuchsia', highlightthickness=1, width=35)
  down = tk.Button(frame_3, text='下载', font=('楷体', 12), fg='green', width=3, height=-1,
       command=self.video_download)
  # set frame_4
  label_desc = tk.Label(frame_4, fg='black', font=('楷体', 12),
        text='\n注意:支持youtube、twitter、腾讯、爱奇艺、优酷、bilibili等大部分主流网站视频下载、图片下载!')
  label_warning = tk.Label(frame_4, fg='blue', font=('楷体', 12), text='\nauthor:xiaofeng')
 
  # layout
  frame_1.pack()
  frame_2.pack()
  frame_3.pack()
  frame_4.pack()
 
  label1.grid(row=0, column=0)
  entry_url.grid(row=0, column=1)
 
  s_lable.grid(row=1, column=0)
  start.grid(row=1, column=1)
  e_lable.grid(row=1, column=2)
  end.grid(row=1, column=3)
 
  label2.grid(row=2, column=0)
  entry_path.grid(row=2, column=1)
  down.grid(row=2, column=2, ipadx=20)
 
  label_desc.grid(row=3, column=0)
  label_warning.grid(row=4, column=0)
 
 """
 视频下载
 """
 
 def video_download(self):
  # 正则表达是判定是否为合法链接
  url = self.url.get()
  path = self.path.get()
  if re.match(r'^https?:/{2}\w.+$', url):
   if path != '':
    msgbox.showwarning(title='警告', message='下载过程中窗口如果出现短暂卡顿说明文件正在下载中!')
    try:
     sys.argv = ['you-get', '-o', path, url]
     you_get.main()
    except Exception as e:
     print(e)
     msgbox.showerror(title='error', message=e)
    msgbox.showinfo(title='info', message='下载完成!')
   else:
    msgbox.showerror(title='error', message='输出地址错误!')
  else:
   msgbox.showerror(title='error', message='视频地址错误!')
 
 def center(self):
  ws = self.root.winfo_screenwidth()
  hs = self.root.winfo_screenheight()
  x = int((ws / 2) - (self.w / 2))
  y = int((hs / 2) - (self.h / 2))
  self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))
 
 def event(self):
  self.root.resizable(False, False)
  self.center()
  self.root.mainloop()
 
 
if __name__ == '__main__':
 app = DownloadApp()
 app.event()

python 视频下载神器(you-get)的具体使用

注:由于视频窗口是单线程,所以下载过程会一直卡顿(是正常的,因为处于下载中,下载完后会恢复),后续将会优化

到此这篇关于python 视频下载神器(you-get)的具体使用的文章就介绍到这了,更多相关python 视频下载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中lambda与def用法对比实例分析
Apr 30 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
python 批量修改/替换数据的实例
Jul 25 Python
使用python进行拆分大文件的方法
Dec 10 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
Django CBV类的用法详解
Jul 26 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
关于Python错误重试方法总结
Jan 03 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 #Python
如何在vscode中安装python库的方法步骤
Jan 06 #Python
如何利用python 读取配置文件
Jan 06 #Python
Pandas之缺失数据的实现
Jan 06 #Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 #Python
java字符串格式化输出实例讲解
Jan 06 #Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 #Python
You might like
php中addslashes函数与sql防注入
2014/11/17 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
深入探究node之Transform
2017/07/20 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
python控制台显示时钟的示例
2014/02/24 Python
使用python绘制人人网好友关系图示例
2014/04/01 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python中的默认参数实例分析
2018/01/29 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
有个性的自我评价范文
2013/11/15 职场文书
财务主管的岗位职责
2013/12/30 职场文书
考核工作实施方案
2014/03/30 职场文书
赡养老人协议书
2014/04/21 职场文书
大学三年计划书范文
2014/04/30 职场文书
先进班集体事迹材料
2014/12/25 职场文书
业务内勤岗位职责
2015/04/13 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang