Go to file
Steve White 7ace82c2f6 Added example config 2025-01-28 11:30:41 -06:00
.gitignore working version 2025-01-28 11:26:35 -06:00
README.md docs: Update README with correct usage instructions for gonamer 2025-01-28 11:24:28 -06:00
go.mod working version 2025-01-28 11:26:35 -06:00
go.sum working version 2025-01-28 11:26:35 -06:00
gonamer.go working version 2025-01-28 11:26:35 -06:00
gonamer.yaml.example Added example config 2025-01-28 11:30:41 -06:00

README.md

Gonamer

Gonamer is a command-line tool written in Go that uses OpenAI's vision model to intelligently rename image files based on their content. It analyzes images and suggests descriptive, meaningful filenames that reflect what's in the image.

Features

  • Uses OpenAI's vision model to analyze image content
  • Supports JPG, JPEG, PNG, and GIF formats
  • Generates unique, descriptive filenames
  • Handles filename conflicts automatically
  • Sanitizes filenames for cross-platform compatibility
  • Configurable via YAML configuration file

Installation

  1. Ensure you have Go installed on your system
  2. Clone this repository
  3. Install dependencies:
go get gopkg.in/yaml.v3

Configuration

Create a configuration file at ~/.config/gonamer.yaml with the following structure:

apikey: "your-api-key"
model: "gpt-4-vision-preview"
endpoint: "https://api.openai.com/v1/chat/completions"
temperature: 0.7

Make sure to replace:

  • your-api-key with your API key
  • endpoint with your preferred OpenAI-compatible API endpoint (supports OpenAI, Azure OpenAI, or any compatible API provider)

Usage

gonamer <image_filename>

For example:

gonamer vacation_photo.jpg

The tool will:

  1. Analyze the image using OpenAI's vision model
  2. Generate a descriptive filename based on the image content
  3. Sanitize the filename for compatibility
  4. Rename the file while preserving the original extension
  5. Handle any filename conflicts by adding a numeric suffix

Error Handling

  • Invalid file extensions will be rejected
  • Network errors will be reported clearly
  • Filename conflicts are resolved automatically
  • Invalid characters in suggested filenames are sanitized

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is open source and available under the MIT License.