自动备份B站Up主最新视频到百度网盘的Python脚本详解

自动备份B站Up主最新视频脚本详解(Win和Linux有些不同)

前言:

次篇文章启发于某些大胆的UP主(老马)的多次被封,并被下架一些视频。有些人并不能及时观看到,故写一个脚本自动下载最新视频。

🌀1.准备环境

Win和Linux都需要:

  • Python3 运行需要
  • Selenium 操作浏览器(pip下载)
  • BeautifulSoup4 解析出最新视频链接(pip下载)
  • you-get 下载视(pip下载)
  • bypy 上传百度网盘(pip下载)
  • Chrome/FireFox/Edge… 一款主流浏览器(和其对应driver)

Win额外:

  • Git(非必须)

参考文档及链接

Selenium With Python使用Selenium with Python — Selenium Python Bindings 2 documentation (selenium-python.readthedocs.io)

BeautifulSoup4使用Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation (beautiful-soup-4.readthedocs.io)

you-get使用github.com

bypy使用github.com

🅰️2.编写主脚本(Python)
from selenium import webdriver
#此处以FireFox为例,需要安装浏览器,和对应的geckodriver,(浏览器不同需要不同的driver)
from selenium.webdriver.firefox.options import Options
#切换浏览器操作,例:from selenium.webdriver.Edge.options(Edge浏览器)
from bs4 import BeautifulSoup
import time
import subprocess
from datetime import datetimeprint('---------')#记录Log文件
def DoLog(isSuccess):dt = datetime.now()strformat =  dt.strftime("%Y-%M-%d-%H-%m")if isSuccess==True:logfile = open('./logs/'+strformat+'.txt','w')logfile.write('')logfile.close()else:logfile = open('./logs/'+strformat+'.txt','w')logfile.write('')logfile.close()# Chrome
chrome_options = Options()#chrome_options.add_argument('--headless')
#chrome_options.add_argument('--no-sandbox')
#chrome_options.add_argument('--disable-gpu')
#设置浏览器使用指定用户的数据,可以保持B站的登录状态
#具体的浏览器用户数据文件夹不同
#例:Edge的用户资料默认为C:\Users\XXXXX\AppData\Local\Microsoft\Edge\User Data
chrome_options.add_argument('user-data-dir=/home/wdnm/.mozilla/firefox/br20yo5m.default-release')#打开B站Up主的主页
browser.get('https://space.bilibili.com/316568752')browser.refresh()# 
browser.implicitly_wait(30)time.sleep(10)  # import timebrowser.refresh()time.sleep(15)#记录页面(非必要)
file = open('test.html','w')file.write(browser.page_source)file.close()#解析页面
soup = BeautifulSoup(browser.page_source, "html.parser")#找到标志位
latest_tag = soup.find('span', string='最多收藏')print(latest_tag)#寻找最新视频的链接
A_tags = latest_tag.find_all_next('a',limit=5)print(A_tags)realtag = A_tags[2]video_href = realtag['href']
video_title = realtag['title']#保持视频名,下次运行脚本时进行对比,一样的话(没更新)就不下载视频
lastfile = open('lastVideoName.txt','r')
context = lastfile.read()
lastfile.close()if context==video_title:print('')DoLog(False)
else:print('you-get')#执行副脚本(SHELL) subprocess.run(['bash','test.sh','https:'+video_href])# updatefile = open('lastVideoName.txt','w')updatefile.write(video_title)updatefile.close()DoLog(True)html = browser.page_source
print('start script')
browser.quit()
🅱️3.编写副脚本(shell)
#!/bin/bashecho 'HolyShit!------'
# 设置一个本地存放文件的路径
folder_name="Madugong_"$(date +"%Y-%m-%d_%H-%M-%S")
cd /root/Videosmkdir $folder_namecd $folder_name# you-get下载视频
echo $1
you-get $1
echo 'HolyShit!------'# -------------此处为去除下载文件名中的一些转义字符,需要自行处理
# -------------如果UP主发布的视频标题没有特殊字符则为非必要
for file in $(ls -p | grep -v /); do  new_name=$(echo $file | sed 's/[ ]//g;s/\[//g;s/\]//g')  mv ""$file"" ""$new_name""  
done
# -------------files=$(ls -p | grep -v /)# bypy上传----下面二选一
# ------------------单文件循环传(可以自定义上传后的名字)
for file in $files  
do  bypy upload $file $file  
done
# ------------------该文件夹下全部上传
bypy upload
⏲ 4.设置定时任务

