Кукольник Nodejs Вывести несколько параллельных строк прогресса в консоли js узла - PullRequest
0 голосов
/ 08 декабря 2018

Я создал простую программу для автоматической загрузки файлов на сайт.Я использую Puppeteer для просмотра без входа в систему и загрузки.Я прислушиваюсь к изменениям в панели загрузки, вводя наблюдателя мутаций в dom и регистрируя его в консоли.

const puppeteer = require('puppeteer');
var path = require('path');
var glob = require("glob");

async function upload(file_path, file_index) {
    // launch puppeteer
    const browser = await puppeteer.launch({
        headless: true,
    });
    const page = await browser.newPage();

    // some code here to navigate then upload to the website
    /*****************************************************

    UPLOADING CODE HERE...
    1. UPLOAD FILE
    2. THEN LOG THE PROGRESS TO CONSOLE
    there is some code here but i will not include it here to make it short

    ******************************************************/

    // everytime a change has been log in console
    await page.on('console', async (response) => {

        //fetch the progress percentage
        var percent = await page.$eval('#progressbar', el => el.innerText);

        // log the progress
        console.log('File ' + file_index + ' Percent uploaded: ' + percent)

    });

}

// lets say there are 5 files in the server
glob("files/*.mp4", function(er, files) {

    files.forEach(function(file, video_index) {
        upload(file, video_index);
    });

});

Загрузка работает отлично, но проблема заключается в выводе прогресса в консоль.Моя программа продолжает писать новую строку, а не создавать параллельные строки прогресса.Допустим, я буду загружать 5 файлов асинхронно.Программа выводит следующее:

Что я хочу видеть, это:

enter image description here

1 Ответ

0 голосов
/ 08 декабря 2018

Я нашел решение, но не думаю, что это идеальный подход.Не стесняйтесь делиться своими идеями.Я буду хранить данные в массиве, а затем выводить массив для каждого изменения мутации.Или сохраните его в буфере.

Редактировать.Я нашел решение на github.

https://github.com/ivanseidel/node-draftlog

...