# Jellyfin

# Plugins

# Custom Tabs

<table border="1" id="bkmrk-repository-https%3A%2F%2Fw" style="border-collapse: collapse; width: 100%; height: 236.6px;"><colgroup><col style="width: 30.7739%;"></col><col style="width: 69.3453%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr><tr style="height: 57.8px;"><td style="height: 57.8px;">Repository</td><td style="height: 57.8px;">[https://www.iamparadox.dev/jellyfin/plugins/manifest.json](https://www.iamparadox.dev/jellyfin/plugins/manifest.json)</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">ver</td><td style="height: 29.8px;">0.2.6.0</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">[Link](https://notflix.pknw1.co.uk/web/#/dashboard/plugins/fbacd0b6fd464a05b0a42045d6a135b0?name=Custom%20Tabs)</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">  
</td></tr></tbody></table>

<details id="bkmrk-xml-config-%3C%3Fxml-ver"><summary>XML Config</summary>

```
<?xml version="1.0" encoding="utf-8"?>
<PluginConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Tabs>
    <TabConfig>
      <ContentHtml>&lt;style&gt;
#customTab_0 { 
    :root {
        --save-gut: max(env(safe-area-inset-left), 3.3%);
    }
   @media only screen and (max-width: 990px) {
       .appsIframe{
           height: calc(100vh - 105.15px)!important;
           margin-top: -6.15px!important;
       }
   } 
    .appsIframe {
        width: 100%;
        height: calc(100vh - 50.716px);
        position: absolute;
        border: 0;
        margin-top: -20.716px;
    } }
&lt;/style&gt;
&lt;div class="sections"&gt;
  &lt;iframe class="appsIframe" src="https://apps.notflix.pknw1.co.uk"&gt;&lt;/iframe&gt;
&lt;/div&gt;</ContentHtml>
      <Title>User Apps</Title>
    </TabConfig>
    <TabConfig>
      <ContentHtml>&lt;style&gt;
#customTab_1 { 
    :root {
        --save-gut: max(env(safe-area-inset-left), 3.3%);
    }
   @media only screen and (max-width: 990px) {
       .appsIframe{
           height: calc(100vh - 105.15px)!important;
           margin-top: -6.15px!important;
       }
   } 
    .appsIframe {
        width: 100%;
        height: calc(100vh - 50.716px);
        position: absolute;
        border: 0;
        margin-top: -20.716px;
    } }
&lt;/style&gt;
&lt;div class="sections"&gt;
  &lt;iframe class="appsIframe" src="https://gas.notflix.pknw1.co.uk"&gt;&lt;/iframe&gt;
&lt;/div&gt;</ContentHtml>
      <Title>*NEW* Console Games</Title>
    </TabConfig>
  </Tabs>
</PluginConfiguration>
```

</details>

# Plugin Template

<table border="1" id="bkmrk-developer-%C2%A0-reposito" style="border-collapse: collapse; width: 100%; height: 236.6px;"><colgroup><col style="width: 44.8242%;"></col><col style="width: 55.1758%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">[![image.png](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/scaled-1680-/8cBimage.png)](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/8cBimage.png)

</td><td style="height: 29.8px;">[![image.png](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/scaled-1680-/image.png)](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/image.png)

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">##### **Developer**

</td><td style="height: 29.8px;"> </td></tr><tr style="height: 57.8px;"><td style="height: 57.8px;">##### **Repository**

</td><td style="height: 57.8px;"> </td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">##### **ver**

</td><td style="height: 29.8px;"> </td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">##### **Config Link**

</td><td style="height: 29.8px;">##### [Link](https://notflix.pknw1.co.uk/web/#/dashboard/plugins/fbacd0b6fd464a05b0a42045d6a135b0?name=Custom%20Tabs)

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;"> </td><td style="height: 29.8px;"> </td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;"> </td><td style="height: 29.8px;"> </td></tr></tbody></table>

<details id="bkmrk-xml-config-%2Fhome%2Fapp"><summary>XML Config</summary>

`/home/apps/frontend/jellyfin-10.10.7/config/plugins/configurations`

```
conf
```

</details>

# !Catalogue

