2024最新python使用yt-dlp

news2024/11/29 23:28:25

2024最新python使用yt-dlp下载YT视频

  • 1.获取yt的cookie
    • 1)google浏览器下载Get cookies.txt LOCALLY插件
    • 2)导出cookie
  • 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file)
    • 1)使用Pycharm(2024.3)进行代码demo编写
    • 2)使用的python版本3.9.13
    • 3)Pycharm下载对应的第三方库yt-dlp
    • 4)使用命令进行下载
    • 5)复制cookie到根目录
    • 5)python代码
    • 6)运行测试
  • 3.注意事项
    • 1)配置
    • 2)yt-dlp配置
  • 4.demo项目github地址

1.获取yt的cookie

1)google浏览器下载Get cookies.txt LOCALLY插件

https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc
在这里插入图片描述

2)导出cookie

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推荐使用cookies方式,因为:
更安全,不需要存储密码
避免频繁登录导致的验证码问题
可以访问账号订阅的内容
支持年龄限制视频的下载
记住要定期更新cookies以确保其有效性。

2.yt-dlp下载yt-dlp的GitHub地址

1)使用Pycharm(2024.3)进行代码demo编写

在这里插入图片描述

2)使用的python版本3.9.13

在这里插入图片描述

3)Pycharm下载对应的第三方库yt-dlp

在这里插入图片描述
在这里插入图片描述

4)使用命令进行下载

pip install yt-dlp

在这里插入图片描述

提示pip警告
[notice] A new release of pip is available: 23.2.1 -> 24.3.1
[notice] To update, run: python.exe -m pip install --upgrade pip
更新就行了
python.exe -m pip install --upgrade pip

在这里插入图片描述

5)复制cookie到根目录

在这里插入图片描述

5)python代码

import yt_dlp
from pathlib import Path
import os


def yt_test(url):
    try:
        # 创建下载目录
        video_path = Path("downloads/video")
        audio_path = Path("downloads/audio")
        video_path.mkdir(parents=True, exist_ok=True)
        audio_path.mkdir(parents=True, exist_ok=True)

        # yt-dlp 基础配置
        common_opts = {
            'cookiefile': r'www.youtube.com_cookies.txt',
            'quiet': False,
            'no_warnings': False,
            'verbose': True,
            'proxy': 'http://127.0.0.1:10809',
            'socket_timeout': 30,
            'retries': 3,
            'nocheckcertificate': True,
            'prefer_insecure': True
        }

        print("开始下载视频...")
        print(f"使用cookies文件: {common_opts['cookiefile']}")

        # 视频下载选项
        video_opts = {
            **common_opts,
            'format': 'best[ext=mp4][height<=720]/best[height<=720]/best',
            'outtmpl': str(video_path / '%(title)s.%(ext)s'),
        }

        # 音频下载选项
        audio_opts = {
            **common_opts,
            'format': 'bestaudio[ext=m4a]/bestaudio',
            'outtmpl': str(audio_path / '%(title)s.%(ext)s'),
        }

        # 获取视频信息
        print("正在获取视频信息...")
        with yt_dlp.YoutubeDL(common_opts) as ydl:
            info = ydl.extract_info(url, download=False)
            title = info['title']
            duration = info['duration']
            thumbnail = info['thumbnail']

            print(f"视频标题: {title}")
            print(f"视频时长: {duration // 60}:{duration % 60:02d}")
            print(f"缩略图URL: {thumbnail}")

        # 下载视频
        print("\n开始下载视频文件...")
        with yt_dlp.YoutubeDL(video_opts) as ydl:
            ydl.download([url])

        # 下载音频
        print("\n开始下载音频文件...")
        with yt_dlp.YoutubeDL(audio_opts) as ydl:
            ydl.download([url])

        # 获取下载后的文件路径
        video_file = next(video_path.glob(f"{title}.*"))
        audio_file = next(audio_path.glob(f"{title}.*"))

        print("\n下载完成!")
        print(f"视频文件: {video_file}")
        print(f"音频文件: {audio_file}")

        return {
            "status": "success",
            "title": title,
            "duration": f"{duration // 60}:{duration % 60:02d}",
            "thumbnail": thumbnail,
            "video_path": str(video_file),
            "audio_path": str(audio_file)
        }

    except Exception as e:
        print(f"\n下载过程中出错: {str(e)}")
        return {"status": "error", "message": str(e)}


