NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Kirara News Translation Applier // @namespace https://openuserjs.org/users/Alive6ftUnder // @updateURL https://openuserjs.org/meta/Alive6ftUnder/Kirara_News_Translation_Applier.meta.js // @version 0.1 // @description Fetches the translations of kirara news items // @author Some girl // @copyright 2018, Alive6ftUnder (https://openuserjs.org/users/Alive6ftUnder) // @license MIT // @match https://krr-prd-web.star-api.com/news/* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; const TL_MAP_URL = "https://pastebin.com/raw/GHqSQvgr"; var xhttp; var tlURL; var tlButton; var title; if (/\d{4,}/.test(window.location.href)) { var style = document.createElement('style'); style.innerHTML = "div.newsType { display: inline-block; }" + "div.newsType.translate { float: right; }"+ "div.newsType.translate.check { background-image: url(https://i.imgur.com/9a1OVfI.png); }"+ "div.newsType.translate.fetch { background-image: url(https://i.imgur.com/uaOyqKp.png); }"+ "div.newsType.translate.fetch:hover { filter: brightness(1.05); }"+ "div.newsType.translate.get { background-image: url(https://i.imgur.com/veHKHMp.png); }"+ "div.newsType.translate.notl { background-image: url(https://i.imgur.com/dhAM6CE.png); }"+ "div.newsType.translate.done { background-image: url(https://i.imgur.com/7aJn98n.png); }"; document.querySelector('head').appendChild(style); tlButton = document.createElement('div'); tlButton.classList.add("newsType"); tlButton.classList.add("translate"); tlButton.classList.add("check"); var nh = document.querySelector('.newsHeader'); nh.insertBefore(tlButton, nh.children[1]); xhttp = new XMLHttpRequest(); xhttp.addEventListener("load", translationCheck); xhttp.open("GET",TL_MAP_URL); xhttp.send(); } else { var styleSheet = document.createElement('link'); styleSheet.setAttribute('rel', 'stylesheet'); styleSheet.setAttribute('id', 'star-news_detail-style-css'); styleSheet.href = "https://krr-prd-web.star-api.com/wp-content/themes/star/assets/css/news_detail.css?ver=2017122705"; styleSheet.setAttribute('type', 'text/css'); styleSheet.setAttribute('media', 'all'); document.querySelector('head').appendChild(styleSheet); var style = document.createElement('style'); style.innerHTML = ".newsDetail .newsInner { margin: 40px auto 40px auto}"+ ".newsPost.translated { filter: brightness(1.1); }"+ ".page-numbers li { display: inline; }"+ ".page-numbers {"+ "width: fit-content;"+ "margin: 12px auto 0px auto;"+ "font-size: 30px;"+ "}"+ ".page-numbers li {"+ "margin: 0px 8px;"+ "}"+ ".page-numbers .prev { font-size: 0; }"+ ".page-numbers .prev::after {"+ "font-size: 30px;"+ "content: 'prev';"+ "}"+ ".page-numbers .next { font-size: 0; }"+ ".page-numbers .next::after {"+ "font-size: 30px;"+ "content: 'next';"+ "}"; document.querySelector('head').appendChild(style); document.querySelector('.newsTop').classList.add('newsDetail'); var range = new Range(); range.selectNode(document.querySelector('.newsList')); var mod = document.createElement('div'); mod.classList.add('newsInner'); range.surroundContents(mod); var posts = document.querySelectorAll('.newsPost'); for (var i = 0; i < posts.length; i++) { range.selectNodeContents(posts[i]); mod = document.createElement('div'); mod.classList.add('newsTitle'); range.surroundContents(mod); } xhttp = new XMLHttpRequest(); xhttp.addEventListener("load", titleCheck); xhttp.open("GET",TL_MAP_URL); xhttp.send(); } function translationCheck(e) { if (xhttp.status == 200) { var r = xhttp.responseText; var id = window.location.href.match(/\d+/)[0]; //console.log(xhttp.responseText); //console.log(id); var n = r.indexOf(id); //console.log(n); if (n != -1) { var start = r.indexOf("url",n); var end = r.indexOf('\n',start); if (end == -1) { end = r.length; } tlURL = r.substring(start+4, end); //console.log(tlURL); start = r.indexOf("title",n); end = r.indexOf('\n',start); if (end == -1) { end = r.length; } title = r.substring(start+6, end); tlButton.onclick = translationFetch; tlButton.classList.remove("check"); tlButton.classList.add("fetch"); } else { tlButton.classList.remove("check"); tlButton.classList.add("notl"); } } else { console.log("Error fetching tl map"); tlButton.classList.remove("check"); tlButton.classList.add("notl"); } } function translationFetch() { tlButton.onclick = null; tlButton.classList.remove("fetch"); tlButton.classList.add("get"); xhttp = new XMLHttpRequest(); xhttp.addEventListener("load", translationApply); xhttp.open("GET",tlURL); xhttp.send(); } function translationApply(e) { if (xhttp.status == 200) { var parser = new DOMParser(); var html = parser.parseFromString(xhttp.responseText, "text/html"); //console.log(html); var divs = document.querySelectorAll('.newsText > div'); for (var i = 0; i < divs.length; i++) { var phDiv = html.getElementById(divs[i].getAttribute("data-post-id")); //console.log(phDiv); divs[i].querySelector('.charNameMain').innerHTML = phDiv.querySelector("#name").innerHTML; divs[i].querySelector('.charNameSub').innerHTML = phDiv.querySelector("#nameSub").innerHTML; divs[i].querySelector('.charSkillSp > .fontStand').innerHTML = "Totteoki"; var skillsText = divs[i].querySelectorAll('.charSkill dd'); skillsText[0].innerHTML = phDiv.querySelector("#ttk").innerHTML; skillsText[1].innerHTML = phDiv.querySelector("#skill1").innerHTML; skillsText[2].innerHTML = phDiv.querySelector("#skill2").innerHTML; phDiv.parentElement.insertBefore(divs[i], phDiv); phDiv.parentElement.removeChild(phDiv); } document.querySelector('.newsTitle dd').innerHTML = title; document.querySelector('.newsText').innerHTML = html.querySelector('body').innerHTML; tlButton.classList.remove("get"); tlButton.classList.add("done"); console.log("Working as intended!"); } else { console.log("Error fetching tl"); tlButton.classList.remove("get"); tlButton.classList.add("notl"); } } function titleCheck(e) { if (xhttp.status == 200) { var r = xhttp.responseText; var links = document.querySelectorAll('.newsPost a'); for (var i = 0; i < links.length; i++) { var id = links[i].href.match(/\d+/)[0]; var n = r.indexOf(id); if (n != -1) { var start = r.indexOf("title",n); var end = r.indexOf('\n',start); if (end == -1) { end = r.length; } links[i].querySelector('dd').innerHTML = r.substring(start+6, end); links[i].parentElement.parentElement.classList.add('translated'); } } } else { console.log("Error fetching tl map"); } } })();