my space for aiometadata
Find a file
2025-12-05 22:47:06 +00:00
.github Automate Docker release workflow on GitHub releases 2025-11-12 18:15:20 +00:00
addon apply blur to top poster video thumbnails when blurThumbs is enabled in imdb meta 2025-12-05 22:47:06 +00:00
configure refactor(rpdb): change all mentions of enabling rpdb to enabling rating posters 2025-12-04 05:33:58 +00:00
data **feat: user-based config saving, artwork provider enhancements, genre link fixes, catalog UI improvements, DB URI env, global meta cache for all major ID types, and per-engine search enable/disable** 2025-08-18 21:11:22 +00:00
docs fix(cast credits): add option to let the user force latin cast name when using a non EN lang for TMDB meta 2025-11-14 16:08:40 +00:00
public feat: add more providers 2025-11-12 10:25:05 -03:00
scripts feat: Add allowEpisodeMarking UI toggle and dashboard button 2025-09-19 03:00:28 +00:00
.env.example refactor: add minimum warm interval hour value 2025-10-25 00:26:07 -03:00
.gitattributes chore: Add .gitattributes to prevent dev workflow merge to main 2025-07-22 03:34:01 +00:00
.gitignore chore: Add editor backup files to .gitignore 2025-07-30 21:48:21 +00:00
.release-please-manifest.json chore(dev): release 1.12.0 2025-11-29 04:56:32 +00:00
CHANGELOG.md chore(dev): release 1.12.0 2025-11-29 04:56:32 +00:00
components.json feat: Finalize UI and backend logic for beta release 2025-08-04 14:40:37 +00:00
Dockerfile revert: switch back to npm from Bun 2025-10-17 15:56:09 +00:00
eslint.config.js Add configure page to main repo 2025-02-05 16:12:35 -03:00
eslint.config.mjs feat(series): Migrate series metadata fetching to TVmaze 2025-07-17 13:56:53 +00:00
funding.yml fix buymeacoffee 2025-08-20 23:12:30 +00:00
index.html chore: remove leftover code 2025-10-18 23:38:06 -03:00
LICENSE chore: change license from Apache 2.0 to MIT 2025-08-20 23:11:14 +00:00
now.json Revert "Update to 3.1.2" 2025-02-01 14:39:33 -03:00
package-lock.json chore(dev): release 1.12.0 2025-11-29 04:56:32 +00:00
package.json chore(dev): release 1.12.0 2025-11-29 04:56:32 +00:00
postcss.config.js feat: Finalize UI and backend logic for beta release 2025-08-04 14:40:37 +00:00
README.md Align warmup timing and cache TMDB trending 2025-11-10 20:24:40 +00:00
release-please-config.json chore: add release-please workflow for automated releases 2025-10-12 02:46:34 +00:00
tailwind.config.ts feat: Finalize UI and backend logic for beta release 2025-08-04 14:40:37 +00:00
test-resolve-tmdb-episode.js feat(kitsu): enrich meta with tmdb info for consistent thumbnails and ep title/overview 2025-11-26 08:10:26 +00:00
tsconfig.app.json feat: add age rating filter system 2025-02-14 18:39:36 -03:00
tsconfig.backend.json fix(meta): fix overview language fallback for tmdb 2025-09-10 16:30:19 +00:00
tsconfig.json Add configure page to main repo 2025-02-05 16:12:35 -03:00
tsconfig.node.json Add configure page to main repo 2025-02-05 16:12:35 -03:00
vercel.json feat: add vercel configuration and update vite public directory path 2025-06-17 13:22:11 -03:00
vite.config.ts feat: add vercel configuration and update vite public directory path 2025-06-17 13:22:11 -03:00

AIOMETADATA AIOMetadata: The Ultimate Stremio Metadata Addon

AIOMetadata is a next-generation, power-user-focused metadata addon for Stremio. It aggregates and enriches movie, series, and anime metadata from multiple sources (TMDB, TVDB, MyAnimeList, AniList, IMDb, TVmaze, Fanart.tv, MDBList, and more), giving you full control over catalog sources, artwork, and search.


