From 45f640a93a0d153f683e13854bc3069c71e9d43a Mon Sep 17 00:00:00 2001 From: 283375 Date: Sat, 23 Sep 2023 02:07:14 +0800 Subject: [PATCH] add file --- get-arcaea-online-data.js | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 get-arcaea-online-data.js diff --git a/get-arcaea-online-data.js b/get-arcaea-online-data.js new file mode 100644 index 0000000..34ff315 --- /dev/null +++ b/get-arcaea-online-data.js @@ -0,0 +1,104 @@ +// ==UserScript== +// @name Arcaea Offline Get Data Script +// @namespace http://tampermonkey.net/ +// @version 0.1 +// @description wow +// @author 283375 +// @match https://arcaea.lowiro.com/*/profile/* +// @icon https://arcaea.lowiro.com/icon/favicon-96x96.png +// @grant none +// ==/UserScript== + +(function() { + 'use strict'; + + const req = new XMLHttpRequest() + req.addEventListener("load", saveRequest) + req.withCredentials = true + req.open("GET", "https://webapi.lowiro.com/webapi/score/rating/me") + req.send() + const req2 = new XMLHttpRequest() + req2.addEventListener("load", saveRequest) + req2.withCredentials = true + req2.open("GET", "https://webapi.lowiro.com/webapi/user/me") + req2.send() + + const style = document.createElement('style') + style.innerHTML = ` + div.arcofl-container { + position: fixed; + left: 50px; + top: 25px; + padding: 1rem 1.5rem; + border-radius: 7.5px; + background: linear-gradient(225deg, rgba(39, 166, 229, 0.65), rgba(39, 166, 229, 0.28)); + display: flex; + flex-direction: column; + z-index: 5000; + } + + a.arcofl-download-button { + display: block; + background-color: #e9e9e9; + border-radius: 7.5px; + cursor: pointer; + margin: 0.5em 0; + padding: 0.5em 1em; + outline: 2px solid rgba(255, 255, 255, 0); + transition: 0.375s; + } + + a.arcofl-download-button:hover { + background-color: #f0f0f0; + outline: 2px solid #27a6e5; + } + + span.arcofl-download-button-error { + display: block; + background: linear-gradient(125deg, hsl(5deg, 80%, 70%), hsl(5deg, 80%, 50%)); + color: hsl(5deg, 20%, 100%); + border-radius: 7.5px; + margin: 0.5em 0; + padding: 0.5em 1em; + } + ` + document.head.append(style) + + let div = document.createElement('div') + div.classList.add('arcofl-container') + div.innerText = 'Arcaea Offline' + document.body.appendChild(div) + + function saveRequest(e) { + if (e.length < e.total) { + alert('Incomplete request') + } + + const url = this.responseURL + const regex = /.*\.lowiro\.com\//gi + const replacedUrl = url.replace(regex, '') + const fileName = replacedUrl.replaceAll('/', '_') + '.json' + try { + const content = this.responseText + const contentJson = JSON.parse(content) + if (!contentJson.success) throw new Error(`status ${contentJson.error_code}`) + + // https://stackoverflow.com/a/65050772/16484891 + // CC BY-SA 4.0 + const file = new Blob([content], {type: 'text/plain'}) + window.URL = window.URL || window.webkitURL + const buttonLink = document.createElement('a') + buttonLink.innerText = fileName + buttonLink.setAttribute("href", window.URL.createObjectURL(file)) + buttonLink.setAttribute("download", fileName) + buttonLink.classList.add('arcofl-download-button') + div.append(buttonLink) + } catch (e) { + const errorSpan = document.createElement('span') + errorSpan.innerText = `${fileName} ${e}` + errorSpan.classList.add('arcofl-download-button-error') + console.error(fileName, url, e) + div.append(errorSpan) + } + } +})(); \ No newline at end of file