Пытаюсь получить размеры видеоклипов с youtube:
var async = require('async')
var request = require('request');
var moveInfoLink = "http://www.youtube.com/get_video_info?video_id=",
moveLinkSufix = "&asv=3&el=detailpage&hl=en_US",
movieWrapperLink = "*********";
var answer = '';
var formatList = new Array();
var movieLinks = new Array();
function getYouTubeAnswer()
{
return new Promise(function(resolve)
{
........
});
}
function parseYouTubeData()
{
...............
}
var getFileSize = function(item, callback)
{
if(item['resolution'].match(/x720|x360/))
{
request
(
{
method: 'HEAD',
url: item['url']
},
function(err, resp, body)
{
console.log(resp.headers['content-length']);
callback(false, resp.headers['content-length']);
}
);
}
}
console.log(`Запускаемся`);
getYouTubeAnswer().then(function()
{
parseYouTubeData();
console.log(`Получаем размеры файлов`);
async.each
(
movieLinks,
getFileSize,
function(err, result)
{ // Вот сюда управление почему-то не попадает
if(err)
{
console.log('Какая-то ошибка');
console.log(err);
}
else
{
console.log('Закончили работу');
console.log(result);
}
}
);
});
Задумка следующая:
1. Получаю данные о конкретном клипе.
2. Получаю все доступные для закачки его варианты.
3. Получаю размеры файлов для интересующих вариантов.
Все интересующие данные получаю корректно. Но, никак не могу понять, почему код в последней ф-ции внутри async не выполняется. Т.е., управление в эту ф-цию вообще не передается.
Что я упустил?
В итоге хотелось бы дождаться выполнения всех запрос, получающих размеры отдельных вариантов клипа, и потом сформировать общий отчет.