Skip to content

tsjdev-apps/piccaptionr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

109 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ธ PicCaptionr

  ____  _       ____            _   _                  
 |  _ \(_) ___ / ___|__ _ _ __ | |_(_) ___  _ __  _ __ 
 | |_) | |/ __| |   / _` | '_ \| __| |/ _ \| '_ \| '__|
 |  __/| | (__| |__| (_| | |_) | |_| | (_) | | | | |   
 |_|   |_|\___|\____\__,_| .__/ \__|_|\___/|_| |_|_|   
                         |_|                           

AI-powered tool to automatically generate Instagram-style captions for your photos โ€“ on Windows, Linux and macOS.

Header

Release

โœจ Features

  • ๐Ÿง  Uses OpenAI's Vision API to understand and describe your photos
  • ๐ŸŒ Multilingual output (English, German, Spanish)
  • ๐Ÿ—ž๏ธ Output as .txt file
  • ๐Ÿ–ผ๏ธ Supports multiple images
  • โš™๏ธ Flexible backend: OpenAI or Azure OpenAI
  • ๐ŸŽ›๏ธ OpenAI model selection (gpt-5.x, gpt-4.1, gpt-4o families)
  • ๐Ÿ’ป Available as:
    • Console App (cross-platform)
    • WPF Desktop App (Windows only)
    • Avalonia App (modern cross-platform GUI for Windows, Linux & macOS)

๐Ÿš€ Getting Started

๐Ÿ”ง Requirements

๐Ÿ–ฅ๏ธ Console App

cd PicCaptionr.ConsoleApp
dotnet run

You will be prompted to enter:

  • your host (OpenAI / Azure OpenAI)
  • your API key, Deployment name and Endpoint (depending on the host)
  • your OpenAI model (when using OpenAI)
  • the path to the folder containing the images
  • target language
  • optional additional instructions
  • the path to an output folder

Output file (.txt) will be saved in the given directory

๐ŸชŸ WPF Desktop App

cd PicCaptionr.WPFApp
dotnet build
dotnet run
  • Requires Windows and .NET Desktop Runtime
  • Simple graphical interface with:
    • Folder pickers
    • Language and model selection
    • Progress bar and log viewer

๐Ÿ–ผ๏ธ Avalonia App (Cross-platform GUI)

cd PicCaptionr.AvaloniaApp
dotnet build
dotnet run
  • Works on Windows, Linux, and macOS
  • Modern responsive UI using Avalonia UI
  • Cross-platform folder picker and dynamic layout
  • Provides the same functionality as the WPF app, but with platform-independent UI

๐Ÿ’ก macOS Notice: You may need to allow the app to run via terminal:

chmod +x PicCaptionr.AvaloniaApp
xattr -d com.apple.quarantine PicCaptionr.AvaloniaApp

๐Ÿ“ฆ CI/CD with GitHub Actions

All apps are built and published automatically via GitHub Actions:

Build Workflows

  • โœ… Console App (cross-platform):
    • win-x64, linux-x64, osx-x64, osx-arm64
  • โœ… WPF App (Windows only):
    • win-x64 (single .exe)
  • โœ… Avalonia App (cross-platform):
    • win-x64, linux-x64, osx-x64, osx-arm64 (self-contained)

Release Workflow

When a new version tag is pushed (v*), a GitHub release is automatically created with:

  • Pre-compiled, self-contained binaries for all platforms
  • Console App and WPF App as single executable files
  • Avalonia App as complete self-contained packages

Download releases: Visit the Releases page to get the latest builds for your platform.

๐Ÿ” Configuration

All variants require:

  • An API key from OpenAI or Azure
  • For Azure OpenAI:
    • Endpoint URL
    • Deployment name
  • For OpenAI:
    • Model name (choose from gpt-5.x, gpt-4.1, gpt-4o families)

Credentials are entered at runtime and never stored permanently.

๐Ÿ—‚๏ธ Folder Structure

PicCaptionr.ConsoleApp     # Console-based UI (cross-platform)
PicCaptionr.WPFApp         # Windows-only WPF GUI
PicCaptionr.AvaloniaApp    # Cross-platform GUI (Avalonia)
PicCaptionr                # Shared models, services, and logic

๐Ÿ“ท Screenshots

Console App

Console

Console

WPF App

WPF

Avalonia App

Avalonia

๐Ÿ“„ Sample Output

Sample Image

A typical output entry in JSON format might look like this:

[
  {
    "ImageName": "tsjreiseblog_28-Jul-2025.jpg",
    "ImageMetaData": {
      "CaptureDate": null,
      "Latitude": null,
      "Longitude": null
    },
    "OpenAIResponse": {
      "RawContent": "Exploring the charming streets and historic sights of Civitavecchia, Italy ๐Ÿ‡ฎ๐Ÿ‡นโœจ From vibrant scooters to stunning architecture and scenic harbor viewsโ€”every corner tells a story. Can't wait to see more of this beautiful port city! ๐Ÿšค๐Ÿ›๏ธ๐ŸŒŠ\n\n#Civitavecchia #ItalyTravel #PortCity #HistoricItaly #TravelItaly #ItalianArchitecture #HarborViews #ScooterLife #MediterraneanVibes #TravelDestinations",
      "FormattedContent": "Exploring the charming streets and historic sights of Civitavecchia, Italy ๐Ÿ‡ฎ๐Ÿ‡นโœจ From vibrant scooters to stunning architecture and scenic harbor viewsโ€”every corner tells a story. Can't wait to see more of this beautiful port city! ๐Ÿšค๐Ÿ›๏ธ๐ŸŒŠ\r\n\r\n#Civitavecchia #ItalyTravel #PortCity #HistoricItaly #TravelItaly #ItalianArchitecture #HarborViews #ScooterLife #MediterraneanVibes #TravelDestinations",
      "InputTokens": 800,
      "OutputTokens": 94
    }
  }
]

๐Ÿ““ License

MIT License ยฉ tsjdev-apps

๐Ÿ’ฌ Feedback & Contributions

Found a bug? Want to improve the UI?
Open an Issue or submit a Pull Request.
We โค๏ธ feedback and contributions!

About

A simple .NET project that uses AI to generate engaging Instagram captions for your vacation photos.

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages