// ==UserScript==
// @name erai-raws sub preview Image
// @namespace http://tampermonkey.net/
// @version 1.5
// @description Show image preview next to the anime subtitles.
// @author dr.bobo0
// @match https://www.erai-raws.info/subs/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAMFBMVEVHcEy3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISG3ISFbcynrAAAAD3RSTlMA1OaywnKHOhgNXPQmnEsN6GgJAAACVUlEQVRYhe1WSYKEIAyUfZf//3YgLAbEbpzrTJ1EKbJVIsfxj78Ck/BLqj4lI9TF6Ci3r8mW0YjBX7EliTeIbfo5sAkPQQaWHjbp6qKTYH07NEa6x5eNzawuB6YzfHIghi1+qBmztXI21UBleqRbtVRAD7qtxRXOnhZ49h1tbXS6K4NUejmtc0DnJv04UgU8XvvAgtVPuxcQ2dvfKh/AS/2F8otjjLJCJlh//9bRdZBbiBLCawBKcoc+fdI1OiJD5sbit854ELa2gbpx57lgx7UwtRh70FHCGcdNTa3y2mh/ZsHOiTiRIcrkCVkUzZ3i1xW5mgRz2G7IsavwtTNc8JAYhghkWPUWdkHhY8EssTWxw0wiOI0t72RWfIqKqWPF97gONfiF4o2ATIkbP2u+vyh8oo4nnPe6B5TR4v8HZak7HzhV6xqK9KHhPGwYXjFsUqxl6V0NUedKOGxA0aGkKQPu3nhnc9HAbiQ6mK9YEmQV/xUjCOTKb5mvQyPMMyhb5d0GPLXyatHkivXCsAFAmcQQF9gjUsB/toudmWk7zqGpVqAu02So9Mlhk3cLaD3je+uz7kpgmM3FveD13+HQIKEQta0CpuUzYUKtx+3saJ13IMD8P8sldUtmw/A7b1cRUGgEh8dKLuFF4GkApznUX9GLlrMgn6hP4Kjcdq32j4BZ1qxCNO/4YpQ7/Z6EEaUA1/ptElABLofeJIHMdVPvkgAJHFrc4J78CjUmsPvE1tvvoPF+I5OlHbauKmol3JLWuHWAnxNQ3jJKw+ZdybLXN/t//HX8ACejMFAROu21AAAAAElFTkSuQmCC
// @grant none
// ==/UserScript==
(function() {
'use strict';
const FLAG_URL_PREFIX = "https://www.erai-raws.info/wp-content/themes/generatepress_child/flags/4x3/";
const ICON_STYLE = {
width: "20px",
height: "20px",
marginRight: "5px"
};
// Language code to flag mapping
const languageFlags = {
".ara": "sa.svg",
".eng": "us.svg",
"hrv.ass": "hr.svg",
".por": "br.svg",
".spa.ass": "es.svg",
".fre": "fr.svg",
".ita": "it.svg",
".may": "my.svg",
".cat": "es-ct.svg",
".baq": "es-pv.svg",
".glg": "es-ga.svg",
".fil": "ph.svg",
".tam": "lk.svg",
".rus": "ru.svg",
".ger": "de.svg",
".pol": "pl.svg",
".dut": "nl.svg",
".nob": "no.svg",
".fin": "fi.svg",
".tur": "tr.svg",
".swe": "se.svg",
".gre": "gr.svg",
".rum": "ro.svg",
".kor": "kr.svg",
".dan": "dk.svg",
".chi": "cn.svg",
".hun": "hu.svg",
".cze": "cz.svg",
".slo": "sk.svg",
".jpn": "jp.svg",
".heb": "il.svg",
".ind": "id.svg",
".hin": "in.svg",
".ukr": "ua.svg",
".tha": "th.svg",
".vie": "vn.svg"
};
// Add an icon before the text in span.file-name
function addIconBeforeFileName() {
const fileNameElements = document.querySelectorAll("span.file-name");
fileNameElements.forEach((element) => {
const fileName = element.textContent;
// Check if it matches a language code and insert the corresponding flag icon
for (const [langCode, flagFile] of Object.entries(languageFlags)) {
if (fileName.includes(langCode)) {
// Create icon element
const icon = document.createElement("img");
icon.src = FLAG_URL_PREFIX + flagFile;
// Apply icon styles
Object.assign(icon.style, ICON_STYLE);
// Insert the icon before the text
element.insertBefore(icon, element.firstChild);
break; // Stop after inserting the first matching flag
}
}
// Special case for Latin American Spanish
if (fileName.includes("5.spa") || fileName.includes("la.spa")) {
const icon = document.createElement("img");
icon.src = `${FLAG_URL_PREFIX}mx.svg`;
Object.assign(icon.style, ICON_STYLE);
element.insertBefore(icon, element.firstChild);
}
});
}
// Run the function to add icons
addIconBeforeFileName();
})();