diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-19 22:25:28 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-19 22:25:28 +0300 |
| commit | 042b3e7d65c79e9bbaa17e901caca4c1dde4b0d7 (patch) | |
| tree | 75b08ef220df05422048b1ee88cc4f179e8b1818 /internal/image/gemini.go | |
| parent | 7109df3ae03661d750c263b89b2d64d476377541 (diff) | |
v4: fix image attribution and registry config
Diffstat (limited to 'internal/image/gemini.go')
| -rw-r--r-- | internal/image/gemini.go | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/internal/image/gemini.go b/internal/image/gemini.go index 2ccd6fa..57fa61a 100644 --- a/internal/image/gemini.go +++ b/internal/image/gemini.go @@ -158,9 +158,9 @@ func (c *GeminiProvider) Search(ctx context.Context, opts *SearchOptions) ([]Sea Width: width, Height: height, Description: description, - Attribution: "Generated by Google Gemini Nano Banana", Source: geminiSource, } + result.Attribution = c.buildAttribution(&result, prompt) return []SearchResult{result}, nil } @@ -193,24 +193,11 @@ func (c *GeminiProvider) Download(ctx context.Context, url string) (io.ReadClose // GetAttribution returns attribution text for the generated image. func (c *GeminiProvider) GetAttribution(result *SearchResult) string { - width, height := 0, 0 - if result != nil { - width = result.Width - height = result.Height + if result == nil { + return "" } - var attribution strings.Builder - attribution.WriteString("Image generated by Google Gemini Nano Banana\n\n") - fmt.Fprintf(&attribution, "Model: %s\n", c.modelName()) - fmt.Fprintf(&attribution, "Text model: %s\n", c.textModelName()) - fmt.Fprintf(&attribution, "Aspect ratio: %s\n", geminiAspectRatio) - fmt.Fprintf(&attribution, "Size: %dx%d\n", width, height) - if result != nil && result.Description != "" { - fmt.Fprintf(&attribution, "Result: %s\n", result.Description) - } - fmt.Fprintf(&attribution, "\nPrompt used:\n%s\n", c.lastPrompt) - fmt.Fprintf(&attribution, "\nGenerated at: %s\n", time.Now().Format("2006-01-02 15:04:05")) - return attribution.String() + return result.Attribution } // Name returns the provider name. @@ -562,6 +549,25 @@ func (c *GeminiProvider) generateImageID(word string) string { return hex.EncodeToString(hash[:])[:8] } +func (c *GeminiProvider) buildAttribution(result *SearchResult, prompt string) string { + if result == nil { + return "" + } + + var attribution strings.Builder + attribution.WriteString("Image generated by Google Gemini Nano Banana\n\n") + fmt.Fprintf(&attribution, "Model: %s\n", c.modelName()) + fmt.Fprintf(&attribution, "Text model: %s\n", c.textModelName()) + fmt.Fprintf(&attribution, "Aspect ratio: %s\n", geminiAspectRatio) + fmt.Fprintf(&attribution, "Size: %dx%d\n", result.Width, result.Height) + if result.Description != "" { + fmt.Fprintf(&attribution, "Result: %s\n", result.Description) + } + fmt.Fprintf(&attribution, "\nPrompt used:\n%s\n", prompt) + fmt.Fprintf(&attribution, "\nGenerated at: %s\n", time.Now().Format("2006-01-02 15:04:05")) + return attribution.String() +} + func (c *GeminiProvider) modelName() string { if c == nil || c.config == nil || strings.TrimSpace(c.config.Model) == "" { return DefaultGeminiImageModel |