if __name__ == "__main__":
    # 测试URL
    test_url = "******.com/watch?v=_KFzaJSxBcY"

    print("测试")
    print("-" * 50)
    print(f"测试URL: {test_url}")
    print("-" * 50)

    result = yt_test(test_url)

    if result["status"] == "success":
        print("\n测试成功!")
        print("-" * 50)
        print(f"标题: {result['title']}")
        print(f"时长: {result['duration']}")
        print(f"视频文件: {result['video_path']}")
        print(f"音频文件: {result['audio_path']}")
    else:
        print("\n测试失败!")
        print("-" * 50)
        print(f"错误信息: {result['message']}")

6)运行测试

在这里插入图片描述

3.注意事项

1)配置

猫: 常用7890
V2: 常用 10808/10809
S: 常用1080

2)yt-dlp配置

common_opts = {
‘cookiefile’: r’cookies.txt’,
‘quiet’: False,
‘no_warnings’: False,
‘verbose’: True,
#和上方的端口进行对应
‘proxy’: ‘http://127.0.0.1:10809’,
‘socket_timeout’: 30,
‘retries’: 3,
‘nocheckcertificate’: True,
‘prefer_insecure’: True
}

4.demo项目github地址

https://github.com/unkownc/python_demo/tree/main
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis集成篇(一)

Spring 框架集成Mybatis 目前主流Spring框架体系中&#xff0c;可以集成很多第三方框架&#xff0c;方便开发者利用Spring框架机制使用第三方框架的功能。就例如本篇Spring集成Mybatis 简单集成案例&#xff1a; Config配置&#xff1a; Configuration MapperScan(basePack…

C51相关实验

