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中mechanize库的简单使用示例
Jan 10 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python文件处理
Feb 29 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
Jul 06 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Python字符串中删除特定字符的方法
Jan 15 Python
TensorFlow打印输出tensor的值
Apr 19 Python
详解python 内存优化
Aug 17 Python
图文详解matlab原始处理图像几何变换
Jul 09 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 正则 过滤html 的超链接
2009/06/02 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
总结对比php中的多种序列化
2016/08/28 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
jquery中实现标签切换效果的代码
2011/03/01 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python 文件重命名工具代码
2009/07/26 Python
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python模块如何查看
2020/06/16 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
办公室主任岗位职责
2013/11/08 职场文书
一名毕业生的自我鉴定
2013/12/04 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
教你一步步实现一个简易promise
2021/11/02 Javascript