flauschke,

I’ve adapted it to work on kbin - let me know if anyone finds any issues


<span style="font-style:italic;color:#969896;">// ==UserScript==
</span><span style="font-style:italic;color:#969896;">// @name         kbin lemmy redirect
</span><span style="font-style:italic;color:#969896;">// @version      1.0
</span><span style="font-style:italic;color:#969896;">// @description  Redirect kbin to your local Lemmy instance
</span><span style="font-style:italic;color:#969896;">// @author       @[email protected]
</span><span style="font-style:italic;color:#969896;">// @match        https://*/m/*
</span><span style="font-style:italic;color:#969896;">// @icon         https://join-lemmy.org/static/assets/icons/favicon.svg
</span><span style="font-style:italic;color:#969896;">// ==/UserScript==
</span><span style="color:#323232;">
</span><span style="font-style:italic;color:#969896;">// best effort guess
</span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">isKbin </span><span style="font-weight:bold;color:#a71d5d;">= typeof </span><span style="color:#0086b3;">KBIN_USER </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined' </span><span style="font-weight:bold;color:#a71d5d;">&& typeof </span><span style="color:#0086b3;">KBIN_MAGAZINE </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined'</span><span style="color:#323232;">;
</span><span style="color:#323232;">
</span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(isKbin) {
</span><span style="color:#323232;">    </span><span style="font-style:italic;color:#969896;">// Get URL info
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"feddit.de"</span><span style="color:#323232;">;
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">splitUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">location.href.split(</span><span style="color:#183691;">"/"</span><span style="color:#323232;">);
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">2</span><span style="color:#323232;">];
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">4</span><span style="color:#323232;">];
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localizedUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"https://" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"/c/" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"@" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">instanceUrl;
</span><span style="color:#323232;">
</span><span style="color:#323232;">    </span><span style="font-style:italic;color:#969896;">// Create redirect button if not on local
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#323232;">localLemmy) {
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">wrapper </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">);
</span><span style="color:#323232;">        wrapper.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"width: 100%;position: fixed;top: 0;"</span><span style="color:#323232;">)
</span><span style="color:#323232;">
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">container </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">);
</span><span style="color:#323232;">        container.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"position:relative;max-width: 1650px;width: 100%;margin: 0 auto;"</span><span style="color:#323232;">)
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">zNode </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"button"</span><span style="color:#323232;">);
</span><span style="color:#323232;">        zNode.innerText </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"Open in local instance"</span><span style="color:#323232;">;
</span><span style="color:#323232;">        zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"id"</span><span style="color:#323232;">, </span><span style="color:#183691;">"localizeContainer"</span><span style="color:#323232;">);
</span><span style="color:#323232;">        </span><span style="font-style:italic;color:#969896;">// add styles to the button embedded
</span><span style="color:#323232;">        zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(
</span><span style="color:#323232;">            </span><span style="color:#183691;">"style"</span><span style="color:#323232;">,
</span><span style="color:#323232;">            </span><span style="color:#183691;">"cursor: pointer; padding: 5px; margin-top: 55px; background-color: red; border-radius: 10%; border-width: 3px; border-style: solid; z-index: 10;max-width:200px;position:absolute;top:0;right:0;"
</span><span style="color:#323232;">        );
</span><span style="color:#323232;">        zNode.addEventListener(</span><span style="color:#183691;">"click"</span><span style="color:#323232;">, e </span><span style="font-weight:bold;color:#a71d5d;">=> </span><span style="color:#0086b3;">window</span><span style="color:#323232;">.location.replace(localizedUrl));
</span><span style="color:#323232;">        container.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(zNode);
</span><span style="color:#323232;">        wrapper.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(container);
</span><span style="color:#323232;">        </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.body.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(wrapper);
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">}
</span>
  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • Ask_kbincafe
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines