首页 > 其他分享 >Go设计模式学习准备——下载bilibili合集视频

Go设计模式学习准备——下载bilibili合集视频

时间:2022-10-03 14:33:27浏览次数:77  
标签:视频 get bilibili Go 设计模式 合集 下载

需求

前段时间面试,被问到设计模式。说实话虽然了解面向对象、多态,但突然被问到设计模式,还要说清解决什么问题,自己是有些懵的,毕竟实习主要工作是在原项目基础进行CRUD,自己还是没有深度思考,所以只能简单介绍自己知道的简单工厂模式等。趁着回家这段假期,充电学习一下Go设计模式!

学习资料

B站搜索一下,突然发现刘丹冰老师更新了设计模式课程。因为前面学习Go基础也是通过书籍和刘丹冰老师的视频学习。
设计模式链接如下:

由于家里网络和个人学习习惯,喜欢把视频下载下来学习,会更专注下来。
上次下载忘了写博客,这次专门记录一下,方便下次操作。

问题

you-get是下载利器,然而bilibili的合集下载会有些问题,具体原因没有仔细分析,个人怀疑是获取不了合集下的所有视频链接。所以本文通过八爪鱼进行获取视频链接,再通过python写脚本,you-get下载全部视频。

工具准备

个人是Mac电脑,具体软件或环境:

  • 八爪鱼软件
  • Python 3.8.9, 安装pandas包
  • you-get
    (以上环境都是以往安装的,网上也有不错的安装教程,这里就不赘述了。)

下载步骤

1. 八爪鱼将合集视屏的链接收集起来并下载

导入网页,进行采集

软件操作比较简单,主要步骤:

  • 建立新任务,即添加链接,点击开始采集
  • 根据网页分析结果进行采集和保存
  • 导出采集的视频链接数据为excel
    合集下视频链接

2. 对合集中所有视频链接进行读取和you-get下载

excel命名为bilibili.xlsx
下面是简单的脚本下载

#-- coding: utf-8 --

#  下载bilibili合集视屏
# 首先八爪鱼爬取网页所有视频地址,保存到excel
# 然后python读取excel文件,到字典中
# 最后循环便利,使用you-get下载

import pandas as pd
import os

def readExcel(file):
    df = pd.read_excel(file, sheet_name = "Sheet1") # sheet_name不指定时默认返回全表数据
    return df["title"]  # 返回表格中title列,此列存放视频的地址

def download(address): # 下载
    print(address) # 测试
    for i in address:
        print("-------")
        os.system("you-get -o ./bilibili "+ str(i)) # -o后面是保存路径,根据个人需求更改

if __name__ == "__main__":
    file_path = r"./bilibili.xlsx"
    videos = readExcel(file_path)
    download(videos)


总结

解决方案比较简单,也没考虑太多的优化。暂时够用,若有更好改进,欢迎评论和指出!

标签:视频,get,bilibili,Go,设计模式,合集,下载
From: https://www.cnblogs.com/Lusai/p/16750494.html

相关文章

  • ARC149D Simultaneous Sugoroku(并查集)
    ARC149DSimultaneousSugoroku有\(N\)个数\(X_i\)和\(M\)个数\(D_i\),对每个\(X_i\)询问依次对\(j=1\ton\)执行:如果\(X_i>0\)就\(-D_j\),如果\(X_i<......
  • Hugo+manpassant搭建博客
    前言参考如下:​​参考1:搭建博客​​​​参考2:部署到GitHub​​​​参考3:添加文章​​​​参考4:插入图片​​​​参考5:Markdown使用​​搭建步骤以管理员的身份打开cmd#choc......
  • 【Golang开发面经】百度(三轮技术面)
    文章目录​​写在前面​​​​笔试​​​​一面​​​​算法:判断是否为镜面二叉树​​​​算法:二叉树的俯视图​​​​一个协程被网络io卡住了,对应的线程会不会卡住?​​​​......
  • Golang:go-version一个对语义化版本进行解析、比较的库
    go-versionisalibraryforparsingversionsandversionconstraints,andverifyingversionsagainstasetofconstraints.go-versioncansortacollectionofv......
  • 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上
    @目录概述定义工作原理主要组件核心概念环境准备概述安装Kubekey创建K8S安装K9SOpenLB安装ArgoCD安装ArgoCDCLI从Git库中创建一个应用程序概述定义ArgoCD官网地址h......
  • 【Golang开发面经】深信服(两轮技术面)
    文章目录​​写在前面​​​​一面​​​​了解过切片和数组吗?有什么区别?​​​​那这样初始化可以吗?有什么问题?​​​​用过map吧?怎么遍历map?​​​​那遍历map是有序的......
  • Go的Struct结构体和(Json Form tag)
    Go的Struct结构体和(JsonFormtag)1.Struct1.1定义使用struct关键字可以定义一个结构体,结构体中的成员,称为结构体的字段或属性。typeMemberstruct{idin......
  • Go的[]rune 和 []byte的区别
    Go的[]rune和[]byte的区别[]rune和[]byte源码//byteisanaliasforuint8andisequivalenttouint8inallways.Itis//used,byconvention,todis......
  • 第十三篇: go运算符
    算术运算符运算符术语示例结果+加10+515-减10-55*乘10*550/除10/52%取模(取余)10%31++后自增,没有前自增a=0;a++......
  • 第五篇: GO-fmt格式“占位符”,iota
    golangfmt格式“占位符”动物园园长熊熊酱·2017-07-0609:07:13·1442次点击·预计阅读时间2分钟·8分钟之前开始浏览这是一个创建于2017-07-0609:07:13......