|
import { ClapSegment } from "@aitube/clap" |
|
|
|
import { LayoutName } from "@/app/layouts" |
|
import { layouts } from "@/app/layouts/settings" |
|
import { getImageDimension } from "./getImageDimension" |
|
|
|
export async function parseLayoutFromStoryboards(storyboards: ClapSegment[]): Promise<LayoutName> { |
|
|
|
let bestCandidate: LayoutName = "Layout0" |
|
|
|
for (const [layoutName, layoutPanels] of Object.entries(layouts)) { |
|
|
|
let nbMatchingStoryboards = 0 |
|
let i = 0 |
|
|
|
for (const { panel, orientation, width, height } of layoutPanels) { |
|
|
|
const storyboard = storyboards[i] |
|
|
|
if (!storyboard) { continue } |
|
if (!storyboard?.assetUrl) { continue } |
|
|
|
const imgDimension = await getImageDimension(storyboard.assetUrl) |
|
|
|
if (orientation === imgDimension.orientation) { |
|
nbMatchingStoryboards++ |
|
} |
|
|
|
i++ |
|
} |
|
|
|
if (nbMatchingStoryboards === 4) { |
|
bestCandidate = layoutName as LayoutName |
|
} |
|
} |
|
|
|
return bestCandidate |
|
} |