🚀 Features

  • Multi-Source Metadata: Choose your preferred provider for each type (movie, series, anime) — TMDB, TVDB, MAL, AniList, IMDb, TVmaze, etc.
  • Rich Artwork: High-quality posters, backgrounds, and logos from TMDB, TVDB, Fanart.tv, AniList, and more, with language-aware selection and fallback.
  • Anime Power: Deep anime support with MAL, AniList, Kitsu, AniDB, and TVDB/IMDb mapping, including studio, genre, decade, and schedule catalogs.
  • Custom Catalogs: Add, reorder, and delete catalogs (including MDBList, streaming, and custom lists) in a sortable UI.
  • Streaming Catalogs: Integrate streaming provider catalogs (Netflix, Disney+, etc.) with region and monetization filters.
  • Dynamic Search: Enable/disable search engines per type (movie, series, anime) and use AI-powered search (Gemini) if desired.
  • User Config & Passwords: Secure, per-user configuration with password and optional addon password protection. Trusted UUIDs for seamless re-login.
  • Global & Self-Healing Caching: Redis-backed, ETag-aware, and self-healing cache for fast, reliable metadata and catalog responses.
  • Advanced ID Mapping: Robust mapping between all major ID systems (MAL, TMDB, TVDB, IMDb, AniList, AniDB, Kitsu, TVmaze).
  • Modern UI: Intuitive React/Next.js configuration interface with drag-and-drop, tooltips, and instant feedback.

🛠️ Installation

1. Hosted Instance

Visit your hosted instance's /configure page.
Configure your catalogs, providers, and preferences.
Save your config and install the generated Stremio addon URL.

2. Self-Hosting (Docker Compose)

services:
  aiometadata:
    image: ghcr.io/cedya77/aiometadata:latest
    container_name: aiometadata
    restart: unless-stopped
    ports:
      - "3232:3232"  # Remove this if using Traefik
    # expose:  # Uncomment if using Traefik
    #   - 3232
    environment:
      - PORT=3232
      - TMDB_API=${TMDB_API_KEY?}
      - TVDB_API_KEY=${TVDB_API_KEY?}
      - FANART_API_KEY=${FANART_API_KEY?}
      - MDBLIST_API_KEY=${MDBLIST_API_KEY?}
      - RPDB_API_KEY=${RPDB_API_KEY?}
      - HOST_NAME=${AIOMETADATA_HOSTNAME?}
      - REDIS_URL=redis://aiometadata_redis:6379
      - META_TTL=604800
      - CATALOG_TTL=86400
      - TMDB_TRENDING_TTL=10800
      - CATALOG_LIST_ITEMS_SIZE=20
      - LOG_LEVEL=debug
      - ADMIN_KEY=${ADMIN_KEY?}
      - TMDB_SOCKS_PROXY_URL=${TMDB_SOCKS_PROXY_URL?}
      - DATABASE_URI=sqlite://addon/data/db.sqlite
    # labels:  # Optional: Remove if not using Traefik
    #   - "traefik.enable=true"
    #   - "traefik.http.routers.aiometadata.rule=Host(`${AIOMETADATA_HOSTNAME?}`)"
    #   - "traefik.http.routers.aiometadata.entrypoints=websecure"
    #   - "traefik.http.routers.aiometadata.tls.certresolver=letsencrypt"
    #   - "traefik.http.routers.aiometadata.middlewares=authelia@docker"
    #   - "traefik.http.services.aiometadata.loadbalancer.server.port=3232"
    volumes:
      - ${DOCKER_DATA_DIR}/aiometadata/data:/app/addon/data
    depends_on:
      aiometadata_redis:
        condition: service_healthy
    tty: true

  aiometadata_redis:
    image: redis:latest
    container_name: aiometadata_redis
    restart: unless-stopped
    volumes:
      - ${DOCKER_DATA_DIR}/aiometadata/cache:/data
    command: redis-server --appendonly yes --save 60 1
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  #aiometadata_postgres:
  #  image: postgres:latest
  #  container_name: aiometadata_postgres
  #  restart: unless-stopped
  #  environment:
  #    - POSTGRES_DB=aiometadata
  #    - POSTGRES_USER=postgres
  #    - POSTGRES_PASSWORD=password
  #  volumes:
  #    - ${DOCKER_DATA_DIR}/aiometadata/postgres:/var/lib/postgresql/data
  #  healthcheck:
  #    test: ["CMD-SHELL", "pg_isready -U postgres -d aiometadata"]
  #    interval: 10s
  #    timeout: 5s
  #    retries: 5

