Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Search API HTML Element Filter 1.0.7 Minor update available for module search_api_html_element_filter (1.0.7). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). Varbase Media Header 9.2.1 Minor update available for module varbase_media_header (9.2.1). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module integrates your Drupal site with Jellyfin, a free media system. It allows you to display and manage your media libraries directly within Drupal by connecting to Jellyfin's API. You can browse libraries, view item details, and generate links for streaming media.

Overview

The Jellyfin Integration module provides a comprehensive Service-Oriented Architecture (SOA)
integration with Jellyfin, the free software media system. This module allows
Drupal developers to easily interact with Jellyfin's REST API to display and manage media libraries within their
Drupal sites.

Features

  • 30+ API Methods - Complete coverage of Jellyfin's key API endpoints
  • AJAX Connection Testing - Verify your configuration instantly from the admin UI
  • Library Browser - Built-in interface for browsing media libraries
  • Movie Grid - Visual display of your movie collection with posters
  • Item Details - Full metadata display including ratings, runtime, genres, and overview
  • Image URL Generation - Methods for posters, backdrops, and thumbnails
  • Stream URL Generation - Direct video streaming URLs

Available API Methods

System Operations

  • testConnection() - Verify server connectivity
  • getServerInfo() - Get server information
  • getPublicInfo() - Get public server info (no auth)

Library Operations

  • getLibraries() - List all media libraries
  • refreshLibrary() - Trigger library refresh
  • getMediaFolders() - Get media folders

Item Operations

  • getItems($params) - Query items with filters
  • getItem($itemId) - Get specific item details
  • getMovies($params) - Get movies
  • getSeries($params) - Get TV series
  • getEpisodes($params) - Get episodes
  • getLatestMedia($userId) - Get recently added
  • getSimilarItems($itemId) - Get similar items

Search & Metadata

  • search($query) - Search library
  • getGenres() - List genres
  • getStudios() - List studios
  • getArtists() - List artists
  • getPersons() - List persons (actors, directors)

Image & Playback

  • getPosterUrl($itemId) - Get poster image URL
  • getBackdropUrl($itemId) - Get backdrop image URL
  • getStreamUrl($itemId) - Get video stream URL

Requirements

  • Drupal 9.4, 10, or 11
  • A running Jellyfin server (10.x recommended)
  • API key with appropriate permissions

Installation

  1. Download and install the module
  2. Navigate to Configuration → Media → Jellyfin Integration
  3. Enter your Jellyfin server URL and API key
  4. Click "Test Connection" to verify
  5. Save configuration

Usage Example

// Get the Jellyfin client service
$jellyfin = \Drupal::service('jellyfin_integration.client');

// Get all movies
$movies = $jellyfin->getMovies(['Limit' => 20]);

// Display movie posters
foreach ($movies['Items'] as $movie) {
  $poster = $jellyfin->getPosterUrl($movie['Id'], 300);
  // Use $poster URL in your template
}

Related Modules

Credits

Developed following Service-Oriented Architecture patterns for clean, maintainable code.

Activity

Total releases
2
First release
Jan 2026
Latest release
6 months ago
Releases (12 mo)
2 ▲ from 0
Maintenance
Slowing

Releases

Version Type Release date
1.0.1 Stable Jan 13, 2026
1.0.0 Stable Jan 7, 2026