Windows: Taskschduler

在这里插入图片描述

Linux:Crontab

30 * * * * python3 /root/xxx/Test.py
# 如果没有crontab没有环境变量,你可以指定python绝对路径或设置环境变量
🈂️ 5.运行脚本进行测试

这里使用CentOS的GUI进行测试,并测试成功

在这里插入图片描述

注意项:

1.在Window下要运行副脚本的话,需要指定subprocess以gitbash运行sh脚本,否则请将sh脚本翻译为bat脚本
subprocess.run(['C:\Program Files\git-bash.exe','test.sh','https:'+video_href])

(PS:转义脚本可以参照BashConverterUi (daniel-sc.github.io))

2.请尽量选择国内服务器进行百度网盘的上传,境外服务器上传太慢,会造成上传超时
3.Window下可以使用自带的TaskScheduler进行定时任务设置,Linux下则可以使用Crontab进行定时任务设置。

PS:

crontab的cron表达式只有5个单位和其他工具的设置不一样,参考Crontab.guru - The cron schedule expression editor进行设置

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

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

相关文章

中小企业运营难题:CRM系统为您解决!

​CRM如何帮助中小企业解决业务与团队之间的问题?它可以帮助企业获取潜在客户、数据储存管理、建立标准化流程、减少客户流失、促进客户沟通等。客户关系管理的核心理念要以客户为最主要的资源,提供全面的客户服务,满足客户要求,实…

【信息安全原理】——入侵检测与网络欺骗(学习笔记)

📖 前言:在网络安全防护领域,防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙,屏蔽源于外网的各类网络攻击。但是,防火墙由于自身的种种限制,并不能阻止所有攻击行为…

C++构建简单静态库实例(cmakelist)

一、开发实例 通过cmake构建静态开发实例如下: 1.1 代码目录 代码目录结构如下: 1.2 代码内容 1.2.1 CMakeLists.txt # CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 项目名称 project(mylib)# 添加源文件 set(SOURCE_FILESsrc/mylib

每日一题(LeetCode)----二叉树-- 二叉树的右视图

每日一题(LeetCode)----二叉树-- 二叉树的右视图 1.题目(199. 二叉树的右视图) 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,nu…

助力打造清洁环境,基于美团最新YOLOv6-4.0开发构建公共场景下垃圾堆放垃圾桶溢出检测识别系统

公共社区环境生活垃圾基本上是我们每个人每天几乎都无法避免的一个问题,公共环境下垃圾投放点都会有固定的值班时间,但是考虑到实际扔垃圾的无规律性,往往会出现在无人值守的时段内垃圾堆放垃圾桶溢出等问题,有些容易扩散的垃圾比…

Apache Flink连载(十八):Flink On Yarn运行原理及环境准备

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Flink On Yarn运行原理…

【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec

