gongxiangp2/lib/video-material-types.ts
2026-05-07 16:37:22 +08:00

74 lines
2.3 KiB
TypeScript

export const TAOXI_MAIN_VIDEO_TYPE = '淘系-主图视频'
export const TAOXI_GUANGGUANG_VIDEO_TYPE = '淘系-逛逛视频'
export const DOUYIN_QIANCHUAN_VIDEO_TYPE = '抖音-千川素材'
export const DOUYIN_ACCOUNT_MAINTENANCE_VIDEO_TYPE = '抖音-账号维护'
export const INSTALL_VIDEO_TYPE = '安装视频'
const MATERIAL_TYPE_ALIASES: Record<string, string> = {
主图视频: TAOXI_MAIN_VIDEO_TYPE,
种草视频: TAOXI_GUANGGUANG_VIDEO_TYPE,
}
export const CANONICAL_VIDEO_MATERIAL_TYPES = [
TAOXI_MAIN_VIDEO_TYPE,
INSTALL_VIDEO_TYPE,
TAOXI_GUANGGUANG_VIDEO_TYPE,
DOUYIN_QIANCHUAN_VIDEO_TYPE,
DOUYIN_ACCOUNT_MAINTENANCE_VIDEO_TYPE,
] as const
export const LEGACY_COMPATIBLE_VIDEO_MATERIAL_TYPES = [
'视频',
'VIDEO',
...CANONICAL_VIDEO_MATERIAL_TYPES,
...Object.keys(MATERIAL_TYPE_ALIASES),
] as const
export function normalizeVideoMaterialType(materialType?: string | null): string {
const trimmed = (materialType || '').trim()
if (!trimmed) {
return ''
}
return MATERIAL_TYPE_ALIASES[trimmed] || trimmed
}
export function getCompatibleVideoMaterialTypes(materialType?: string | null): string[] {
const trimmed = (materialType || '').trim()
if (!trimmed) {
return []
}
const normalized = normalizeVideoMaterialType(trimmed)
const candidates = new Set<string>([trimmed, normalized])
for (const [legacyType, canonicalType] of Object.entries(MATERIAL_TYPE_ALIASES)) {
if (canonicalType === normalized) {
candidates.add(legacyType)
}
}
return Array.from(candidates)
}
export function isVideoMaterialType(materialType?: string | null): boolean {
const normalized = normalizeVideoMaterialType(materialType)
return LEGACY_COMPATIBLE_VIDEO_MATERIAL_TYPES.includes(
normalized as (typeof LEGACY_COMPATIBLE_VIDEO_MATERIAL_TYPES)[number],
)
}
export function isBatchVideoMaterialType(materialType?: string | null): boolean {
return normalizeVideoMaterialType(materialType) === TAOXI_GUANGGUANG_VIDEO_TYPE
}
export function isSingleVideoUploadMaterialType(materialType?: string | null): boolean {
const normalized = normalizeVideoMaterialType(materialType)
return (
isVideoMaterialType(normalized) &&
normalized !== TAOXI_GUANGGUANG_VIDEO_TYPE &&
normalized !== '视频' &&
normalized !== 'VIDEO'
)
}