deno js目前快要發布1.0。其實我已經安裝了,之前有一個批量下載視頻的需求,於是我就試了一下。我的需求是下載m3u8的視頻,這些視頻都是視頻流的模式播放,要下載m3u8無非是把地址中的ts片斷全部下載,然后合並,最后使用ffmpg轉成mp4文件。這里使用了一個C#的開源項目來下載,它已經幫我們做好了下載到合並視頻這一步,我們只要寫一個爬蟲,去抓視頻地址。
爬蟲這一步跳過,假設已經下載並保存成txt文件。我們都知道,js的異步比較難操作,為了更好利用帶寬,我不需要並行下載。因為2個,3個一起下載,速度是一樣的,只是速度均分了。我還不想寫處理異常的,出現問題,串行的就會停在那里,方便觀察。
deno還是沒有發布的,你所有要的信息,只能去官網上找api。在這個需求我們無非一個循環就可以解決:
const decoder = new TextDecoder("utf-8");
const data = Deno.readFileSync("download.txt");
const list = decoder.decode(data);
const downloadArray = list.split("\n");
const download = async (url) => {
const p = Deno.run({
args: ["./N_m3u8DL-CLI_Core", url]
});
return await p.status()
}
const forLoop = async () => {
for (let index = 0; index < downloadArray.length; index++) {
const item = downloadArray[index]
await download(item)
}
}
forLoop()