Skip to content

Downloading videos and subtitles using yt-dlp, with utilities for extracting text from subtitles

Notifications You must be signed in to change notification settings

yemreak/yt-dlp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@yemreak/yt-dlp

Yes, the readme was created with ChatGPT 😅, but that's okay, no worries! 🙃

Overview

This package provides tools to interact with the yt-dlp utility for downloading media from YouTube and other video platforms. It includes functionality for downloading videos, extracting audio, managing subtitles, and retrieving media information.

Features

  • Download videos and audios: Supports various formats and configurations.
  • Subtitle management: Download and extract text from subtitles in different formats.
  • Media information retrieval: Fetch detailed information about media content.

Installation

npm install @yemreak/yt-dlp

Usage

Initialize

import { YtDlp, YtDlpConfig } from "@yemreak/yt-dlp"

const config: YtDlpConfig = { workdir: "./downloads" }
const ytDlp = new YtDlp(config)

Download Latest yt-dlp Release

Ensure the latest version of yt-dlp is downloaded:

await ytDlp.downloadLatestReleaseIfNotExists()

Download Video

Download a video with custom format settings:

const videoUrls = await ytDlp.download({
	url: "https://youtube.com/watch?v=example",
	format: "ba", // best audio
})

Extract Media Information

Retrieve detailed information from a video URL:

const mediaInfo = await ytDlp.retrieveMediaInfoList(
	"https://youtube.com/watch?v=example"
)

Download and Extract Subtitles

Download subtitles and extract text:

const subtitleText = await ytDlp.downloadSubtitleText({
	info: mediaInfo[0],
	lang: "en",
})

Practical Examples

Batch Download

Download multiple videos by passing a list of URLs:

for (const url of [
	"https://youtube.com/watch?v=example1",
	"https://youtube.com/watch?v=example2",
]) {
	await ytDlp.download({ url })
}

Advanced Subtitle Handling

Download subtitles in different languages and formats, then extract and save the text:

const langs: Language[] = ["en", "es", "de"]
for (const lang of langs) {
	const subtitlePath = await ytDlp.downloadSubtitle({ info: mediaInfo[0], lang })
	const extractedText = ytDlp.extractTextFromSubtitles(subtitlePath)
	console.log(`Extracted Text in ${lang}:`, extractedText)
}

Error Handling

Implement robust error handling to manage potential download and extraction failures:

try {
	const videoUrls = await ytDlp.download({
		url: "https://youtube.com/watch?v=example",
	})
} catch (error) {
	console.error("Failed to download video:", error)
}

Releases

No releases published

Packages

No packages published