export const RESOLUTIONS = [
  { value: "1920x1080", label: "1920x1080 (16:9)", width: 1920, height: 1080 },
  { value: "1280x720", label: "1280x720 (16:9)", width: 1280, height: 720 },
  { value: "854x480", label: "854x480 (16:9)", width: 854, height: 480 },
  { value: "720x720", label: "720x720 (1:1)", width: 720, height: 720 },
  { value: "640x360", label: "640x360 (16:9)", width: 640, height: 360 },
  { value: "426x240", label: "426x240 (16:9)", width: 426, height: 240 },
] as const;

export const YOUTUBE_CATEGORIES = [
  { id: "10", name: "Music" },
  { id: "1", name: "Film & Animation" },
  { id: "2", name: "Autos & Vehicles" },
  { id: "15", name: "Pets & Animals" },
  { id: "17", name: "Sports" },
  { id: "19", name: "Travel & Events" },
  { id: "20", name: "Gaming" },
  { id: "22", name: "People & Blogs" },
  { id: "23", name: "Comedy" },
  { id: "24", name: "Entertainment" },
  { id: "25", name: "News & Politics" },
  { id: "26", name: "Howto & Style" },
  { id: "27", name: "Education" },
  { id: "28", name: "Science & Technology" },
  { id: "29", name: "Nonprofits & Activism" },
] as const;

export const QUEUE_NAME = "video-jobs";

export function getResolution(value: string) {
  return RESOLUTIONS.find((r) => r.value === value);
}

export function isAllowedResolution(value: string): boolean {
  return RESOLUTIONS.some((r) => r.value === value);
}

export function filenameWithoutExtension(filename: string): string {
  const lastDot = filename.lastIndexOf(".");
  return lastDot > 0 ? filename.slice(0, lastDot) : filename;
}

export function parseTags(input: string): string[] {
  const tags: string[] = [];
  const regex = /"([^"]+)"|([^,\s]+)/g;
  let match: RegExpExecArray | null;
  while ((match = regex.exec(input)) !== null) {
    const tag = (match[1] || match[2]).trim();
    if (tag) tags.push(tag);
  }
  return tags.slice(0, 500);
}