Create a .env file with your API keys and settings:

# Required API Keys
TMDB_API_KEY=your_tmdb_api_key
# Cache TTL Overrides
TMDB_TRENDING_TTL=10800

TVDB_API_KEY=your_tvdb_api_key
FANART_API_KEY=your_fanart_api_key
MDBLIST_API_KEY=your_mdblist_api_key
RPDB_API_KEY=your_rpdb_api_key

# Host Configuration
AIOMETADATA_HOSTNAME=aiometadata.yourdomain.com
ADMIN_KEY=your_secure_admin_key

# Optional
TMDB_SOCKS_PROXY_URL=your_socks_proxy_url
DOCKER_DATA_DIR=/opt/docker

# Cache Warming (Optional)
# Dedicated TMDB API key for background cache warming of popular/trending content
# This helps improve performance by pre-caching frequently accessed items
BUILT_IN_TMDB_API_KEY=your_dedicated_tmdb_api_key
BUILT_IN_TVDB_API_KEY=your_dedicated_tmdb_api_key

# Cache warming interval in hours (default: 24)
# Controls how often popular content is re-cached
CACHE_WARM_INTERVAL_HOURS=24

# Cache warming language (default: en-US)
# Language to use when warming popular content cache
# Examples: en-US, fr-FR, de-DE, es-ES, ja-JP, pt-BR
CACHE_WARM_LANGUAGE=en-US

Then run:

docker compose up -d

⚙️ Configuration

  • Catalogs: Add, remove, and reorder catalogs (TMDB, TVDB, MAL, AniList, MDBList, streaming, etc.).
  • Providers: Set preferred metadata and artwork provider for each type.
  • Search: Enable/disable search engines per type; enable AI search with Gemini API key.
  • Integrations: Connect MDBList and more for personal lists.
  • Security: Set user and (optional) addon password for config protection.

All configuration is managed via the /configure UI and saved per-user (UUID) in the database.


🔌 API & Endpoints

  • /stremio/:userUUID/:compressedConfig/manifest.json — Stremio manifest (per-user config)
  • /api/config/save — Save user config (POST)
  • /api/config/load/:userUUID — Load user config (POST)
  • /api/config/update/:userUUID — Update user config (PUT)
  • /api/config/is-trusted/:uuid — Check if UUID is trusted (GET)
  • /api/cache/* — Cache health and admin endpoints
  • /poster/:type/:id — Poster proxy with fallback and RPDB support
  • /resize-image — Image resize proxy
  • /api/image/blur — Image blur proxy

🧩 Supported Providers

  • Movies/Series: TMDB, TVDB, IMDb, TVmaze
  • Anime: MyAnimeList (MAL), AniList, Kitsu, AniDB, TVDB, IMDb
  • Artwork: TMDB, TVDB, Fanart.tv, AniList, RPDB
  • Personal Lists: MDBList, MAL, AniList
  • Streaming: Netflix, Disney+, Amazon, and more (via TMDB watch providers)

🧑‍💻 Development

# Backend
npm run dev:server

# Frontend
npm run dev
  • Edit /addon for backend, /configure for frontend.
  • Uses Redis for caching, SQLite/PostgreSQL for config storage.

📄 License

Apache 2.0 — see LICENSE.


🙏 Credits

Special thanks to MrCanelas, the original developer of the TMDB Addon for Stremio, whose work inspired and laid the groundwork for this project.


⚠️ Disclaimer

This addon aggregates metadata from third-party sources. Data accuracy and availability are not guaranteed.