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使用ntplib库同步校准当地时间的方法
Jul 02 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
Python中static相关知识小结
Jan 02 Python
opencv python 2D直方图的示例代码
Jul 20 Python
Python2和Python3的共存和切换使用
Apr 12 Python
创建Django项目图文实例详解
Jun 06 Python
python字符串的拼接方法总结
Nov 18 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
python如何支持并发方法详解
Jul 25 Python
Python如何读取、写入JSON数据
Jul 28 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php中autoload的用法总结
2013/11/08 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
java字符串格式化输出实例讲解
2021/01/06 Python
selenium如何定位span元素的实现
2021/01/13 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
SQL Server Agent 服务无法启动
2022/04/20 SQL Server
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server