summaryrefslogtreecommitdiff
path: root/internal/image/gemini.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-19 22:25:28 +0300
committerPaul Buetow <paul@buetow.org>2026-04-19 22:25:28 +0300
commit042b3e7d65c79e9bbaa17e901caca4c1dde4b0d7 (patch)
tree75b08ef220df05422048b1ee88cc4f179e8b1818 /internal/image/gemini.go
parent7109df3ae03661d750c263b89b2d64d476377541 (diff)
v4: fix image attribution and registry config
Diffstat (limited to 'internal/image/gemini.go')
-rw-r--r--internal/image/gemini.go40
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