Así que estoy usando esta biblioteca npm que devuelve la música de SoundCloud como Stream . Pero después de un tiempo buscando una respuesta, no pude obtener una respuesta. Busqué y descubrí que es imposible obtener el tamaño completo de los datos en una secuencia. Pero, ¿hay alguna manera de obtener el tamaño de los datos en ese flujo porque planeo usar el tamaño para implementar el progreso de descarga en mi aplicación? Muchas gracias por adelantado.
De los documentos de la biblioteca:
const scdl = require('soundcloud-downloader').default const fs = require('fs') const SOUNDCLOUD_URL = 'https://soundcloud.com/askdjfhaklshf' const CLIENT_ID = 'asdhkalshdkhsf' scdl.download(SOUNDCLOUD_URL).then(stream => stream.pipe(fs.createWriteStream('audio.mp3')))Todo parece funcionar perfectamente, pero no puedo contar los bytes disponibles en la instancia de flujo devuelta en la devolución de llamada
Sí, si la API devuelve un Stream, puede calcular el tamaño usted mismo mientras lo lee. No especificó qué biblioteca está usando, pero si devuelve una secuencia, puede agregar el tamaño a medida que ingresan fragmentos de datos.
por ejemplo (adaptado directamente de los documentos de Node.js):
// get the stream from some API. const readable = getReadableStreamSomehow(); let readBytes = 0; readable.on('data', (chunk) => { console.log(`Received ${chunk.length} bytes of data.`); readBytes += chunk.length; }); readable.on('end', () => { console.log('All done.'); });