[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10934":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":18,"lastSyncTime":31,"discoverSource":32},10934,"JellyEmu","Jellyfin-PG\u002FJellyEmu","Jellyfin-PG","Adds support for rom library with emulator js to jellyfin.","https:\u002F\u002Fjellyfin-pg.github.io\u002FJellyEmu\u002F",null,"C#",153,6,124,10,0,1,2,16,3,44.14,false,"main",true,[26,27],"emulation","jellyfin","2026-06-12 04:00:52","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"assets\u002Fjellyemu.svg\" alt=\"JellyEmu Logo\" width=\"120\" \u002F>\n  \u003Ch1>JellyEmu\u003C\u002Fh1>\n  \u003Cp>A plugin for jellyfin 10.11+ to import, manage, play and share your roms and pico-8 games with users.\u003C\u002Fp>\n  \u003Cp>\u003Csub>Now with romm integration, pico-8, and VR\u002FAR support.\u003C\u002Fsub>\u003C\u002Fp>\n  \u003Cp>\u003Csub>Checkout the official JellyEmu Client (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJellyfin-PG\u002FVantage\">Vantage\u003C\u002Fa>).\u003C\u002Fsub>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJellyfin-PG\u002FJellyEmu\u002Factions\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FJellyfin-PG\u002FJellyEmu\u002Frelease.yml\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJellyfin-PG\u002FJellyEmu\u002Freleases\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FJellyfin-PG\u002FJellyEmu\u002Ftotal?label=downloads\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Forgs\u002FJellyfin-PG\u002Fprojects\u002F2\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FProject-Board-blue\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fv7P9CAvCKZ\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20Server-5865F2?logo=discord&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Screenshots\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"assets\u002Fscreen01.png\">\n    \u003Cimg src=\"assets\u002Fscreen01.png\" width=\"45%\" alt=\"Jellyemu details page\" \u002F>\n  \u003C\u002Fa>\n   \n  \u003Ca href=\"assets\u002Fscreen02.png\">\n    \u003Cimg src=\"assets\u002Fscreen02.png\" width=\"45%\" alt=\"Jellyemu rom emulator\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Ca href=\"assets\u002Fscreen03.png\">\n    \u003Cimg src=\"assets\u002Fscreen03.png\" width=\"45%\" alt=\"Jellyemu home page\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Ca href=\"assets\u002Fscreen04.png\">\n    \u003Cimg src=\"assets\u002Fscreen04.png\" width=\"45%\" alt=\"Jellyemu save state browser\" \u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"assets\u002Fscreen05.png\">\n    \u003Cimg src=\"assets\u002Fscreen05.png\" width=\"45%\" alt=\"Jellyemu pico8 emulator\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cem>Click on an image to view it full size.\u003C\u002Fem>\n\u003C\u002Fp>\n\n---\n\n# JellyEmu Plugin Setup Guide\n\nThis guide details the process for integrating an emulation collection into Jellyfin for metadata management and direct playback.\n\n---\n\n## 1. Plugin Configuration\nBefore adding your media, you should configure the plugin to communicate with external game databases.\n\n* Navigate to **Dashboard** and select **Plugins**.\n* Locate and select the **Emulator Library** configuration page.\n* Input your **IGDB API Key** (Client ID and Client Secret).\n* Input your **RAWG API Key**.\n* Input your **SteamDBGrid API Key**.\n* Save your changes. This ensures the metadata providers are authenticated and ready to fetch game data.\n\n---\n\n## 2. Library Creation\nWith the plugin configured, you can now create the library to house your ROMs.\n\n* Go to **Dashboard** and select **Libraries**.\n* Click **Add Media Library**.\n* Select **Books** as the Content Type. Note: This specific type is required for the plugin to map game data correctly within the Jellyfin database.\n* Assign a name such as **Video Games** and add the folder path where your ROMs are stored.\n* Under the **Metadata Downloaders** section, ensure that **IGDB** and **RAWG** are checked\u002Fenabled.\n* Finalize the library creation by clicking **OK**.\n\n---\n\n## 3. Supported Platforms and Extensions\nEnsure your files are placed in the library folder using the supported extensions for each platform.\n\n| Platform | Common Extensions |\n| :--- | :--- |\n| **Nintendo (NES)** | .nes |\n| **Super Nintendo (SNES)** | .sfc, .smc |\n| **Game Boy (GB)** | .gb |\n| **Game Boy Color (GBC)** | .gbc |\n| **Game Boy Advance (GBA)** | .gba |\n| **Virtual Boy (VB)** | .vb |\n| **Nintendo DS (NDS)** | .nds |\n| **Nintendo 64 (N64)** | .n64, .z64 |\n| **PlayStation (PSX)** | .iso, .bin, .cue, .chd |\n| **PlayStation Portable (PSP)** | .iso, .cso |\n| **Sega Genesis \u002F Mega Drive** | .md, .gen, .bin |\n| **Sega CD** | .iso, .bin, .cue, .chd |\n| **Sega Game Gear** | .gg |\n| **Sega Saturn** | .iso, .bin, .cue |\n| **Sega 32X** | .32x |\n| **Sega Master System** | .sms |\n| **Atari 2600** | .a26, .bin |\n| **Atari 5200** | .a52, .bin |\n| **Atari 7800** | .a78, .bin |\n| **Atari Jaguar** | .j64, .jag |\n| **Atari Lynx** | .lnx |\n| **MAME \u002F Arcade \u002F CPS** | .zip, .7z |\n| **3DO** | .iso, .bin, .cue |\n| **Commodore 64** | .d64, .g64, .t64 |\n| **Commodore 128** | .d64, .d81 |\n| **Commodore PET** | .d64, .t64 |\n| **Commodore Plus\u002F4** | .d64 |\n| **Commodore VIC-20** | .d64 |\n| **Amiga** | .adf, .ipf, .lha |\n| **ColecoVision** | .col, .rom |\n| **PC Engine \u002F TurboGrafx-16** | .pce, .bin, .cue |\n| **PC-FX** | .bin, .cue |\n| **Neo Geo Pocket** | .ngp, .ngc |\n| **WonderSwan** | .ws, .wsc |\n| **DOS** | .exe, .com, .conf, .zip |\n| **Pico-8** | .p8, .p8.png, .zip |\n\n---\n\n## 4. Scanning and Playback\nOnce the library is established and the providers are enabled:\n\n* Go to **Dashboard** and select **Libraries**.\n* Click the three dots on your game library and select **Scan Library Files**.\n* Jellyfin will begin matching your files against IGDB and RAWG to download box art and descriptions.\n* Once the scan finishes, your games will appear on the home screen, ready to be browsed and played.\n\n---\n\n## Installation\n\nJellyEmu depends on the **File Transformation** plugin to inject CSS and JavaScript into Jellyfin's web interface. Both plugins must be installed from the same plugin catalogue — install them in the order below.\n\n### Step 1 — Add the plugin catalogue\n\n1. Open your Jellyfin dashboard\n2. Go to **Administration → Plugins → Repositories**\n3. Click **Add** and enter the following URL:\n\n```\nhttps:\u002F\u002Fraw.githubusercontent.com\u002FJellyfin-PG\u002FRepository\u002Frefs\u002Fheads\u002Fmain\u002Fmanifest.json\n```\n\n4. Click **Save**\n\n### Step 2 — Install File Transformation\n\n1. Go to **Administration → Plugins → Catalogue**\n2. Find **File Transformation** and click **Install**\n3. When prompted, confirm the installation\n\n### Step 3 — Install JellyEmu\n\n1. Still in the **Catalogue**, find **JellyEmu** and click **Install**\n2. When prompted, confirm the installation\n\n### Step 4 — Restart Jellyfin\n\nRestart your Jellyfin server. Both plugins must be active at the same time — File Transformation handles the page injection, JellyEmu manages your roms.\n\n---\n\n## ROM Naming & Folder Structure Guide\n\nJellyEmu uses a smart detection system to figure out which console a ROM belongs to and exactly which game it is. You have a lot of flexibility in how you organize your library.\n\n### How Platform Detection Works\nThe plugin determines a ROM's platform using a strict 3-step priority list. If step 1 fails, it moves to step 2, and so on.\n\n1. **Inline Tokens:** The system looks for a platform name wrapped in brackets `[]` or parentheses `()` anywhere in the filename.\n2. **Folder Names:** The system checks the parent and grandparent folder names of the ROM file.\n3. **File Extensions:** The system checks the file extension. This only works for **unambiguous** extensions (like `.nes` or `.z64`).\n\n> **Note on Ambiguous Formats:** Formats shared across multiple consoles (like `.iso`, `.chd`, `.cue`, and `.pbp`) are considered ambiguous. For these files, you **must** use an inline token or place them in a properly named folder, otherwise the platform will be marked as \"Unknown\".\n\n---\n\n| Target Platform | Accepted Folder Names & Inline Tokens |\n| :--- | :--- |\n| **Nintendo Entertainment System (NES)** | `nes`, `famicom`, `nintendo entertainment system` |\n| **Super Nintendo (SNES)** | `snes`, `super nintendo`, `super famicom`, `super nintendo entertainment system` |\n| **Nintendo 64** | `n64`, `nintendo 64` |\n| **Game Boy \u002F Color** | `gb`, `game boy`, `gameboy`, `gbc`, `game boy color`, `gameboy color` |\n| **Game Boy Advance** | `gba`, `game boy advance`, `gameboy advance` |\n| **Nintendo DS** | `nds`, `nintendo ds`, `ds` |\n| **Virtual Boy** | `vb`, `virtual boy` |\n| **Sega Master System** | `sms`, `master system`, `sega master system` |\n| **Sega Genesis \u002F Mega Drive** | `genesis`, `sega genesis`, `mega drive`, `sega mega drive`, `md` |\n| **Sega Game Gear** | `gg`, `game gear`, `sega game gear` |\n| **Sega Saturn** | `ss`, `sega saturn` |\n| **Sega CD** | `sega cd`, `segacd`, `mega cd`, `sega-cd` |\n| **Sega 32X** | `32x`, `sega 32x` |\n| **PlayStation 1** | `psx`, `ps1`, `playstation`, `playstation 1`, `ps one` |\n| **Atari 2600** | `atari 2600`, `2600` |\n| **Atari 7800** | `atari 7800`, `7800` |\n| **Atari Lynx** | `lynx`, `atari lynx` |\n| **Atari Jaguar** | `jaguar`, `atari jaguar` |\n| **WonderSwan** | `ws`, `wonderswan`, `wonder swan` |\n| **TurboGrafx-16 \u002F PC Engine** | `pce`, `turbografx`, `turbografx-16`, `turbografx 16`, `pc engine` |\n| **ColecoVision** | `coleco`, `colecovision` |\n| **NeoGeo Pocket \u002F Color** | `ngp`, `neogeo pocket`, `neo geo pocket`, `ngpc` |\n| **Pico-8** | `pico-8`, `pico`, `pico8` |\n\n---\n\n### Method 1: Organizing by Folder (Recommended)\nThe easiest way to organize a large library is to place your ROMs inside folders named after the console. JellyEmu checks up to two directories up, so subfolders for game series are perfectly fine.\n\nThe folder name can be the official name or a common abbreviation (e.g., `SNES`, `Super Nintendo`, and `Super Famicom` will all map to **SNES**).\n\n**Examples:**\n```text\n\u002FROMs\u002F\n ├── \u002FSNES\u002F\n │    └── Super Mario World.sfc          (Platform: SNES)\n ├── \u002FPlayStation\u002F\n │    ├── \u002FFinal Fantasy VII\u002F\n │    │    └── Disc 1.chd                (Platform: PlayStation)\n └── \u002FSega Genesis\u002F\n      └── Sonic The Hedgehog.md          (Platform: Sega Genesis)\n```\n\n### Method 2: Inline Naming Tokens\nIf you prefer to dump all your ROMs into a single flat directory, you can explicitly define the platform by adding the console name in brackets `[]` or parentheses `()` in the filename.\n\nJellyEmu will automatically hide these platform tags in the user interface so your game titles remain clean.\n\n**Examples:**\n* `Sonic CD [Sega CD].chd` ➔ UI Display: **Sonic CD**\n* `Crash Bandicoot (PS1).chd` ➔ UI Display: **Crash Bandicoot**\n* `Super Mario 64 [Nintendo 64].z64` ➔ UI Display: **Super Mario 64**\n\n*region flags are now parsed (like `(USA)`) and added to game details.*\n\n*revision flags (like `[!]`) are intentionally ignored by the platform detector and will remain part of the display name.*\n\n---\n\n### Forcing Specific Metadata (IGDB & RAWG)\nSometimes, game titles are ambiguous, or a metadata provider grabs the wrong version of a game (like an HD remake instead of the retro original). \n\nYou can force JellyEmu to link the ROM to a specific database entry by adding a provider ID directly into the filename. The plugin will use this exact ID to fetch artwork and descriptions, and will automatically hide the token from the UI.\n\n| Provider | Tag |\n| :--- | :--- |\n| **RAWG** | [rawg-19291] |\n| **IGDB** | [igdb-9102] |\n| **Wikipedia** | [wiki-8482] |\n| **LexalOffle** | [loid-819821] |\n| **Hasheous** | [hash-235694] |\n| **SteamDBGrid** | [sdbg-34084] |\n\n**Examples:**\n* `Doom [igdb-1039].iso` ➔ Forces the IGDB entry for the 1993 original, rather than the 2016 reboot.\n* `Aladdin (Sega) [rawg-871812].md` ➔ Forces the exact RAWG entry.\n\nYou can combine provider IDs and platform tokens safely. For example:\n`Sonic Adventure [igdb-3273][Sega CD].chd` will properly match the IGDB database entry, assign it to the Sega CD platform, and display cleanly as simply **Sonic Adventure**.\n","JellyEmu 是一个为 Jellyfin 10.11+ 设计的插件，用于导入、管理和播放 ROM 和 Pico-8 游戏。该插件支持通过 JavaScript 模拟器在 Jellyfin 中创建和管理游戏库，并提供 VR\u002FAR 支持。其核心功能包括游戏元数据管理（如通过 IGDB、RAWG 等外部数据库获取信息）、直接播放以及与用户的分享。此外，JellyEmu 还提供了官方客户端 Vantage 以增强用户体验。适用于希望在一个统一平台上整合多媒体内容与复古游戏模拟器的家庭娱乐系统或个人媒体中心。","2026-06-11 03:30:52","CREATED_QUERY"]