From b9acf06be591eb1a1770e46f2f7a9be797d26573 Mon Sep 17 00:00:00 2001 From: Lauchmelder Date: Sat, 19 Mar 2022 20:07:22 +0100 Subject: [PATCH] v0.2 --- content.js | 34 +++++++++++++++++++++++++ manifest.json | 16 ++++++++++++ popup.html | 20 +++++++++++++++ popup.js | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 content.js create mode 100644 manifest.json create mode 100644 popup.html create mode 100644 popup.js diff --git a/content.js b/content.js new file mode 100644 index 0000000..8ca1a8e --- /dev/null +++ b/content.js @@ -0,0 +1,34 @@ +chrome.storage.local.get("characters", (data) => { + const characters = data.characters + + var rubyTags = document.body.getElementsByTagName("ruby") + + for(let tag in rubyTags) + { + var ruby = document.createElement("ruby") + ruby.innerHTML = rubyTags.item(tag).innerHTML + + var dummyRtTag = ruby.getElementsByTagName("rt").item(0) + try + { + dummyRtTag.parentNode.removeChild(dummyRtTag) + } catch(error) + { + console.error(error) + console.log(ruby) + } + + if(characters.includes(ruby.innerText)) + { + var rtTag = rubyTags.item(tag).getElementsByTagName("rt").item(0) + try + { + rtTag.parentNode.removeChild(rtTag) + } catch(error) + { + console.error(error) + console.log(rubyTags.item(tag)) + } + } + } +}) \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..932da71 --- /dev/null +++ b/manifest.json @@ -0,0 +1,16 @@ +{ + "name": "FuriKani", + "description": "Removes furigana on websites based on your WaniKani level", + "version": "0.2", + "manifest_version": 3, + "action": { + "default_popup": "popup.html" + }, + "content_scripts": [ + { + "matches": ["*://*/*"], + "js": ["content.js"] + } + ], + "permissions": ["storage"] +} \ No newline at end of file diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..2acf710 --- /dev/null +++ b/popup.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/popup.js b/popup.js new file mode 100644 index 0000000..0e26f4f --- /dev/null +++ b/popup.js @@ -0,0 +1,69 @@ +const getStorageData = key => + new Promise((resolve, reject) => + chrome.storage.local.get(key, result => + chrome.runtime.lastError + ? reject(Error(chrome.runtime.lastError.message)) + : resolve(result) + ) + ) + +const query = async (token, url) => { + const requestHeaders = new Headers() + requestHeaders.append("Authorization", "Bearer " + token) + + const endpoint = new Request( + url, + { + method: "GET", + headers: requestHeaders + } + ) + + var result = await fetch(endpoint) + return result.json() + } + +const submitButton = document.getElementById("submit-token"); +const inputField = document.getElementById("token"); + +submitButton.addEventListener( "click", () => { + chrome.storage.local.set({"token": inputField.value}) +}) + +const downloadButton = document.getElementById("download"); +downloadButton.addEventListener("click", async () => { + const userData = await getStorageData("token") + var url = "https://api.wanikani.com/v2/level_progressions" + var response = await query(userData.token, url) + var level = response.total_count + var levelArray = [] + for(var i = 1; i < level; i++) + levelArray.push(i) + + var levelURLString = levelArray.join(",") + + var url = "https://api.wanikani.com/v2/subjects?types=vocabulary&levels=" + levelURLString + var parsedData = [] + + do + { + var response = await query(userData.token, url) + for(let i in response.data) + { + parsedData.push(response.data[i].data.characters) + } + + console.log(response) + url = response.pages.next_url + } while(url !== null) + + chrome.storage.local.set({"characters": parsedData}) + console.log("Downloaded data!") +}) + +const printButton = document.getElementById("print"); +printButton.addEventListener("click", () => { + chrome.storage.local.get("characters", (data) => { + console.log(data.characters) + }) +}) \ No newline at end of file