@rolme/ytscript
Version:
A CLI tool to download YouTube transcripts and generate summaries
29 lines (28 loc) • 1.08 kB
JavaScript
import { writeFile, mkdir } from 'fs/promises';
import { existsSync } from 'fs';
import { join, dirname } from 'path';
import { TranscriptError } from '../errors.js';
function cleanText(text) {
return text.trim().replace(/\n{3,}/g, '\n\n');
}
export async function saveToFile(content, title, outputPath) {
try {
const sanitizedTitle = title.replace(/[^a-z0-9]/gi, '_').toLowerCase();
const filePath = outputPath || join(process.cwd(), `${sanitizedTitle}.txt`);
// Ensure directory exists
const directory = dirname(filePath);
if (!existsSync(directory)) {
await mkdir(directory, { recursive: true });
}
// Clean and write content to file
const cleanedContent = cleanText(content);
await writeFile(filePath, cleanedContent, 'utf8');
return filePath;
}
catch (error) {
if (error instanceof Error) {
throw new TranscriptError(`Failed to save file: ${error.message}`);
}
throw new TranscriptError('Failed to save file: Unknown error');
}
}