Methods
(async) WDwloadDlp(url, fp, optopt) → {Promise}
- Description:
下載video檔案,預設轉mp4,核心調用yt-dlp,只能用於Windows作業系統
yt-dlp: https://github.com/yt-dlp/yt-dlp
- Source:
Example
import fs from 'fs'
import WDwloadDlp from './src/WDwloadDlp.mjs'
async function test() {
//url
let url = `https://www.youtube.com/watch?v=jfXg5ZslKg4` //youtube mp4
// let url = `https://www.youtube.com/watch?v=fTk0mc946dk` //youtube webm
// let url = `https://www.youtube.com/watch?v=lKoCiBVKQaQ` //youtube webm
// let url = `https://www.bilibili.com/video/BV1JZ421x7q8/?spm_id_from=333.1073.channel.secondary_floor_video.click` //bilibili
// let url = `https://ooo.mp4` //直接提供mp4檔
// let url = `https://cdn.jsdelivr.net/npm/w-demores/res/video/aigen_hls/playlist.m3u8`
//fp
let fp = './test.mp4'
//funProg
let funProg = (prog, nn, na) => {
console.log('prog', `${prog.toFixed(2)}%`, nn, na)
}
//WDwloadDlp
await WDwloadDlp(url, fp, {
clean: true, //單一程序執行時, 事先清除之前暫存檔, 減少浪費硬碟空間
funProg,
})
//len
let len = fs.statSync(fp).size
console.log('len', len)
console.log('done:', fp)
}
test()
.catch((err) => {
console.log('catch', err)
})
// prog 0.49% 1 99
// prog 5.05% 4 99
// ...
// prog 99.00% 98 99
// prog 100.00% 99 99
// len 22394508
// done: ./test.mp4
Parameters:
| Name | Type | Attributes | Default | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
url |
String | 輸入網址字串,支援網站種類詳見yt-dlp |
|||||||||||||||||
fp |
String | 輸入儲存video(*.mp4)檔案路徑字串 |
|||||||||||||||||
opt |
Object |
<optional> |
{}
|
輸入設定物件,預設{} Properties
|
Returns:
回傳Promise,resolve回傳成功訊息,reject回傳錯誤訊息
- Type
- Promise
(async) autoDownloadFiles() → {Promise}
- Description:
自動定位yt-dlp.exe與ffmpeg.exe,若無檔案則自動下載,回傳各執行檔的絕對路徑
yt-dlp.exe依序偵測當前工作路徑的yt-dlp/與node_modules/w-dwload-dlp/yt-dlp/,皆無時, 代表安裝時npm封鎖scripts致postinstall未執行,故自動調用downloadFiles重新下載
ffmpeg.exe由w-ffmpeg之autoDownloadFiles負責偵測與下載,故基於本套件開發之套件或專案, 僅須調用本函數即可備齊全部執行檔,無須各自再調用w-ffmpeg之autoDownloadFiles
供w-dwload-dlp自身與其他依賴w-dwload-dlp的套件調用,無須各自實作偵測與下載邏輯
因yt-dlp.exe與ffmpeg.exe只能用於Windows作業系統,故調用前須自行檢核作業系統
- Source:
Example
import autoDownloadFiles from 'w-dwload-dlp/src/autoDownloadFiles.mjs'
async function test() {
//autoDownloadFiles, 無yt-dlp.exe或ffmpeg.exe時自動下載, 下載失敗則reject
let { fpExeDlp, fpExeFfmpeg } = await autoDownloadFiles()
console.log('fpExeDlp', fpExeDlp)
// fpExeDlp D:\xxx\node_modules\w-dwload-dlp\yt-dlp\yt-dlp.exe
console.log('fpExeFfmpeg', fpExeFfmpeg)
// fpExeFfmpeg D:\xxx\node_modules\w-ffmpeg\src\ffmpeg.exe
}
test()
.catch((err) => {
console.log('catch', err)
})
Returns:
回傳Promise,resolve回傳執行檔路徑物件,內含fpExeDlp與fpExeFfmpeg兩絕對路徑字串,reject回傳錯誤訊息
- Type
- Promise