javascript - javascript 脚本中的 youtube-dl 错误

标签 javascript jquery youtube-api

我在 javascript 脚本中有 youtube-dl,试图下载数百个字幕文件。我收到错误

我有一个 JavaScript 脚本。我正在尝试使用 youtube-dl 下载 ~800 个字幕文件,但出现超时错误,并且没有下载文件。对于我的电脑来说,它的移动速度似乎太快了。我需要帮助暂停任务,直到下载完成,然后开始下一个任务。

它在视频数组中处理的数据非常少。

var json2csv = require('json2csv');
var fs = require('fs');
var youtubedl = require('youtube-dl');

// var fields = ["youtube_id", "title", "date", "duration", "captioned", "views"];

var videos = [
// More objects ~800+
];
 for (i = 0; i < videos.length; i++) { 

    var v = videos[i];
    var url = 'https://youtu.be/';
    var options = {};

    if (v["captioned"] == 'No') { 
      var url = url + v["youtube_id"];

      console.log(url);
      var options = {
        auto: true,
        all: false,
        lang: 'en',
        cwd: __dirname + "/auto_generated_captions",
      };
              youtubedl.getSubs(url, options, function(err, files) {
                console.log("did i get here?");
                if (err) throw err;
                console.log('subtitle files downloaded:', files);
              });

    };
  }; 

最佳答案

你是对的。您同时下载了太多数据。尝试使用像bluebird这样的promise库来控制并发流:

var json2csv = require('json2csv');
var fs = require('fs');
var youtubedl = require('youtube-dl');
var promise = require('bluebird');

// var fields = ["youtube_id", "title", "date", "duration", "captioned", "views"];

var videos = [
  // More objects ~800+
];

promise
  .map(videos, function (v) {
    var url = 'https://youtu.be/';
    var options = {};

    if (v["captioned"] == 'No') {
      var url = url + v["youtube_id"];

      console.log(url);
      var options = {
        auto: true,
        all: false,
        lang: 'en',
        cwd: __dirname + "/auto_generated_captions",
      };

      return new Promise(function (resolve, reject) {
        youtubedl.getSubs(url, options, function (err, files) {
          console.log("did i get here?");

          if (err) {
            reject(err);
          } else {
            console.log('subtitle files downloaded:', files);
            resolve(files);
          }
        });
      });
    } else {
      // return a promise for this case
    }
  }, { concurrency: 5 })
  .then(function (results) {
    console.log(results);
  });

关于javascript - javascript 脚本中的 youtube-dl 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540619/

相关文章:

javascript - 要求未定义nodejs

javascript - "Expected an assignment or function call and instead saw an expression."- 不必要的console.log?

javascript - jQuery .ajax() 405(方法不允许)/跨域

c# - 使用C#表单应用程序和youtube-v3-api在YouTube实时流聊天中插入评论

javascript - 使用 Javascript 在 Youtube APi 中上传视频

javascript - 使用 Javascript 持久化数据

javascript - printThis.js 有时不打印内容

jquery - 如何使用jquery向元素添加渐进式ID?

firefox - Firefox插件SDK-如何从youtube.com上的youtube播放器中检索 “currentTime”?

javascript - 将 json 对象数组解析为特定格式