Подскажите метод, которым можно было бы получать имена сохраняемых файлов на Node js

Рейтинг: 0Ответов: 1Опубликовано: 10.03.2023

Имеется код бота, который сохраняет отправляемое изображение, которое потом требуется обработать с помощью tesseract.js.

Проблема в том, что функция bot.downloadFile(photoId, "./"); сохраняет файлы каждый раз с разными именем. Т.е. 'file_0.jpg, file_1.jpg' и т.д. Как это исправить, понятия не имею. Из-за этого не могу нормально дальше эти файлы прогнать через tesseract.

Код бота:

import { createRequire } from 'module'
const require = createRequire(import.meta.url);

const TelegramBot = require('node-telegram-bot-api');

const bot = new TelegramBot(token, {polling: true});

const path = require('path')

import { createWorker } from 'tesseract.js';

const fs = require("fs");

bot.on('photo', async (msg) => {
let userId = msg.from.id;
            // Get the photo file_id
            let photoId = (msg.photo[msg.photo.length-1].file_id);

            console.log(photoId);
            // Download the photo (file_id, folder path
            bot.downloadFile(photoId, "./");


    const worker = await createWorker({
        logger: m => console.log(m)
    });

    (async () => {
        await worker.loadLanguage('rus');
        await worker.initialize('rus');
        const { data: { text } } = await worker.recognize(`file.jpg`);
        console.log(text);
        fs.writeFileSync("ts.txt", text)

        await worker.terminate();
    })();

   

})

Ответы

▲ 0

Нашёл решение, необходимо в downloadFile запихать fs.

await bot.downloadFile(photoId, downloadFolder).then(function (filePath) {

    let absoluteFile = downloadFolder + '/' + 'img.jpg';

    fs.rename(filePath, absoluteFile, function (err, response) {

        console.log(absoluteFile);

        if (err) {
            return console.log(err);
        }

        console.log('File has been renamed');

        bot.sendMessage(chatId, 'Файл сохранен');

    });
});