Greasy Fork is available in English.
Aptoide网站直接下载APK
当前为
// ==UserScript==
// @name Aptoide下载器
// @namespace Violentmonkey Scripts
// @match *://*.aptoide.com/*
// @grant none
// @version 1.0
// @author heham
// @description Aptoide网站直接下载APK
// ==/UserScript==
function displayButton(apkUrl) {
let a = document.createElement('a');
a.href = apkUrl;
a.className = "gradient-button__GradientButton-gcc0dg-0 fGvaKr";
let div = document.createElement('div');
a.appendChild(div);
let span = document.createElement('span');
span.appendChild(document.createTextNode('直接下载APK'));
div.appendChild(span);
let prevButton = document.getElementsByClassName('gradient-button__GradientButton-gcc0dg-0 fGvaKr')[0];
prevButton.parentNode.insertBefore(a, prevButton.nextElementSibling);
}
function displayObbButton(fileUrl, label) {
let a = document.createElement('a');
a.href = fileUrl;
a.className = "aptweb-button--app";
let div = document.createElement('div');
div.className = "aptweb-button aptweb-button--big aptweb-button--red";
a.appendChild(div);
let span = document.createElement('span');
span.appendChild(
document.createTextNode(
'Download OBB ' + label.replace(/(^| )(\w)/g, String.toUpperCase)
)
);
div.appendChild(span);
let prevButton = Array.from(document.getElementsByClassName('aptweb-button--app')).pop();
prevButton.parentNode.insertBefore(a, prevButton.nextElementSibling);
prevButton.parentNode.insertBefore(document.createElement('p'), prevButton.nextElementSibling);
}
(function () {
if (!document.querySelector('script[id="__NEXT_DATA__"]')) {
// package not found
return;
}
var txt = document.querySelector('script[id="__NEXT_DATA__"]').textContent;
//var json = eval("(" + txt + ")");
var json = JSON.parse(txt);
//var json = (new Function("return " + txt))();
let apkPackage = json.props.pageProps.app.package;
let xhr = new XMLHttpRequest();
// API v7
let url = 'https://ws2.aptoide.com/api/7/app/getMeta/package_name=' + apkPackage;
xhr.responseText = 'text';
xhr.open('GET', url);
xhr.onload = function () {
if (xhr.status === 200) {
let responseData = JSON.parse(xhr.responseText);
//alert(responseData.data.file.path);
displayButton(responseData.data.file.path);
try {
for (let okey of Object.keys(responseData.data.obb)) {
console.log(responseData, okey);
displayObbButton(responseData.data.obb[okey].path, okey);
}
} catch (error) {
console.log(error);
}
} else {
console.log('Incomplete status during request to ' + url, xhr.statusText);
}
};
xhr.onerror = function () {
console.log('Error during request to ' + url, xhr.statusText);
};
xhr.send();
})();