【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的?2.词向量是什么样子?3.词向量对应的热力图:4.词向量模型的输入与输出![在这里插入图片描述](https://img-blog.csdni…

IT安全:实时网络安全监控

了解庞大而复杂的网络环境并非易事,它需要持续观察、深入分析,并对任何违规行为做出快速反应。这就是为什么实时网络安全监控工具是任何组织 IT 安全战略的一个重要方面。 网络攻击和合规性法规是 IT 安全的两个主要驱动因素。同时,数据泄露…

卷积神经网络 反向传播

误差的计算 softmax 经过softmax处理后所有输出节点概率和为1 损失(激活函数) 多分类问题:输出只可能归于某一个类别,不可能同时归于多个类别。 误差的反向传播 求w的误差梯度 权值的更新 首先是更新输出层和隐藏层之间的权重…

Oracle数据updater如何回滚

1.查询update语句执行的时间节点 ; select t.FIRST_LOAD_TIME, t.SQL_TEXT from v$sqlarea t where to_char(t.FIRST_LOAD_TIME) > 2023-03-19/17:00:00 order by t.FIRST_LOAD_TIME desc;开启表的行迁移 alter table test enable row movement;3.回滚表数据到…

【架构】企业信息安全体系架构详解

企业信息安全体系架构来说,是包含技术、运维、管理3个层面。本文说的安全架构,主要集中讨论偏研发技术层面的安全架构。 安全性是软件研发技术体系,系统架构设计阶段的一个关键DFX能力,与可靠性、可服务性、性能等架构属性并列。由于安全性设计自身的特点,涉及到系统架构…

数据分析之词云图绘制

试验任务概述:如下为所给CSDN博客信息表,分别汇总了ai, algo, big-data, blockchain, hardware, math, miniprog等7个标签的博客。对CSDN不同领域标签类别的博客内容进行词频统计,绘制词频统计图,并根据词频统计的结果绘制词云图。…

CentOS 5/6/7 基于开源项目制作openssh 9.6p1 rpm包—— 筑梦之路

背景介绍 开源项目地址:https://github.com/boypt/openssh-rpms.git 该项目主要支持了centos 5 、6、7版本,针对使用了比较老的操作系统进行openssh安全加固,还是不错的项目,使用简单、一件制作,欢迎大家去支持作者。…

c语言-打印某种图案练习题

目录 前言一、题目一二、题目二总结 前言 本篇文章叙述c语言中打印某种图案的练习题,以便加深对c语言的运用和理解。 一、题目一 题目分析: 行与行之间的关系:第一行不进行空格,从第二行开始空一个空格,后面的空格式逐…

羊大师教你如何选择,适合老人饮用的羊奶?

羊大师教你如何选择,适合老人饮用的羊奶? 羊奶作为一种营养丰富的天然健康饮品,备受人们的青睐。而对于老年人来说,选择适合的羊奶品牌和产品并非易事。那么,如何选择适合老人饮用的羊奶呢?下面为您介绍几…

基于Python的城市热门美食数据可视化分析系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从XX点评APP采集北京市的餐饮商铺数据,利用数据挖掘技术对北京美食的分布、受欢迎程度、评价、评论、位置等情况进行了深入分析,方便了解城市美食店…

C# 操作非持久化内存映射文件

目录 写在前面 代码实现 进程A 进程B 进程C 调用示例 总结 写在前面 多个进程之间,通过操作未映射到磁盘上现有文件的内存映射文件,可以实现数据共享和类似进程间通讯的功能。以下示例展示了使用三个独立进程,先各自将布尔值写入内存…

cpp_07_类型转换构造_析构函数_深拷贝_静态成员

1 类型转换构造函数 1.1 why? 基本类型之间的转换,编译器内置转换规则:int -> double 类类型之间的转换,编译器不知道转换规则,需要用户提供:Cat -> Dog // consconv_why.cpp 为什么需要自定义转换 #includ…

记一次修复外网无法访问vmware里面的虚拟机的网络端口的问题

发现一个奇怪的网络问题,vmware里一个程序的端口通过vmnat穿透出来,然后这个端口就能够通过局域网被其他机器访问,但是另一个网段就没法访问这个端口。使用主机上的其他程序使用开启同样的端口,另一个网段的机器却可以访问。我想不…

HarmonyOS栅格布局---GridRow

题外话:栅格布局最初是在web 端应用的,为了解决一个系统在不同的屏幕,和不同的设备上可以不进行多次开发的问题,希望一次开发可以最大化的适配用户的不同类型设备,解决方案:将屏幕采用断点的方式进行布局分…