JSPM

dlp-tools

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q21473F
  • License MIT

TypeScript wrapper for yt-dlp with binary management and fluent API

Package Exports

  • dlp-tools
  • dlp-tools/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dlp-tools) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

DLP-Tools

npm version TypeScript

Un potente wrapper en TypeScript para yt-dlp, con gestión automática de binarios, API fluida y soporte para streaming.

Características

  • Gestión Automática de Binarios – Descarga y administra automáticamente los binarios de yt-dlp y ffmpeg.
  • Soporte TypeScript – Soporte completo para TypeScript con definiciones de tipo detalladas.
  • Soporte de Streaming – Transmite contenido multimedia directamente sin descargarlo al disco.
  • Seguimiento de Progreso – Monitoreo en tiempo real del progreso de las descargas.
  • API Fluida – API encadenable y fácil de usar para operaciones complejas.
  • Selección de Formato – Selección inteligente de formatos con opciones de calidad.

Instalación

npm install dlp-tools

Inicio Rápido

import { YtDlp } from 'dlp-tools';

const ytdlp = new YtDlp();

// Obtener información del video
const info = await ytdlp.getInfo('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
console.log(info.title);

// Descargar video
await ytdlp.download('https://www.youtube.com/watch?v=dQw4w9WgXcQ', {
  quality: 'highest',
  onProgress: (progress) => {
    console.log(`Progreso: ${progress.percent}%`);
  }
});

Referencia de la API

Opciones del Constructor

interface IOptions {
  outputDir?: string;
  binary?: {
    autoDownload?: boolean;
    ffmpegPath?: string;
    ytDlpPath?: string;
  };
}

const ytdlp = new YtDlp({
  outputDir: './downloads',
  binary: {
    autoDownload: true, // Valor por defecto: true
    ytDlpPath: '/custom/path/to/yt-dlp',
    ffmpegPath: '/custom/path/to/ffmpeg'
  }
});

Métodos

getInfo(url, options?)

Obtiene información detallada sobre un video o lista de reproducción.

const info = await ytdlp.getInfo('https://youtube.com/watch?v=VIDEO_ID', {
  dumpSingleJson: true // Por defecto
});

console.log({
  title: info.title,
  duration: info.duration,
  uploader: info.uploader,
  formats: info.formats
});

download(url, options?)

Descarga video/audio con seguimiento de progreso.

await ytdlp.download(url, {
  quality: 'highest', // 'highest' | 'lowest' | 'best' | formato personalizado
  format: 'mp4',
  outputPath: './downloads',
  onProgress: (progress) => {
    console.log(`${progress.percent}% - ${progress.speed}`);
  },
  onError: (error) => {
    console.error('Error en la descarga:', error);
  },
  onEnd: () => {
    console.log('¡Descarga completada!');
  }
});

stream(url, options?)

Transmite contenido multimedia sin descargarlo al disco.

import { createWriteStream } from 'fs';

const stream = ytdlp.stream(url, {
  quality: 'highest',
  format: 'mp4'
});

// Canalizar a un archivo
const fileStream = createWriteStream('output.mp4');
await stream.pipe(fileStream);

// O usar sincrónicamente
stream.pipeSync(process.stdout);

exec(url, options?)

Ejecuta comandos personalizados de yt-dlp con control total.

const output = await ytdlp.exec(url, {
  extractFlat: true,
  playlistItems: '1-5',
  writeInfoJson: true
});

Opciones de Formato

interface FormatOptions<T> {
  quality?: 'highest' | 'lowest' | 'best' | string;
  format?: T; // 'mp4' | 'mp3' | 'webm' | etc.
  outputPath?: string;
  onProgress?: (progress: ProgressInfo) => void;
  onError?: (error: Error) => void;
  onEnd?: () => void;
}

Información de Progreso

interface ProgressInfo {
  percent: number;
  speed: string;
  size: string;
  eta: string;
  elapsed: string;
}

Manejo de Errores

try {
  await ytdlp.download(url, {
    onError: (error) => {
      console.error('Error en el stream:', error.message);
    }
  });
} catch (error) {
  console.error('La descarga falló:', error);
}

Gestión de Binarios

El paquete administra automáticamente los binarios de yt-dlp y ffmpeg:

  • Descarga los binarios en el primer uso si no se encuentran.
  • Soporta rutas personalizadas para los binarios.
  • Compatible con múltiples plataformas (Windows, macOS, Linux).
  • Verificación automática de actualizaciones.
// Usar rutas personalizadas para los binarios
const ytdlp = new YtDlp({
  binary: {
    autoDownload: false,
    ytDlpPath: '/usr/local/bin/yt-dlp',
    ffmpegPath: '/usr/local/bin/ffmpeg'
  }
});

Requisitos

  • Node.js 14 o superior
  • TypeScript 4.5+ (para proyectos TypeScript)

Contribuir

¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.

Licencia

Licencia MIT – consulta el archivo LICENSE para más detalles.

Registro de Cambios

1.0.0

  • Versión inicial
  • Wrapper en TypeScript para yt-dlp
  • Gestión automática de binarios
  • Soporte de streaming
  • Seguimiento de progreso

¿Quieres que te lo devuelva en formato README.md listo para usar (por ejemplo, con formato Markdown correcto y acentos escapados para npm)?