一個基於多用戶的抓取視頻下載系統 PhaGrabVideo
- Video
- You-get
- MultiUser
- System
設計之初
最近工作中有個需求,大概是抓取網站中的視頻下載並自助上傳到自己的視頻管理後臺,其實就是爬蟲,簡單的做了一個後臺,用戶在後臺添加 url ,在一臺機器上部署定時任務,定時掃描表裏添加的 url 並下載,下載成功保存到對應的目錄下。另有一個定時任務,異步進行上傳,Curl 上傳到自己的上傳服務器。下載的腳本採用了一個開源的視頻下載工具 you-get。支持大概幾十家國內外的視頻網站的抓取。
在開發的過程中遇到幾個問題:
- 定時任務執行週期內未執行完成重複執行問題
- 下載只能部署一臺機器,不能多臺部署
對於第一個問題,我已經在之前寫的一篇文章《crontab 解決週期內未執行完重複執行問題》中給出了幾種常用的解決辦法
對於第二個問題,不能多個下載端同時部署,即一個後臺只能對於一個下載端,雖然對於工作來說,這樣已經可以滿足需求,不需要多端部署,否則維護反而麻煩,但是我依然想要把它儘可能做成一個通用的可多端部署的視頻抓取系統。基於此,在這基礎上重新設計了基於多用戶管理的視頻下載系統–phaGrabVideo
架構設計
下面是基本的架構設計圖
該系統分爲客戶端(client)和服務端(server),客戶端和服務器完全分離
客戶端採用 python 腳本編寫,方便部署,通過 api接口來獲取 url 信息以及日誌上報
服務端(server)包括4部分: (User)用戶、(Admin)後臺管理、(server Api)Api接口、DB(數據庫)
一個用戶對應一個客戶端,用戶在首先在 Admin Manager (後臺)註冊賬號之後會給用戶分配一個 Token,用戶將下載器的腳本部署到服務器,會要求填寫你的用戶名以及token,客戶端驗證成功後,將下載器部署成功。下載器根據用戶名和 token 會定時輪詢 url 這張表,查找該用戶添加的 url ,並下載到本地的文件夾下。
這樣設計的好處是各個用戶之間獨立部署,可實現多個下載端同時下載而不會產生衝突。
應用程序設計
服務端:
整體採用 php + Apache + Mysql 的開發環境。後臺界面採用 Bootstrap 設計,簡潔美觀。
功能包括:
個人中心、賬號管理、角色管理、視頻來源、Url管理、視頻管理、日誌管理URL管理:
客戶端:
採用 python 編寫,通過 api 接口和服務端交互。定時查找並下載
其他
關於 you-get 的安裝,請參考之前寫的文章《you-get 安裝》
項目地址
https://github.com/phachon/PhaGrabVideo
歡迎提交代碼和意見
Thanks…
Create By [email protected]