代码改变生活-使用You-Get下载bilibili的视频【一】

2023-05-16

本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/111307733

这篇分享是我在csdn的第100篇原创了,真的是时光飞逝啊;那 这次分享来说些下载B站视频相关的;

这是我写的 代码改变生活的 category,有兴趣可以看看;

个人博客:https://blog.csdn.net/zyooooxie

需求背景

我手机装了bilibili的app,有时候因为喜欢、学习的缘故,会缓存些视频;之前缓存格式为blv,我将其保存到电脑里,都是直接改blv为mp4【改文件格式】;现在发现 有些是两个:audio.m4s和video.m4s,我想保存 得先合并; 感觉好麻烦啊!!!

此外 想弄清楚哪个是哪个,重命名 也很麻烦!!!

so 我想找个途径,只需要输入视频url 或者某up的空间url,就可触发下载,保存;

那要怎么做呢?
找到了知乎,看到 有人推荐you-get;

you-get

看了些教程,感觉 实操不难。

在这里插入图片描述

you-get下载视频

【因为you-get 轮子都已经造好了,我就对着我自己的需求 做些简单的扩展】

细致说下 我的要求:

  1. 可下载单个视频,也可以多个视频批量下载,也可以下载某up的全部视频;
  2. 能够指定下载路径;
  3. 只下视频,不下弹幕;
  4. 尽可能下载高清的视频;

(我不是大会员,最高只能是1080p-80;我了解到的qn值:4k-120 \ 1080p60-116 \1080p+为112 \ 1080p-80 \ 720p60-74 \ 720p-64 \ 480p-32 \ 360p-16)

    def down_bilibili_videos(self, url, multipart=None, down_path=r'F:\bili'):
        """
        不用大会员cookies 下载视频
        :param url:地址 (此处为不带p=x的)
        :param multipart:a multipart video
        :param down_path: 保存路径
        :return:
        """

        if multipart is None:
            cmd = """you-get --format=dash-flv {} -o {} --no-caption""".format(url, down_path)

        else:
            os.chdir(down_path)
            new_dir = url.split('/')[-1]
            if not os.path.exists(new_dir):
                os.mkdir(new_dir)
            down_path = os.path.join(down_path, new_dir)

            cmd = """you-get --format=dash-flv --playlist {} -o {} --no-caption""".format(url, down_path)

        print(cmd)
        os.system(cmd)

【请留意:这是第一版,实际博主使用代码 在第二篇分享 , 第三篇分享】

说下我用的options:

  1. 高清画质:我选了–format=dash-flv,是因为 --format=dash-flv 和 --format=flv 我看都是1080p,但第二个 我家里电脑下载速度慢;
  2. –no-caption 不下载其他文件(字幕,歌词,弹幕。。。);
  3. -o 指定保存路径
  4. –playlist 是download all parts

在这里插入图片描述

获取某up主的所有视频BV号

在这里插入图片描述

上图 这个就是我的账号-未登录的时候; up空间

查看投稿,

在这里插入图片描述

查接口请求,

在这里插入图片描述

所以,可以写代码了;【因为我没投过稿,所以响应是没有bvid信息 ;{“code”:0,“message”:“0”,“ttl”:1,“data”:{“list”:{“tlist”:null,“vlist”:[]},“page”:{“pn”:1,“ps”:30,“count”:0}}},可以拿其他up主来试下】

    def get_UP_videos(self, up_mid, pagesize=25):
        url = 'https://api.bilibili.com/x/space/arc/search?mid={}&pn=1&ps={}'.format(up_mid, pagesize)

        # res = requests.get(url, headers=self.change_header)           # 伪造ua
        res = requests.get(url)
        bvid_list = res.json()['data']['list']['vlist']
        bvid = [bv['bvid'] for bv in bvid_list]

        count = res.json()['data']['page']['count']
        chu = math.ceil(count / pagesize)

        if chu != 1:
            for i in range(2, chu):
                new_url = 'https://api.bilibili.com/x/space/arc/search?mid={}&pn={}&ps={}'.format(up_mid, i, pagesize)
                new_res = requests.get(new_url)
                new_bvid = [bv['bvid'] for bv in new_res.json()['data']['list']['vlist']]
                bvid.extend(new_bvid)

        print(bvid)
        return bvid

既然已经知道了BV号,写个循环,直接把所有视频下载下来了。

【下载的视频 仅做学习收藏之用,请尊重原创】

后面还一篇是 you-get下载bilibili视频时 遇到的某些意外情况和解决方式

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

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

