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网页请求urllib2模块简单封装代码
Feb 07 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
python单例模式实例解析
Aug 28 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
python中删除某个元素的方法解析
Nov 05 Python
Python求平面内点到直线距离的实现
Jan 19 Python
在Python中通过threshold创建mask方式
Feb 19 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
举例讲解Python装饰器
Dec 24 Python
Python中requests库的用法详解
Jun 05 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中strtotime函数使用方法详解
2011/11/27 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
浅谈python中set使用
2016/06/30 Python
简单谈谈python中的多进程
2016/11/06 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
树莓派实现移动拍照
2019/06/22 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
自荐信需注意事项
2014/01/25 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
教师党员自我评价2015
2015/03/04 职场文书
小学德育工作总结2015
2015/05/12 职场文书
小英雄雨来观后感
2015/06/09 职场文书
户外拓展训练感想
2015/08/07 职场文书
python文件目录操作之os模块
2021/05/08 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android