为轻小说文库++提供安卓API支持
สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/451129/1092140/AndroidAPI.js
/* eslint-disable no-multi-spaces */ /* eslint-disable no-implicit-globals */ /* eslint-disable userscripts/no-invalid-headers */ /* eslint-disable userscripts/no-invalid-grant */ // ==UserScript== // @name AndroidAPI // @displayname 安卓API支持 // @namespace Wenku8++ // @version 0.1 // @description 为轻小说文库++提供安卓API支持 // @author PY-DNG // @license GPL-v3 // @regurl NONE // @require https://greasyfork.org/scripts/449412-basic-functions/code/Basic%20Functions.js?version=1085783 // ==/UserScript== (function __MAIN__() { 'use strict'; const AndAPI = new AndroidAPI(); exports = AndAPI; // Android API set function AndroidAPI() { const AA = this; const DParser = new DOMParser(); const encode = AA.encode = function(str) { return '&appver=1.13&request=' + btoa(str) + '&timetoken=' + (new Date().getTime()); }; const request = AA.request = function(details) { const url = details.url; const type = details.type || 'text'; const callback = details.callback || function() {}; const args = details.args || []; GM_xmlhttpRequest({ method: 'POST', url: 'http://app.wenku8.com/android.php', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 7.1.2; unknown Build/NZH54D)' }, data: encode(url), onload: function(e) { let r###lt; switch (type) { case 'xml': r###lt = DParser.parseFromString(e.responseText, 'text/xml'); break; case 'text': r###lt = e.responseText; break; } callback.apply(null, [r###lt].concat(args)); }, onerror: function(e) { Err('Request error while requesting "' + url + '"'); } }); }; // aid, lang, callback, args AA.getNovelShortInfo = function(details) { const aid = details.aid; const lang = details.lang; const callback = details.callback || function() {}; const args = details.args || []; const url = 'action=book&do=info&aid=' + aid + '&t=' + lang; request({ url: url, callback: callback, args: args, type: 'xml' }); } // aid, lang, callback, args AA.getNovelIndex = function(details) { const aid = details.aid; const lang = details.lang; const callback = details.callback || function() {}; const args = details.args || []; const url = 'action=book&do=list&aid=' + aid + '&t=' + lang; request({ url: url, callback: callback, args: args, type: 'xml' }); }; // aid, cid, lang, callback, args AA.getNovelContent = function(details) { const aid = details.aid; const cid = details.cid; const lang = details.lang; const callback = details.callback || function() {}; const args = details.args || []; const url = 'action=book&do=text&aid=' + aid + '&cid=' + cid + '&t=' + lang; request({ url: url, callback: callback, args: args, type: 'text' }); }; } })();