Files
songs2vid/lib/titles.ts
T
Atakan Doğan ÖzbanandCursor 925aadae75 Strip Songs2VID to a payment-free self-hosted OSS core.
Remove Stripe/billing/pricing/marketing, simplify schema and entitlements for unlimited self-host use, and keep auth, encode, and YouTube upload.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 06:52:00 +02:00

38 lines
1.1 KiB
TypeScript

export type TitleFields = {
/** YouTube video title */
title?: string | null;
/** On-video song / track title (art-track layouts) */
songTitle?: string | null;
artist?: string | null;
};
/** Resolve the title sent to YouTube, falling back to artist and song metadata. */
export function resolveYouTubeTitle(meta: TitleFields): string {
const videoTitle = meta.title?.trim();
if (videoTitle) return videoTitle;
const artist = meta.artist?.trim();
const song = meta.songTitle?.trim();
if (artist && song) return `${artist} - ${song}`;
if (song) return song;
if (artist) return artist;
return "";
}
/** Title burned into art-track layout (never the YouTube-only field alone when songTitle set). */
export function resolveBurnedSongTitle(
meta: TitleFields,
fallback = "Untitled",
): string {
return meta.songTitle?.trim() || fallback;
}
export function validateYouTubeTitle(meta: TitleFields): string | null {
const resolved = resolveYouTubeTitle(meta);
if (!resolved) {
return "Enter a video title, song title, or artist";
}
return null;
}