C51相关实验 LED (P2 / 0~7)蜂鸣器 (P2^5)数码管 (P0 0~7 段 &#xff0c;P2 2~4 位)独立按键 &#xff08;P3^1 P3^0 P3^2 P3^3&#xff09;直流电机 (J47 5v 01~04)综合实验矩阵按键 (P1组 0~7)LED点阵 LED (P2 / 0~7) //功能&#xff1a;1.让开发板的LED全亮&#xff0c;2,…

C++语法·叭

阁下何不乘风起&#xff0c;扶摇直上九万里。 qi fei 目录 内存管理 分区介绍 1.栈区&#xff1a; 2.内存映射段&#xff1a; 3.堆&#xff1a; 4.数据段&#xff1a; 5.代码段&#xff1a; 补充&#xff1a; C内存管理&#xff08;简略回忆&#xff09; C内存…

数据库期末复习题库

1. Mysql日志功能有哪些? 记录日常操作和错误信息&#xff0c;以便了解Mysql数据库的运行情况&#xff0c;日常操作&#xff0c;错误信息和进行相关的优化。 2. 数据库有哪些备份方法 完全备份&#xff1a;全部都备份一遍表备份&#xff1a;只提取数据库中的数据&#xff0…

矩阵重新排列——rot90函数

通过 r o t 90 rot90 rot90函数可以将矩阵进行旋转 用法&#xff1a; r o t 90 ( a , k ) rot90(a,k) rot90(a,k)将矩阵 a a a按逆时针方向旋转 k 9 0 ∘ k\times90^\circ k90∘

挑战用React封装100个组件【001】

项目地址 https://github.com/hismeyy/react-component-100 组件描述 组件适用于需要展示图文信息的场景&#xff0c;比如产品介绍、用户卡片或任何带有标题、描述和可选图片的内容展示 样式展示 代码展示 InfoCard.tsx import ./InfoCard.cssinterface InfoCardProps {ti…

联通云服务器部署老项目tomcat记录

1.先在服务器上安装mysql和tomcat 2.tomcat修改端口 3.在联通云运控平台配置tomcat访问端口&#xff08;相当于向外部提供可访问端口&#xff09; 4.将tomcat项目放在服务器tomcat的webapps里面 5.在mysql里创建项目数据库&#xff0c;运行sql创建表和导入数据 6.在配置文…

Python 删除Word中的表格

在处理Word文档时&#xff0c;我们经常会遇到需要删除表格的情况。无论是为了简化文档结构&#xff0c;还是为了更新内容&#xff0c;删除表格都是一个常见的操作。但是通过手动删除不仅耗时&#xff0c;而且容易出错&#xff0c;本文将介绍如何使用Python通过编程删除Word中的…

讯飞语音转写WebApi 【JS语言】

讯飞语音转写 API 文档 文档地址&#xff1a;https://www.xfyun.cn/doc/asr/ifasr_new/API.html 看到没有 js 版本的 demo&#xff08;音频流模式&#xff09;&#xff0c;所以就搞了一个分享出来 在 React Native 运行环境下测试有效。 1、生成 signa import axios from a…

c++基础开发环境vscode+mingw-w64

c开发需要的基础有两个&#xff1a;编译环境&#xff0c;开发环境。 最简单的编译环境可以用gcc&#xff0c;cl&#xff0c;clongllvm; 开发环境最简单直接用文本编辑器就可以。 但是实际开发都会用ide来做&#xff0c;现代的ide即有开发环境可以写代码&#xff0c;自动补全&am…

DBA面试题-1

面临失业&#xff0c;整理一下面试题&#xff0c;找下家继续搬砖 主要参考&#xff1a;https://www.csdn.net/?spm1001.2101.3001.4476 略有修改 一、mysql有哪些数据类型 1&#xff0c; 整形 tinyint,smallint,medumint,int,bigint&#xff1b;分别占用1字节、2字节、3字节…

LSTM卫星轨道预测(一)

一.多文件预测 代码详细解析 1. 文件读取与数据处理 功能 从 .sp3 文件中读取卫星轨迹数据。提取包括 Satellite_ID, X, Y, Z 等字段的信息。计算派生特征&#xff08;如速度和加速度&#xff09;&#xff0c;便于后续建模使用。 主要函数&#xff1a;extract_sp3_data(fil…

如何通过智能生成PPT,让演示文稿更高效、更精彩?

在快节奏的工作和生活中&#xff0c;我们总是追求更高效、更精准的解决方案。而在准备演示文稿时&#xff0c;PPT的制作往往成为许多人头疼的问题。如何让这项工作变得轻松且富有创意&#xff1f;答案或许就在于“AI生成PPT”这一智能工具的广泛应用。我们就来聊聊如何通过这些…

格网法计算平面点云面积(matlab版本)

1、原理介绍 格网法计算平面点云面积&#xff0c;其思想类似高中油膜法计算面积。其将点云投影到水平面&#xff0c;再将点云划分成尺寸相同的格网。最后&#xff0c;统计格网内包含点的数量number&#xff0c;那么可利用如下公式计算得到点云的面积&#xff1a; Aeranumber*L…

无代码实现可视化GIS+模型+三维

现在的工具是越来越方便了&#xff0c;本来不是做前端的。可以节省很多的人力和时间&#xff0c;更快的搭建自己想要的可视化大屏&#xff0c;看例子 主要由三维的gis地图和模型加上二维的数据表格分析来实现这个可视化界面。 gis地图的设置 每一个gis都要设置世界远点&#x…

Jmeter中的监听器

3&#xff09;监听器 1--查看结果树 用途 调试测试计划&#xff1a;查看每个请求的详细信息&#xff0c;帮助调试和修正测试计划。分析响应数据&#xff1a;查看服务器返回的响应数据&#xff0c;验证请求是否成功。检查错误&#xff1a;识别和分析请求失败的原因。 配置步骤…

kafka进阶_3.消费消息

文章目录 一、消费消息概览1.1、消费示例代码1.2、消费过程 二、消费者组2.1、push & pull2.2、消费者组 三、调度器Coordinator四、消费者分配策略4.1、引言4.2、分配基本流程4.3、分配策略4.3.1、轮询分配策略4.3.2、轮询分配策略 五、消费偏移量5.1、起始偏移量5.2、指定…

用VC2019+MFC 创建一个DLL封装MD工业相机库然后用EXE调用这个相机库采图并且显示

主要描述&#xff1a; 用VC2019MFC 创建一个DLL封装MD工业相机库&#xff0c;再建一个EXE调用这个相机库采图并且显示。 先创建库工程&#xff1a; 新建一个库工程&#xff0c; 创建完成&#xff0c;添加一个DllFunction.h头文件&#xff0c;一个DllFunction.cpp 源文件 拷贝…

ODB 框架

目录 概述 基本工作原理 映射C对象到数据库表 从数据库中加载对象 持久化C对象到数据库 ODB常用接口 表创建预处理 #pragma db Object table 数据表属性 id auto column&#xff08;“xxx”&#xff09; type("xxx") unique index null default&…

ModuleNotFoundError: No module named ‘_ssl‘ centos中的Python报错

1、检查系统有没有openssl&#xff0c;有的话&#xff0c;就是python安装时没有指定openssl openssl version&#xff0c;有输出版本号就有&#xff0c;没有的话&#xff0c;需要手动安装 下载地址 参见https://www.openssl.org/&#xff0c;包括以下版本&#xff1a; https:/…