mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-03-03 12:10:11 +00:00
feat(api-nodes-pricing): add prices for Veo3FirstLastFrameNode (#6920)
## Summary Price badges for this PR: https://github.com/comfyanonymous/ComfyUI/pull/10878 If we can include this in an upcoming release, that would be absolutely great. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6920-feat-api-nodes-pricing-add-prices-for-Veo3FirstLastFrameNode-2b66d73d365081bdb49be98d953a7a0b) by [Unito](https://www.unito.io)
This commit is contained in:
@@ -1237,6 +1237,40 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
|
||||
return '$0.80-3.20/Run'
|
||||
}
|
||||
},
|
||||
Veo3FirstLastFrameNode: {
|
||||
displayPrice: (node: LGraphNode): string => {
|
||||
const modelWidget = node.widgets?.find(
|
||||
(w) => w.name === 'model'
|
||||
) as IComboWidget
|
||||
const generateAudioWidget = node.widgets?.find(
|
||||
(w) => w.name === 'generate_audio'
|
||||
) as IComboWidget
|
||||
const durationWidget = node.widgets?.find(
|
||||
(w) => w.name === 'duration'
|
||||
) as IComboWidget
|
||||
|
||||
if (!modelWidget || !generateAudioWidget || !durationWidget) {
|
||||
return '$0.40-3.20/Run (varies with model & audio generation)'
|
||||
}
|
||||
|
||||
const model = String(modelWidget.value)
|
||||
const generateAudio =
|
||||
String(generateAudioWidget.value).toLowerCase() === 'true'
|
||||
const seconds = parseFloat(String(durationWidget.value))
|
||||
|
||||
let pricePerSecond: number | null = null
|
||||
if (model.includes('veo-3.1-fast-generate')) {
|
||||
pricePerSecond = generateAudio ? 0.15 : 0.1
|
||||
} else if (model.includes('veo-3.1-generate')) {
|
||||
pricePerSecond = generateAudio ? 0.4 : 0.2
|
||||
}
|
||||
if (pricePerSecond === null) {
|
||||
return '$0.40-3.20/Run'
|
||||
}
|
||||
const cost = pricePerSecond * seconds
|
||||
return `$${cost.toFixed(2)}/Run`
|
||||
}
|
||||
},
|
||||
LumaImageNode: {
|
||||
displayPrice: (node: LGraphNode): string => {
|
||||
const modelWidget = node.widgets?.find(
|
||||
@@ -1852,6 +1886,7 @@ export const useNodePricing = () => {
|
||||
Flux2ProImageNode: ['width', 'height', 'images'],
|
||||
VeoVideoGenerationNode: ['duration_seconds'],
|
||||
Veo3VideoGenerationNode: ['model', 'generate_audio'],
|
||||
Veo3FirstLastFrameNode: ['model', 'generate_audio', 'duration'],
|
||||
LumaVideoNode: ['model', 'resolution', 'duration'],
|
||||
LumaImageToVideoNode: ['model', 'resolution', 'duration'],
|
||||
LumaImageNode: ['model', 'aspect_ratio'],
|
||||
|
||||
Reference in New Issue
Block a user