Plugins

Custom Tabs

 





Repository https://www.iamparadox.dev/jellyfin/plugins/manifest.json
ver 0.2.6.0

Link




XML Config
<?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>

 

 

Plugin Template

 

image.png

image.png

Developer
 
Repository
 
ver
 
   
   


XML Config

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

conf

 

 

!Catalogue

 

https://notflix.pknw1.co.uk/web/#/dashboard/plugins/repositories

JS Injector

JS Injector

image.png

Auto-Whitelist Cookies

 


    
(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));
  }
})();