代码改变生活-使用You-Get下载bilibili的视频【一】 的相关文章

  • Yii搜索方法不起作用并且不与数据库中的数据进行比较

    您好 昨天我尝试了一种按日期时间创建搜索的方法 您可以看到链接 搜索任务 https stackoverflow com questions 23517282 yii search form by date from to criteria
  • Angular2 - 将 POST 与 angular-in-memory-web-api 一起使用

    我正在使用 Angular 2 的 angular in memory web api 到目前为止 我只使用了 GET 调用 而且运行良好 我要调用的 API 仅使用 POST 调用 因此我开始将 GET 调用重写为 POST 调用 但随后
  • 直接使用GET和POST有哪些漏洞?

    我想知道有哪些漏洞而直接使用 GET 和 POST 变量 即没有修剪和addslashes函数和mysql转义字符串之类的东西 我的问题是 我们还需要照顾什么在使用 GET 和 POST 时 有哪些类型的攻击比如SQL注入 一般来说 不仅限
  • 判断服务器是否支持resume get请求

    如何确定服务器是否支持恢复文件传输或获取请求 我的想法是设置标头以在字节 2 而不是 0 处启动 get 请求 如果给出正确的结果 则立即关闭 http 请求 但我想知道服务器对另一种探针的响应是否会向我透露此信息 要探测服务器的下载恢复功
  • 使用 QNetworkAccessManager 支持 https。运行时遇到 SslErrors

    我正在使用 QNetworkAccessManager 执行 https get 操作 我在运行时遇到 SSLErrors 经过一段时间的研究 我能够在安装 OpenSSL 后运行我的程序 我需要两个 dll libeay32 dll 和
  • jQuery 简单值与 .val() 出现问题

    我有以下代码 document ready function alert font someClass val 这里有一个Fiddle http jsfiddle net 2wwzD 1 用它 有谁知道为什么我无法返回字体标签的值 我是否假
  • PHP 在 URL 中使用 cURL 和 GET 请求

    我使用 cURL 而不是 file get contents 它在 URL 上运行良好 直到我使用 GET 请求变量代替下面 URL 上的城市 在以下方面使用 cURL 有效 url http www weather forecast co
  • 如何在参数 $_GET 中使用变量?示例:($_GET[$my_var])

    我正在开发一个WordPress插件 GET的参数根据用户的偏好通过Wordpress管理面板记录在数据库中 以下验证必须通过 GET 进行 这是函数 db url get option my get url returns the val
  • 具有大量输入数据的 REST 端点 (GET)

    我正在开发一个应用程序 我需要将对象列表传递到 REST 端点 该端点将执行一些计算并将结果返回给调用者 问题更多的是一个哲学问题 即如何处理这种情况 在 GET 请求中传递巨大的负载是一个坏主意 同时 它并不是真正的 POST PUT 请
  • PHP 使用带有标头的 cURL 和 GET 请求

    过去有一些更棘手的问题 如下所示 如何从 PHP 发送带有标头的 GET 请求 https stackoverflow com questions 19259490 how do i send a get request with a he
  • 我可以 POST 和 GET 到同一个 PHP 页面吗

    例如 我想知道是否可以在同一个 php 页面上进行 GET 和 POST 我想将数据发送到 http www example com my php 所以首先是 GET http www example com my php task dos
  • Servlet和路径参数如/xyz/{value}/test,如何在web.xml中映射?

    servlet是否支持url如下 xyz value test 其中值可以用文本或数字替换 如何在 web xml 中映射它 最好的选择是 URL 模式 xyz The 服务程序接口 https jakarta ee specificati
  • Ruby 中的参数化 get 请求?

    如何创建 HTTPGETRuby 中带参数的请求 这很容易做到 当你POSTing require net http require uri HTTP post form URI parse http www example com sea
  • 第301章

    Problem 访客打开网址website com i 133r534 213213 12312312但此网址不再有效 需要将其转发到website com 视频 133r534 213213 12312312 我尝试过的 在过去的几个小时
  • 尝试使用curl进行GET,发送的值允许为空

    我正在尝试使用curl 来执行一个简单的GET 其中包含一个名为redirect uri 的参数 被调用的 php 文件打印出 GET redirect uri 的空字符串 它显示 red 并且似乎没有发送任何内容 执行获取操作的代码 Ge
  • 如何在 WordPress 中获取帖子中的类别标题?

    假设我在 WordPress 中有一篇名为 Hello World 的帖子 并且我直接查看此页面 我将如何找到 Hello World 类别并显示它 Use get the category http codex wordpress org
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • AngularJS - 在等待数据/数据计算时加载图标

    我有一个简单的 Angular http get app factory countriesService function http return getCountryData function done http get resourc
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • 使 href(锚标记)请求 POST 而不是 GET? [复制]

    这个问题在这里已经有答案了 a href employee action Employee1 a 当我单击 Employee1 链接时 GET 请求将发送到服务器 我想让它 POST 而不是 GET 请求 有没有办法改变 href 的默认

