@Glebkiselev11
Vue.js разработчик

Как в express.js организовать скачивание аудио файла в виде потока из telegram, используя axios?

У меня есть обработчик (middleware), который на вход получает ID аудио файла из telegram.

router.get('/api/track/:id', async(req, res) => {
  // Создаем бота использую плагин Telegraf с прокси агентом
  const telegram = new Telegram(token, { agent });
  const fileId = req.params.id;

  let url; // Сюда запишем ссылку
  try {
    url = await telegram.getFileLink(fileId); // Получаем ссылку на файл
  } catch (error) {
    console.log(error);
  }

// ...
}


Дальше я хочу этот файл начать скачивать по ссылке как поток и отдавать этот поток на клиентскую (spa) часть.

res.set('content-type', 'audio/mp3');
res.set('accept-ranges', 'bytes');

  try {
    let audioFile = await axios({
      url, // Ссылка на файл в телеграме
      method: 'GET',
      responseType: 'stream'
    })

    audioFile.data.pipe(res)

    audioFile.on('error', err => {
      res.statusCode = 500
      res.end("Server Error")
      console.error(err)
    });

    audioFile
      .on('open', (chunk) => {
          console.log("open")
         res.write(chunk)
      })
      .on('close', () => {
          console.log("close")
          res.end()
      })

    res.on('close', () => {
      audioFile.destroy();
    })

  } catch (error) {
    console.log(error)
  }


И ловлю ошибку: read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:111:27

Для телеграма я использую прокси и он работает.
В чем проблема, где я допустил ошибку?
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Glebkiselev11 Автор вопроса
Vue.js разработчик
Проблему нашел, она оказалась в том, что я совсем забыл про то что к аксиосу тоже нужно прикрутить прокси, так как он скачивает файл из телеграма...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы