python下载视频you_python 视频下载神器(you-get)

2023-05-16

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()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python下载视频you_python 视频下载神器(you-get) 的相关文章

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • robomaster_Robomaster视觉教程(一)谈谈搞视觉应该会的C++知识

    以下是整理出的视觉入门opencv学习的C 43 43 知识点总结 xff0c 毕竟之后主要要讲的是计算机视觉方面的东西 xff0c 其中的概念只是点到为止 xff0c 希望大家可以将模糊的概念百度一下 xff0c 最好也能总结一下 xff
  • 最值交换c语言oj,九度OJ 1053:互换最大最小数 (基础题)

    时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 提交 xff1a 6613 解决 xff1a 2676 题目描述 xff1a 输入一个数n xff0c 然后输入n个数值各不相同 xff0c 调换数组中
  • mac安装anaconda_Anaconda3安装后 无法在终端使用 conda命令的解决方法

    好久不用Anaconda3 xff0c 突然没办法在终端中使用conda命令 xff0c 报错是 command not found 尝试搜索了一些解决方法 xff0c 有的虽然奏效但是退出Terminal再打开后命令再次失效 最终使用以下
  • python获取windows进程cpu占用率_用Python计算进程cpu使用率

    经过进一步的研究 xff0c 我找到了解决办法 在 因此 xff0c 为了获得进程cpu使用率的百分比 xff0c 我们需要一些参数 xff1a 1 系统时间 为了计算这个 xff0c 我们需要用户模式时间 xff0c 内核模式时间和 空闲
  • Proxmox生产实践点滴:硬件篇

    总体上来说 xff0c Proxmox VE并不挑剔硬件 xff0c 其目前使用的Linux内核来自ubuntu 16 04 LTS发行版 xff0c 内核版本号为4 4 x 应该算是相当新的了 xff0c 确保对新硬件的兼容性 xff0c
  • Python基础——面向对象

    面向过程适合思考小规模事情 面向对象适合思考大规模的事情 思维 xff1a 先判断事情是简单的 小规模的 xff0c 还是复杂 的 xff0c 大规模的 xff0c 然后选择不同的思维方式 遇到复杂问题 xff0c 先从问题中找名词 xff
  • fdisk找不到u盘_U盘装电脑系统两个常见问题及解决方法

    如今电脑装机 xff0c 不管是电脑店还是用户自己装机 xff0c 估计95 以上是选用U盘一键装机 xff0c 网上流行的老毛桃 大白菜 小白等等很多 xff0c 这些系统大同小异 xff0c 运行装机系统 xff0c 然后根据自己需要
  • c++ gdi修改dpi_SV DPI-C接口学习心得

    1 是什么 xff1f xff1f DPI Direct Programming Interface xff0c 全称直接编程接口 xff0c 是SV与其它语言 C C 43 43 交互的接口 xff0c 基本上是唯一接口了 2 为什么 x
  • linux系统盘快照回滚,使用Btrfs对Linux系统进行快照回滚方法

    Btrfs 又被称为 Butter FS Better FS 或 B Tree FS 是由 Oracle 于 2007 年开始设计 开发的一个现代文件系统 它于 2009 年开始便被合并入 Linux 2 6 29 内核 Btrfs 基于
  • vi删除选中内容_linuxvi怎么编辑器删除多行与复制命令

    vi vim是什么 Linux世界几乎所有的配置文件都是以纯文本形式存在的 xff0c 而在所有的Linux发行版系统上都有vi编辑器 xff0c 因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了 xff0c 非常方便 vi就是一
  • ios sdk 穿山甲_GitHub - ArthurKnight/flutter_ad_pangolin_plugin: iOS flutter 穿山甲插件

    Pangolin 前言 在使用本插件前请认真 xff0c 仔细阅读穿山甲官方文档 本插件将尽量保留SDK内容和各API相关内容 xff0c 如出现在官方文档以外报错信息可以留言issue 或通过文末联系方式联系作者 注明来意 针对你可能会遇
  • @Async 使用

    64 Async 用于异步式执行场景 作用于类和方法上 方法上使用较为常用 在Application类上加上 64 EnableAsync启动异步注解 然后在需要异步的方法或类上加上 64 Async就可以异步执行了 64 Async 使用
  • 七大设计原则

    1 开闭原则 xff08 Open Closed Principle xff0c OCP xff09 尽量通过扩展来面对需求的更改或者系统的变化 xff0c 尽量不要对原有内容修改 xff08 对新增开 xff0c 对修改闭 xff09 优
  • java 多线程的6种状态

    关于线程的生命周期 xff0c 网上书上说法不一 xff0c 难以统一 xff0c 本篇做一个总结 xff1a java lang Thread State 枚举类中定义了六种线程的状态 xff0c 可以调用线程Thread中的getSta
  • @Configuration 注解

    类名上加如入 64 Configuration 注解使得该类成为Spring的配置类 xff0c Spring在初始化时会扫描并加载该类 xff0c 通常搭配 64 Bean注解使用
  • Proxmox监视器

    Proxmox使用KVM虚拟机技术 在KVM虚拟机里 xff0c 所有部件都不是真实的物理部件 xff0c 而是用软件模拟出来的 CPU 内存 硬盘 网卡等等 xff0c 全部都经过了Qemu软件包装 用户一方面可以利用Qemu软件提供的监
  • @Bean注解

    64 Bean注解加在方法上使得对象交给Spring容器管理 xff0c 返回对类型为交给Spring容器管理的类名 xff0c 方法名为IoC的id xff0c 也可以指定id span class token comment 指定该cl
  • MarkDown基本语法

    标题 xff1a 一级标题为 xff0c 二级标题为 xff0c 以此类推 xff0c 最多6级标题 注意 后面有个空格 字体 xff1a 加粗 加粗字体 实际效果 xff1a 加粗字体 斜体 斜体 实际效果 xff1a 斜体 斜体加粗 斜
  • 没有dpkg命令_ffsend:在命令行中通过 FireFox Send 分享文件 | Linux 中国

    在过去我们已经写了多篇有关安全分享这个话题的文章 xff0c 今天我们甚至还将继续讨论这个话题 xff0c 我们将介绍名为 ffsend 的工具 Vinoth Kumar Linux 用户偏爱使用 scp 或 rsync 来进行文件或目录的
  • python下载视频you_python 视频下载神器(you-get)

    you get是github上python的一个开源库 https github com soimort you get xff0c 使用you get你只需要取得视频所在网页链接地址就可以很轻松的下载下来 xff0c 目前you get所