Go設計模式學習準備——下載bilibili合集影片

需求

前段時間面試,被問到設計模式。說實話雖然了解面向對象、多態,但突然被問到設計模式,還要說清解決什麼問題,自己是有些懵的,畢竟實習主要工作是在原項目基礎進行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)


總結

解決方案比較簡單,也沒考慮太多的優化。暫時夠用,若有更好改進,歡迎評論和指出!