随机推荐

  • sublime python环境(代码自动补全,调试python脚本等插件)

    用过sublime和pycharm xff0c 两款各有优缺点 xff0c 本人只是用来写一些脚本 xff0c 不开发大型项目 xff0c 选择轻量级的sublime编辑器 xff0c sublime需要根据开发语言 xff0c 自己安装一
  • 解决Vim插入模式下backspace按键无法删除字符的问题

    最近使用某个服务器编辑文件时 xff0c 快捷键i进入插入模式后 xff0c 下方不出现insert模式 xff0c 却可以插入字符 xff0c 但是backspace按键不能删除字符了 xff0c 最终google解决了此问题 xff0c
  • Kafka集群搭建详细步骤

    Kafka集群搭建 1 Kafka的安装需要java环境 xff0c cent os 7自带java1 6版本 xff0c 可以不用重新安装 xff0c 直接使用自带的jdk 即可 xff1b 如果觉得jdk版本太旧 xff0c 也可以自己
  • sublime text 3 打造python3环境(代码自动补全,运行程序,高亮显示)

    最近用python3用的比较多 xff0c 于是整理一下环境 xff0c 此博客仅记录下自己构造python3环境的过程 xff08 sublime text 3版本为3176 xff09 xff1a 安装的一些常用插件和配置过程如下 xf
  • 关于驱动程序的可移植性

    差不多所有的linux内核设备驱动都可以运行在不止一种处理器上 这仅仅因为设备驱动作者遵循一些重要规则 这些规则包括使用合适的变量类型 xff0c 而不是依赖于特定内存页大小 xff0c 提防外部数据的大小端模式 xff0c 设立合适的数据
  • centos7 安装mysql详细流程

    工作中经常需要安装mysql xff0c 每次安装的时候 xff0c 总是用不同的方法安装 xff0c 有错误就解决一下 xff0c 今天又重新装了一次mysql xff0c 记录下过程 xff0c 以后就用这种方式安装了 xff01 1
  • 10000端口无法运行

    1 查询端口 netstat ano findstr 10000 2 查询端口名 tasklist findstr 1572 3 关闭端口 taskkill pid 1572 F
  • Cmake编译-CMAKE_C_COMPILER-NOTFOUND解决

    第一次写博客 xff0c 其实就是记录一下从零开始的学习之路上遇到的各种 bug xff0c 一方面为了防止忘了犯过的错误 xff08 比如下一次 xff09 xff1b 另一方面为了从错误中汲取经历 分析 bug 之前 xff0c 记录一
  • libcurl官方实例代码(HTTP,FTP,上传下载等等)

    http curl haxx se libcurl c example html Some of the Examples simple HTTP simple c shows how to get a remote web page in
  • stm32驱动NRF24L01_原理+代码解析

    目录 概念 废话篇 xff08 24L01简介 xff09 引脚分配 工作模式 通信地址理解 xff08 个人疑难点 xff09 原理分析 寄存器赏析 寄存器操作指令 配置寄存器 xff08 CONFIG xff0c 位置 xff1a 0X
  • CSS实现进度条和订单进度条

    由于近期需要做一个订单进度条 xff0c 比较直观的反应当前订单的状态 xff0c css样式借鉴了网上的相关代码 xff0c 下面是效果图 xff0c 以及实现说明 一 说明 1 首先页面需要引入jQuery的相关js 一般页面都已经引入
  • ROS中CANopen的使用(1)

    ROS中CANopen的使用 xff08 1 xff09 今天终于实现了通过ros来控制无人车 xff0c 心情非常激动 xff0c 先简要记录 工作环境 工控机使用的Ubuntu18 02 xff0c can卡采用的innodisk的UC
  • 组合导航在ROS中的解析(2)

    工作环境 ubuntu18 02 xff0c 组合导航使用网口接口 xff0c ros使用melodic实现过程 include lt ros ros h gt include lt stdio h gt include lt stdlib
  • 上位机与下位机进行交互

    一 上位机与下位机 xff08 1 xff09 什么是上位机 上位机是指可以直接发出操控命令的计算机 这里使用的是winfrom xff08 2 xff09 什么是下位机 下位机是指直接控制设备获取状况的计算机 xff0c 一般是PLC 单
  • alist无法访问文件 提示“failed get link ”这样修复

    阿里网盘挂载alist无法访问文件 xff0c 提示 failed get link invalid X Device Id xff1f 34 Failed get link invalid X Device Id 34 是挂载阿里云网盘到
  • STM32F4应用-串口通信

    STM32F4应用 串口通信 1 基本介绍1 1 简介1 2 串口协议1 3 通信过程 2 配置过程2 1 引脚复用2 2 配置步骤2 3 例子 参考文献 1 基本介绍 1 1 简介 串口通信涉及USART TX RX xff0c GND三
  • 使用ADB命令来停用、卸载荣耀20 PRO的系统应用

    今年双十一买了部荣耀20 Pro手机 xff0c 某天感觉某个系统应用 系统更新 贼烦人 xff0c 过段时间就提醒一次 xff1b 我就被逼着上网搜有没有思路 xff0c 然后就打开了罪恶的大门 个人博客 xff1a https blog
  • Python笔记【二】

    之前分享过一次我在学习Python的笔记 xff0c Python笔记 一 xff0c 最近有些新的收获 xff0c 分享一下 xff1b 个人博客 xff1a https blog csdn net zyooooxie random sa
  • Fiddler 使用命令行和Filters

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 109020837 之前分享过一期 Fiddler断点 修改响应数据 xff0c
  • 代码改变生活-使用You-Get下载bilibili的视频【一】

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 111307733 这篇分享是我在csdn的第100篇原创了 xff0c 真的是