python下载神器_python 视频下载神器(you-get)的具体使用
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的终端命令行执行)
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)
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 视频下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
python下载神器_python 视频下载神器(you-get)的具体使用相关推荐
- python excelwriter保存路径_python管理文件神器 os.walk
点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 来源:诡途 https://blog.csdn.net/qq_35866846/a ...
- python中easygui最新下载教程_python怎么下载easygui
详细内容 easy gui是一个模块,用于在Python中进行非常简单.非常简单的GUI编程.easygui不同于其他GUI生成器,因为easygui不是事件驱动的.相反,所有的GUI交互都是通过简单 ...
- python 批量下载图片_Python 批量下载图片示例
使用Python find函数和urllib下载图片. A:#!/usr/bin/env python import time import urllib i = 0 url = ['']*10 na ...
- python如何实现下载文件_python实现下载文件的三种方法
python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...
- 如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...
模拟登录 这里要用到两个包:requests和json.requests使用前得先安装:pip install requests. In [3]: 进群:548377875 即可获取数十套PDF哦! ...
- 微信视频号视频可以下载吗?视频下载器安装使用教程
简介 最近小伙伴推荐了一款视频下载神器,它可以批量下载微信视频号中的视频到本地上,我试了一下非常简单方便,而且还支持预览等操作,今天分享给大家 软件下载 ➤ 微信视频号下载器下载 ⇲ 安装使用教程 安 ...
- 最好的FLV视频下载器 维棠 (支持优酷视频下载、土豆视频下载等)
维棠FLV视频下载能帮助你轻松下载国内外大多数FLV视频分享网站的视频内容;并且维棠FLV视频下载具有断点续传功能. 现在国内外出现了很多视频分享网站,每个用户都可以把自己的视频节目和其他人分享.这些 ...
- 【IDM】IDM下载腾讯视频下载广告和分段的问题
[问题1:用IDM下载腾讯视频时,IDM只识别到广告] [解决办法]:等待广告播放完毕之后,正片开播了再下载再点击IDM悬浮窗进行下载. [问题2:用IDM下载腾讯视频时一个视频被分成了许多小段] [ ...
- 乐影音下载器(视频下载器) 官方主页
乐影音下载器6.6(2019-7-5)能下载国内视频网站上面的视频. 你只需要复制视频网址就能自动帮你下载视频,这是你唯一需要做的! 下载:官方下载 百度网盘 ...
最新文章
- 国产光刻机正式宣布:今年出货150台
- config对象的使用及常用方法
- Spring整合Quartz实现持久化、动态设定时间
- OpenStack安装流程(juno版)- 添加镜像服务(glance)
- Oprofile工具的使用
- charset参数 sqluldr2_利用sqluldr2导出数据和sqlldr导入数据的方法
- ESP8266的AT指令集(基础 Wi-Fi)
- 微信小程序口令红包-语音识别
- HEVC/H265编码原理
- 青龙2.9及2.8Faker仓库互助教程
- 各种域名都代表什么意思?
- 智能网联车载终端渗透率提升之道
- cad管线交叉怎么画_CAD基础教程,CAD中你知道如何使用CAD角度怎么画吗?快来Get吧...
- mysql 订单表与商品表_数据库——订单表中有不同类型的商品,表的设计
- java protobuffer序列化_Java数据通讯中使用Googgle Protobuf 序列化与反序列化
- 判断当前手机设备的类型(安卓还是IOS)
- Cryptocell-712安全引擎概述
- 7-29 修理牧场 (25分)(PTA实验题)
- 分布式数据库架构--分库、分表、排序、分页、分组、实现
- VS2010完美卸载
热门文章
- 安徽省2022年首批次新材料申报评定工作通知
- 怎么设置win10的更新服务器未响应,Win10系统正在配置更新卡住不动怎么办
- 抖音APP双击点赞效果实现
- Deployment滚动升级
- 有商业构想没经验?这些创始人证明即使这样也能成功
- 2023山东国际养老服务业展览会/济南养老展/中国智慧养老展
- mysql 淘宝数据分析
- 新机开箱:黑鲨游戏手机2 Pro“吃鸡”实测
- 北大工学院计算机考研,北京大学(北大)工学院工业设计工程高分学姐考研经验分享...
- net-java-php-python-小学随班就读管理系统设计计算机毕业设计程序