// ==UserScript==
// @name S.TO - SerienStream.to - Stream Sorter
// @namespace http://tampermonkey.net/
// @version 2025-05-11
// @description Sorts the streams on S.TO and SerienStream.to by language based on your selection.
// @description:de Sortiert die Streams auf S.TO und SerienStream.to nach Sprache basierend auf deiner Auswahl.
// @author mOlDaViA
// @license MIT
// @match https://s.to/serie/stream/*/staffel-*/episode-*
// @match https://serienstream.to/serie/stream/*/staffel-*/episode-*
// @match http://186.2.175.5/serie/stream/*/staffel-*/episode-*
// @icon https://www.google.com/s2/favicons?sz=64&domain=s.to
// @grant unsafeWindow
// @run-at document-end
// @downloadURL none
// ==/UserScript==
(function () {
"use strict";
unsafeWindow.sortLanguage = function () {
// Change the language order here:
// "en" = English Dub
// "sub" = German Sub
// "de" = German Dub
const languageOrder = ["sub", "de", "en"];
const langKeyMap = {
sub: "3",
en: "2",
de: "1",
};
let found = false;
for (let i = 0; i < languageOrder.length; i++) {
const lang = languageOrder[i];
const langKey = langKeyMap[lang];
const selector = `.hosterSiteVideo ul li[data-lang-key="${langKey}"]`;
if ($(selector).length > 0) {
$(selector).show();
$(`.hosterSiteVideo ul li[data-lang-key!="${langKey}"]`).hide();
$(`.changeLanguageBox img[data-lang-key="${langKey}"]`).addClass(
"selectedLanguage"
);
$(`.changeLanguageBox img[data-lang-key!="${langKey}"]`).removeClass(
"selectedLanguage"
);
checkInlinePlayer();
found = true;
break;
}
}
if (!found) {
$(".changeLanguageBox").after(
"Derzeit keine Streams für diese Episode verfügbar.
"
);
}
};
unsafeWindow.sortLanguage();
})();