Global

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
Name Type Attributes Default Description
clean Boolean <optional>
false

輸入預先清除暫存檔布林值,預設false

funProg function <optional>
null

輸入回傳進度函數,傳入參數為prog代表進度百分比、nn代表當前已下載ts檔案數量、na代表全部須下載ts檔案數量,預設null

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