Emby-Home-Swiper-UI

πŸš€ Emby & Jellyfin Home Swiper UI

![Visitors](https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fsohag1192%2FEmby-Home-Swiper-UI&label=Visitors&icon=github&color=%23198754&message=&style=flat-square&tz=UTC) ![GitHub stars](https://img.shields.io/github/stars/sohag1192/Emby-Home-Swiper-UI?style=flat-square&color=gold) ![GitHub forks](https://img.shields.io/github/forks/sohag1192/Emby-Home-Swiper-UI?style=flat-square&color=blue) ![Emby Version](https://img.shields.io/badge/Emby%20Web-4.9.1.80%20--%204.10.1.0+-52B54B?style=flat-square&logo=emby&logoColor=white) ![Jellyfin Version](https://img.shields.io/badge/Jellyfin%20Web-10.8.x%20--%2010.11.x+-AA5CC3?style=flat-square&logo=jellyfin&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) **Transform your Emby and Jellyfin home screen into a stunning, modern media showcase with dynamic banners, ratings, external player launching, and animated announcements.** [✨ Features](#-key-features) β€’ [πŸ“Έ Previews](#-visual-previews) β€’ [πŸ“‚ Modules](#-repository-structure--modules) β€’ [πŸ› οΈ Installation](#%EF%B8%8F-installation-guide) β€’ [βš™οΈ Configuration](#%EF%B8%8F-customization--configuration) β€’ [πŸ§ͺ Troubleshooting](#-troubleshooting--faq) β€’ [πŸ“¬ Contact](#-contributing--contact) β€’ [πŸ’– Support](#-support--sponsorship)

πŸ“– Overview

Emby Home Swiper UI replaces the default library grid on your Emby & Jellyfin home page (#!/home) with an interactive, cinematic Swiper banner carousel. It dynamically queries your media server’s native APIs to showcase the newest, trending, and top-rated movies and TV series β€” with zero external library overhead for core functionality.

Beyond the home banner carousel, this all-in-one repository also provides:


πŸ“Έ Visual Previews

Emby Swiper V2 Preview 1 Emby Swiper V2 Preview 2 Emby Swiper V2 Preview 3

Jellyfin Carousel Preview 1 Jellyfin Carousel Preview 2

🎬 External Player Integration (emby-player)

External Player Preview

πŸ“’ Item Detail Notice & Announcement Box (text_sider)

Text Sider Notice Preview


✨ Key Features

Category Feature Description
πŸš€ Performance Ultra-Lightweight Pure native JavaScript utilizing Emby/Jellyfin internal ApiClient. Minimal memory footprint.
πŸ–ΌοΈ Visuals High-Res Backdrops & Logos Automatically renders clear transparent PNG logos, backdrop fanart, taglines, and synopsis.
⭐ Metadata Rating & Year Badges (V2) Displays Community Rating (e.g., ⭐ 8.5/10), Production Year (e.g., 2024), and Official Content Rating (PG-13, TV-MA).
πŸ”„ Animation Auto-Slide & Pause on Hover Rotates slides smoothly every 6–8 seconds; automatically pauses when hovering for uninterrupted reading.
πŸ“± Responsiveness Fully Responsive Layout Adaptive styling seamlessly scales between 4K TVs, Ultrawide monitors, Laptops, Tablets, and Smartphones.
🎯 Navigation Interactive Controls Next / Previous buttons, clickable pagination bullet dots, and keyboard/touch swipe navigation.
🍿 Playback External Player Routing Launch streams straight into PotPlayer (Windows), MPV (via mpv-handler), VLC, and MX Player.
πŸ“’ Announcements Detail Page Alert Box Inject customizable multilingual notice banners on media detail pages with smooth kinetic animation.
πŸ›‘οΈ Reliability Graceful Error Handling Fallback backdrops and error catches prevent layout breaks when metadata or fanart is missing.

πŸ“‚ Repository Structure & Modules

Emby-Home-Swiper-UI/
β”œβ”€β”€ home-swiper-v2/         # 🌟 Advanced Swiper with Ratings, Year & UI upgrades
β”‚   β”œβ”€β”€ home-swiper.js      # Clean Swiper script
β”‚   β”œβ”€β”€ home_rating with year.js # Swiper with Community Rating ⭐ & Year πŸ“… badges
β”‚   └── img/                # V2 Screenshots
β”œβ”€β”€ home-sider-v1/          # πŸ“¦ Classic lightweight home banner slider
β”‚   β”œβ”€β”€ home.js             # V1 base swiper logic
β”‚   └── img/                # V1 Screenshots
β”œβ”€β”€ Jellyfin/               # πŸ‡ Dedicated Jellyfin Web integration
β”‚   β”œβ”€β”€ jellyfin/           # Styles, main.js, jQuery & MD5 dependencies
β”‚   β”œβ”€β”€ script.sh           # Auto setup script for Jellyfin Web
β”‚   └── img/                # Jellyfin Screenshots
β”œβ”€β”€ emby-player/            # 🎬 External player launcher (PotPlayer, MPV, VLC)
β”‚   β”œβ”€β”€ emby_launch_player.js
β”‚   └── README.md
β”œβ”€β”€ text_sider/             # πŸ“’ Media detail page announcement & notice boxes
β”‚   β”œβ”€β”€ Text Slider Box.html
β”‚   β”œβ”€β”€ Text No Slider Box.html
β”‚   └── Text Warning Box.html
β”œβ”€β”€ script.sh               # 🐧 Linux/Docker automatic installation script
β”œβ”€β”€ setup-swiper.sh         # 🐧 Enhanced Linux/Docker injection script
β”œβ”€β”€ download-homejs.bat     # πŸͺŸ Windows PowerShell auto-download script
β”œβ”€β”€ upload.bat              # πŸ› οΈ Git upload helper script
└── README.md               # πŸ“– Main documentation

πŸ› οΈ Installation Guide

Choose your platform and preferred installation method below:

Step 1: Locate your Emby Web dashboard directory

Find the dashboard-ui folder on your server:

Step 2: Download & Copy the Script

  1. Choose your preferred version: home-swiper-v2/home_rating with year.js (⭐ Ratings & Year Edition - Recommended), home-swiper-v2/home-swiper.js (Minimal), or home-sider-v1/home.js (Classic).
  2. Rename the selected file to home.js and copy it directly into your dashboard-ui/ directory (or inside a subfolder like dashboard-ui/emby-crx/home.js).

Step 3: Inject the Script in index.html

Open dashboard-ui/index.html with a text editor and add the script tag just before the closing </head> or </body> tag:

<!-- Emby Home Swiper UI -->
<script src="home.js" defer></script>

(If placed in a subfolder like emby-crx/home.js, use <script src="emby-crx/home.js" defer></script>)

Step 4: Refresh & Enjoy

Restart your Emby server or clear your browser cache and refresh (Ctrl + F5). Navigate to #!/home to see your new Swiper banner in action!


⚑ Option 2: Emby Automated Setup (Linux / Docker)

Run the included automated setup script in your dashboard-ui directory:

# Navigate to your dashboard-ui folder
cd /path/to/emby/system/dashboard-ui/

# Download and execute the automated setup script
curl -sSL https://raw.githubusercontent.com/sohag1192/Emby-Home-Swiper-UI/main/setup-swiper.sh | bash

πŸ‡ Option 3: Jellyfin Server Installation

  1. Copy the contents of the Jellyfin/jellyfin/ directory into your Jellyfin web root folder:
    • Linux: /usr/share/jellyfin/web/
    • Windows: C:\Program Files\Jellyfin\Server\jellyfin-web\
    • Docker: /jellyfin/jellyfin-web/
  2. Edit index.html in your Jellyfin web directory and insert the following before </head>:
<!-- Jellyfin Swiper UI Assets -->
<link rel="stylesheet" id="theme-css" href="jellyfin-crx/style.css" type="text/css" media="all" />
<script src="jellyfin-crx/jquery-3.6.0.min.js"></script>
<script src="jellyfin-crx/md5.min.js"></script>
<script src="jellyfin-crx/main.js"></script>
  1. Restart Jellyfin:
    sudo systemctl restart jellyfin
    

🎬 Option 4: External Player Launcher (emby-player)

Route media playback directly to third-party desktop players (PotPlayer, MPV, VLC):

  1. Copy emby-player/emby_launch_player.js into your dashboard-ui/emby-player/ folder.
  2. In dashboard-ui/index.html, add the following right before </body>:
<!-- External Player Hook -->
<script src="emby-player/emby_launch_player.js" defer></script>

Requirements for External Players:


πŸ“’ Option 5: Item Detail Notice Box (text_sider)

To display announcement banners or server status warnings on media item detail pages (#!/item?id=...):

  1. Open text_sider/Text Slider Box.html (or Text Warning Box.html).
  2. Copy the <style> and <script> blocks into your dashboard-ui/index.html right before </body>.
  3. Customize your alert title and message text in the code as desired.

🧩 Option 6: Browser Extension (Tampermonkey / Violentmonkey)

If you do not have root/admin access to modify the server’s files, you can inject the script on your client side:

  1. Install Tampermonkey or Violentmonkey extension in your browser.
  2. Create a new UserScript with the following header:
    // ==UserScript==
    // @name         Emby Home Swiper UI
    // @namespace    https://github.com/sohag1192/Emby-Home-Swiper-UI
    // @version      2.0
    // @description  A dynamic banner carousel for Emby Web
    // @match        *://*/web/index.html*
    // @match        *://*/*/web/index.html*
    // @require      https://raw.githubusercontent.com/sohag1192/Emby-Home-Swiper-UI/main/home-swiper-v2/home_rating%20with%20year.js
    // @grant        none
    // ==/UserScript==
    

βš™οΈ Customization & Configuration

You can easily adjust settings inside home.js / home-swiper.js:

// In class HomeSwiper.start():

this.itemQuery = {
    ImageTypes: "Primary,Backdrop",
    EnableImageTypes: "Primary,Backdrop,Banner,Logo",
    IncludeItemTypes: "Movie,Series", // Filter item types (e.g. "Movie", "Series", "BoxSet")
    SortBy: "DateCreated",            // Sort order: "DateCreated", "PremiereDate", "CommunityRating", or "Random"
    SortOrder: "Descending",
    Recursive: true,
    Limit: 10,                        // Maximum number of banner slides
    Fields: "Taglines,Overview,ParentId,DateCreated,PremiereDate,ProductionYear,CommunityRating,OfficialRating"
};

this.slideDelay = 6000;              // Slide rotation duration in milliseconds (e.g., 6000 = 6 seconds)
this.showItemNum = 9;                // Number of items to display

πŸ§ͺ Troubleshooting & FAQ

1. The banner is not appearing on the home page - **Check the URL Route:** The script only triggers on the home route: `#!/home`. Make sure you are on the main dashboard home page. - **Open Developer Tools (`F12`):** Check the **Console** tab for any red errors. - **Verify `ApiClient` Availability:** In the browser console, type: ```javascript console.log(ApiClient); ``` If `ApiClient` is undefined, make sure the script is loaded with `defer` or placed right before `</body>`. - **Manually Initialize:** Test if the swiper initializes by typing in the console: ```javascript HomeSwiper.init(); ```
2. Images or logos are missing / blank - Check if your media items have backdrops and clear logos identified in Emby/Jellyfin metadata. - If an item doesn't have a Logo, the script will fall back gracefully to text title or primary poster fanart.
3. Changes disappear after Emby or Jellyfin server updates - Server updates can sometimes overwrite `index.html`. - Keep a backup of your `home.js` script and simple injection line, or run `setup-swiper.sh` again after server updates.
4. How do I clear cache after updating scripts? - Perform a hard refresh: `Ctrl + Shift + R` (Windows/Linux) or `Cmd + Shift + R` (macOS). - On mobile devices, clear browser cached site data.

πŸ§ͺ Tested Compatibility

Platform / Browser Version Status
Emby Web Client 4.9.1.80 – 4.10.1.0+ βœ… Supported (Tested OK)
Emby Server / Web Version [4.10.1.0] (version=4.10.1.0) βœ… Test Done & Working (OK)
Emby Server / Web Version [4.10.0.40] (version=4.10.0.40) βœ… Tested & Working (OK)
Jellyfin Web Client 10.8.x – 10.11.x+ βœ… Supported
Google Chrome / Chromium Latest βœ… Supported
Mozilla Firefox Latest βœ… Supported
Microsoft Edge Latest βœ… Supported
Apple Safari (macOS / iOS) Latest βœ… Supported
Mobile Browsers (Android / iOS) Responsive View βœ… Supported

[!NOTE] Compatibility Verified: Tested and confirmed working on Emby Web / Server Version [4.10.1.0] (version=4.10.1.0) (test done) and Version [4.10.0.40] (version=4.10.0.40).


🀝 Contributing & Contact

Contributions, bug reports, feature suggestions, and pull requests are welcome!
If you find a bug or have an idea to improve the UI, feel free to open an Issue or submit a Pull Request.

πŸ“¬ **Email:** [sohag1192@gmail.com](mailto:sohag1192@gmail.com) πŸ’¬ **Telegram:** [@Md_Sohag_Rana](https://t.me/Md_Sohag_Rana)

πŸ’– Support & Sponsorship

Hello Viewers & Developers! 🌟
If you find this project, custom UI components, or media streaming scripts helpful in your own setup, here are several ways you can support continuous development, hosting, and server maintenance costs:


| Payment Method | Network / Details | Action | | :--- | :--- | :---: | | πŸ’Ž **Crypto (SOL / USDT / Multi-Chain)** | `9YEThZFaqmqPbPJt8f4jLxPKELMzUmgncsrqvCv44BjE` | Crypto Wallet | | πŸ“± **bKash (Personal)** | Send Money (Bangladesh) β€” Contact on Telegram | bKash | | ⚑ **Nagad (Personal)** | Send Money (Bangladesh) β€” Contact on Telegram | Nagad | | β˜• **Buy Me A Coffee** | Global Creator & Developer Support | Buy Me A Coffee | | ⭐ **Star Repositories** | Free Community Support on GitHub | Star |


πŸ’Ž Crypto Wallet Address (SOL / USDT / Multi-Chain):

9YEThZFaqmqPbPJt8f4jLxPKELMzUmgncsrqvCv44BjE

[!NOTE] πŸ’‘ Hover over or tap the code box above and click the Copy (πŸ“‹) button in the top-right corner to copy the wallet address instantly.



πŸ“œ Credits & Acknowledgments


πŸ“„ License

This project is licensed under the MIT License β€” free to use, modify, and distribute with attribution.