2016-08-20 3 views
0

Я пытаюсь построить скребок для загрузки потокового видео и и сохранять их в частном случае облачного использования NightMareJs (http://www.nightmarejs.org/)Скачать видеопотоки с удаленного сервера с помощью NightmareJs

Я видел документацию, и это показывает, как загрузить простой файлы, как это -

.evaluate(function ev(){ 
    var el = document.querySelector("[href*='nrc_20141124.epub']"); 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", el.href, false); 
    xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
    xhr.send(); 
    return xhr.responseText; 
}, function cb(data){ 
    var fs = require("fs"); 
    fs.writeFileSync("book.epub", data, "binary"); 
}) 

- на основе SO пост здесь ->Download a file using Nightmare

Но я хочу, чтобы загрузить видео потоков с использованием NodeJs потоков асинхронного API. Есть ли способ открыть поток из удаленного url и передать его в локальный/другой удаленный перезаписываемый поток, используя NodeJs встроенный поток apis

ответ

0

Вы можете проверить, отправляет ли сервер «Accept-Ranges» (14.5) и «Content -Length "(14.13) с запросом HEAD к этому файлу, затем запросите более мелкие куски файла, который вы пытаетесь загрузить, используя заголовок Content-Range (14.16) и напишите каждый фрагмент в целевой файл (вы можете используйте режим добавления, чтобы уменьшить управление файловым потоком).

Конечно, это будет довольно медленно, если вы запросите очень маленькие куски последовательно. Вы можете создать пул запросов (например, 4) и только записать следующий правильный фрагмент в файл (так что другие запросы не будут брать на себя будущие куски, если они уже загружены).

+0

Это только описание подхода. Если у вас есть рабочий код, ответьте на этот вопрос самостоятельно. –