[https://notflix.pknw1.co.uk/web/#/dashboard/plugins/repositories](https://notflix.pknw1.co.uk/web/#/dashboard/plugins/repositories)

- [ ] [https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json](https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json)
- [ ] [https://github.com/lachlandcp/jellyfin-editors-choice-plugin/raw/main/manifest.json](https://github.com/lachlandcp/jellyfin-editors-choice-plugin/raw/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/crobibero/jellyfin-plugin-tmdb-trailers/master/manifest.json](https://raw.githubusercontent.com/crobibero/jellyfin-plugin-tmdb-trailers/master/manifest.json)
- [ ] [https://www.iamparadox.dev/jellyfin/plugins/manifest.json](https://www.iamparadox.dev/jellyfin/plugins/manifest.json)
- [ ] [https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json](https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json)
- [ ] [https://raw.githubusercontent.com/bvolvy/CustomLogoPlugin/main/manifest.json](https://raw.githubusercontent.com/bvolvy/CustomLogoPlugin/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/pknw1-development/jelly-static-assets/refs/heads/main/repository/manifest.json](https://raw.githubusercontent.com/pknw1-development/jelly-static-assets/refs/heads/main/repository/manifest.json)
- [ ] [https://raw.githubusercontent.com/Eeeeelias/playlist-generator/refs/heads/main/manifest.json](https://raw.githubusercontent.com/Eeeeelias/playlist-generator/refs/heads/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/0belous/universal-plugin-repo/refs/heads/main/manifest.json](https://raw.githubusercontent.com/0belous/universal-plugin-repo/refs/heads/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/n00bcodr/jellyfin-enhanced/main/manifest.json](https://raw.githubusercontent.com/n00bcodr/jellyfin-enhanced/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/ankenyr/jellyfin-plugin-repo/master/manifest.json](https://raw.githubusercontent.com/ankenyr/jellyfin-plugin-repo/master/manifest.json)
- [ ] [https://raw.githubusercontent.com/GrandguyJS/media-upload-plugin/main/manifest.json](https://raw.githubusercontent.com/GrandguyJS/media-upload-plugin/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/jyourstone/jellyfin-plugin-manifest/refs/heads/main/manifest.json](https://raw.githubusercontent.com/jyourstone/jellyfin-plugin-manifest/refs/heads/main/manifest.json)
- [ ] [https://raw.githubusercontent.com/n00bcodr/jellyfin-plugins/main/10.10/manifest.json](https://raw.githubusercontent.com/n00bcodr/jellyfin-plugins/main/10.10/manifest.json)
- [ ] [https://raw.githubusercontent.com/n00bcodr/Jellyfin-JavaScript-Injector/refs/heads/main/manifest.json](https://raw.githubusercontent.com/n00bcodr/Jellyfin-JavaScript-Injector/refs/heads/main/manifest.json)

# JS Injector

<table border="1" id="bkmrk-js-injector" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>JS Injector</td><td>[![image.png](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/scaled-1680-/0zyimage.png)](https://bookstack.notflix.pknw1.co.uk/uploads/images/gallery/2026-03/0zyimage.png)

</td></tr></tbody></table>

<details id="bkmrk-auto-whitelist-cooki"><summary>Auto-Whitelist Cookies</summary>

- [x]  on index.html
- [x] checks for `notflixuid` cookie
- [ ] if cookie DOES NOT exist
- [ ] loads URL `/resume/gen/<username> `
- [ ] URL is mapped to custom python api.notflix.pknw1.co.uk via nginx proxy manager
- [ ] reads the payload
- [ ] creates 1 year JWT
- [ ] returns JWT to store as cookie

```

    
(function () {
  function getCookie(name) {
    return document.cookie
      .split('; ')
      .find(row => row.startsWith(name + '='))
      ?.split('=')[1];
  }

  function setCookie(name, value, seconds) {
    document.cookie = `${name}=${encodeURIComponent(value)}; path=/; max-age=${seconds}; secure; samesite=lax`;
  }

  async function getSession(username) {
    const res = await fetch('/resume/gen/'+username);
    const data = await res.text(); // or res.text() if not JSON
    return data;
  }


  const existing = getCookie('notflixuid');

  if (!existing) {
    setTimeout(() => {
       const userButton = document.querySelector(".headerUserButton");
       const uid = userButton?.title?.toLowerCase();
       if (uid) {
        getSession(uid).then(sess => {
          setCookie('notflixuid', sess, 34560000); // 7 days
          console.log('Cookie set:', sess);
        });
      }

    }, 5000);
  } else {
    console.log('Cookie exists:', decodeURIComponent(existing));
  }
})();

```

</details>