Jump to content

Recommended Posts

ophiel
Posted (edited)

 

Screenshot 2026-05-30 010447.png

Screenshot 2026-05-30 010505.png

Screenshot 2026-05-30 010619.png

Screenshot 2026-05-30 010626.png

 

Screenshot 2026-05-30 011031.png

Artwork Studio is a "Homelab" grade tool designed to take your Emby server's visual experience to the next level. Through a sleek, modern UI built with Next.js, it allows you to scan your library, preview movie posters, apply gorgeous overlays (Dolby Vision, HDR10+, etc.), and search/apply widescreen backdrops from TMDb easily.

🔌 How it Connects to Emby

The application interacts directly with your Emby server's official REST API:

  1. Libraries and Content: Retrieves available media collections and maps items via the /emby/Library/SelectableMediaFolders and /emby/Items endpoints.
  2. Poster and Banner Processing: When applying an overlay, the application downloads the base poster from TMDb, resizes and layers the selected overlay badge using the sharp image library, and uploads the final output as a Base64-encoded string to /emby/Items/{Id}/Images/Primary.
  3. Widescreen Backdrops: Downloads backdrop layouts from TMDb and posts them as movie backdrops to Emby via the /emby/Items/{Id}/Images/Backdrop/0 endpoint using Base64.

🛡️ Security & Hardening Features

the following security measures have been built-in:

  • Separation of Environment (.env & .env.example): Real API keys and IP addresses are handled via local environment variables. The repository only tracks .env.example containing generic placeholders.
  • Hardened .gitignore: Blocks files containing real configurations (.env, .env.local, .env.production) and build directories (.next/) to prevent accidental leaks.
  • Secure Image Proxy (/api/image-proxy): The frontend never communicates directly with your Emby server when loading movie images. Instead, all images pass through an internal Next.js proxy route. Consequently, your local IPs and Emby API Keys are never exposed in the client's image HTML tags or browser network requests.
  • Decoupled Client Config (LocalStorage & Cookies): Stores connection tokens locally in your browser (localStorage) and sends them to server actions dynamically via cookies only when required, keeping code files completely stateless and clean of secrets.

📋 Prerequisites

To get the app working, you need to grab these keys and have your server URL ready:

  1. Emby Server URL: The local address where your server runs (e.g., http://192.168.1.100:8096).
  2. Emby API Key: Generated from the Emby Dashboard (Settings > API Keys > New API Key).
  3. TMDb API Key (Optional but recommended): Used to enrich movie metadata, get it by registering for free at The Movie Database.

 

Link

 

Edited by ophiel
  • Like 1
  • Thanks 2
Posted

Thanks for sharing.

MediaIntelNUC
Posted

@ophiel Thanx for sharing!

Tried it out and one question, is there any way to set the UI to English?

Right now its Spanish and my habla espanol isnt all that great im sorry to say.

Thanx!

N.

ophiel
Posted (edited)

 Emby Artwork Studio v1.0.2 / Actualización de Idiomas/multiple languages

## 🌍 Emby Artwork Studio Internationalization Update / Actualización de Idiomas

¡Hemos añadido soporte completo para múltiples idiomas para que Artwork Studio llegue a más usuarios! / We have added full support for multiple languages to bring Artwork Studio to more users!

---

### 🇪🇸 Novedades en Español

✨ **Mejoras de Interfaz (UX/UI):**
- 🎨 **Rediseño del Botón "Limpiar Filtros":** Se ha reubicado desde el menú lateral a una posición mucho más intuitiva (justo al lado de la barra de búsqueda). Además, ahora es inteligente y **solo aparece** cuando tienes una búsqueda o un filtro activo, manteniendo la interfaz más limpia.

🐛 **Corrección de Errores (Bug Fixes):**
- 💾 **Persistencia de Datos en Docker:** Solucionado un problema crítico donde el registro de las carátulas modificadas (`applied_overlays.json`) se borraba al reiniciar el contenedor. Ahora los datos se guardan de forma segura en un volumen persistente (`/app/data`). Las opciones de filtrar por "Con Overlay" y "Originales" ahora funcionarán a la perfección entre sesiones. Se ha actualizado el archivo `docker-compose.yml` para reflejar este cambio en nuevas instalaciones.

✨ **Características Añadidas:**
- 🌐 **Soporte Multi-idioma (i18n):** Integrado un nuevo sistema de traducciones con diccionarios completos en Inglés y Español.
- ⚙️ **Selector de Idioma Dinámico:** Ahora puedes cambiar el idioma de toda la interfaz directamente desde la ventana emergente de Ajustes con un solo clic.
- 🚀 **Asistente Inicial Inteligente:** Al entrar por primera vez, la aplicación ahora abre automáticamente el modal de configuración para que puedas elegir tu idioma preferido y configurar tus API Keys de Emby y TMDb desde el minuto cero.

🔧 **Cambios y Mejoras:**
- ♻️ **Refactorización Global:** Se han eliminado los textos estáticos del código fuente para utilizar el nuevo motor dinámico de traducciones, permitiendo un cambio de idioma fluido e instantáneo.

---

### 🇬🇧 English Update

✨ **New Features & Additions:**
- 🌐 **English Language Support (i18n):** Integrated a new configuration file with complete English and Spanish translation dictionaries.
- ⚙️ **Dynamic Language Selector:** You can now easily switch the interface language directly from the Settings Modal.
- 🚀 **First-time Setup Assistant:** New users will now automatically see the setup modal upon their first visit, allowing them to select their preferred language and input their Emby and TMDb API keys right away.

🔧 **Changes & Improvements:**
- ♻️ **Global Refactoring:** Replaced all hardcoded strings across the application to utilize the new dynamic `translations` object for seamless localization.

✨ **UI/UX Improvements:**
- 🎨 **"Clear Filters" Button Redesign:** Relocated from the sidebar to a more intuitive position next to the search bar. It is now a smart button that **only appears** when a search query or filter is actively applied, keeping the interface clean.

🐛 **Bug Fixes:**
- 💾 **Docker Data Persistence:** Fixed a critical issue where the record of modified covers (`applied_overlays.json`) was lost upon container restart. The state is now safely stored in a persistent volume (`/app/data`), ensuring that the "With Overlay" and "Originals" filters work flawlessly across sessions. The standalone `docker-compose.yml` has been updated to reflect this change for new installations.

Link To 🎬 Emby Artwork Studio
 

Screenshot 2026-05-31 144131.png

Screenshot 2026-05-31 150644.png

Edited by ophiel
MediaIntelNUC
Posted

@ophiel Still no English, have deleted previous image, downloaded fresh new files from GitHub, built the container again but no option to choose English.

I have gone through the files and the only file that contains language code is the compose.yml file but that does nothing.

Any tips for troubleshooting would be great!🫡 

Thanx!

N.

Kyouma
Posted

@MediaIntelNUC

There is a file called i18n.ts which contain both languages. Its in src/config/

  • Thanks 1
ophiel
Posted
33 minutes ago, MediaIntelNUC said:

@ophiel Still no English, have deleted previous image, downloaded fresh new files from GitHub, built the container again but no option to choose English.

I have gone through the files and the only file that contains language code is the compose.yml file but that does nothing.

Any tips for troubleshooting would be great!🫡 

Thanx!

N.

If you select settings, you can select English from there.

MediaIntelNUC
Posted

There you go, got the file from Github and now it works as a charm so far👍

Thanx!

N.

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...