使用youtube-dl Stream创建表单数据

时间:2018-03-21 13:21:36

标签: node.js stream form-data youtube-dl

我想创建一个nodejs服务,下载youtube视频并将其作为表单数据发送到另一个服务。 我使用node-youtube-dl下载视频。

let YoutubeDl = require("youtube-dl");
let fs = require("fs");
let axios = require("axios");

function getVideo (req, res) {
  let videoName = "";
  let fw = undefined;

  let videoStream = YoutubeDl(req.query.url, ["--format=best[height<=480]"]);
  videoStream.on("info", (info) => {
    videoName = `${info.title}.mp4`;
    fw = fs.createWriteStream(videoName);
    videoStream.pipe(fw);
  });

  videoStream.on("end", () => {
    let fr = fs.createReadStream(videoName);
    let fd = new FormData();
    fd.append("file", fr);

    const request = {
      "method": "¨POST",
      "url": "anOtherServiceUrl",
      "data": fd
      };
    axios(request).then(response => res.send(response.data));
  });
}

上面的代码可以工作,但我不需要在磁盘上写文件。

我正在考虑实现Duplex或Transform流。但我不知道在调用_write时如何处理数据。

0 个答案:

没有答案