Skip to content

Commit

Permalink
feat: add support for anti-split
Browse files Browse the repository at this point in the history
  • Loading branch information
inotia00 committed Aug 4, 2024
1 parent 65f0696 commit ba2c140
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 13 deletions.
5 changes: 5 additions & 0 deletions public/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,11 @@ ws.onmessage = (msg) => {
message.percentage / 100
).toString();
}
break;
case 'mergingFile':
document.getElementsByClassName('log')[0].innerHTML +=
'<span class="log-line"><strong>[builder]</strong> Merging files...</span><br/>';

break;
case 'finished':
hasFinished = true;
Expand Down
33 changes: 33 additions & 0 deletions utils/AntiSplit.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const { existsSync, rmSync } = require('node:fs');

const exec = require('./promisifiedExec.js');

/** @type {import('ws').WebSocket} */
let ws;

/**
* @param {string} inputPath
* @param {string} outputPath
* @param {import('ws').WebSocket} [websocket]
*/
async function antiSplit(inputPath, outputPath, websocket) {
if (websocket != null) ws = websocket;

if (existsSync(outputPath)) {
rmSync(outputPath, { recursive: true, force: true });
}

ws.send(
JSON.stringify({
event: 'mergingFile'
})
);

await exec(
`java -jar ${global.jarNames.apkEditor} m -i ${inputPath} -o ${outputPath}`
);
}

module.exports = {
antiSplit
};
4 changes: 4 additions & 0 deletions utils/FileDownloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ async function overWriteJarNames(fileName) {
if (fileName.includes(microg)) {
global.jarNames.microG = filePath;
}

if (fileName.includes('APKEditor') && fileName.endsWith('.jar')) {
global.jarNames.apkEditor = filePath;
}
}

/**
Expand Down
61 changes: 48 additions & 13 deletions utils/downloadApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { join: joinPath } = require('node:path');
const { load } = require('cheerio');
const { dloadFromURL } = require('./FileDownloader.js');
const fetchWithUserAgent = require('../utils/fetchWithUserAgent.js');
const { antiSplit } = require('./AntiSplit.js');


/**
Expand Down Expand Up @@ -34,7 +35,7 @@ async function downloadApp(ws) {

const $ = load(versionDownloadList);

const dlLink =
const apkDownloadLink =
arch &&
global.jarNames.selectedApp.packageName ===
'com.google.android.apps.youtube.music'
Expand All @@ -52,17 +53,29 @@ async function downloadApp(ws) {
.first()
.attr('href');

if (!dlLink) {
const apkmDownloadLink =
$('span[class="apkm-badge success"]')
.first()
.parent()
.children('a[class="accent_color"]')
.first()
.attr('href');

if (!apkDownloadLink && !apkmDownloadLink) {
return ws.send(
JSON.stringify({
event: 'error',
error: `The version ${version} does not have an APK available, please use an older version.`
})
);
}
const downloadLinkPage = await fetchWithUserAgent(
`https://www.apkmirror.com${dlLink}`
).then((res) => res.text());

const downloadLink = !apkDownloadLink
? `https://www.apkmirror.com${apkmDownloadLink}`
: `https://www.apkmirror.com${apkDownloadLink}`;

const downloadLinkPage = await fetchWithUserAgent(downloadLink)
.then((res) => res.text());

const $2 = load(downloadLinkPage);
const pageLink = $2('a[class^="accent_bg btn btn-flat downloadButton"]')
Expand All @@ -75,14 +88,36 @@ async function downloadApp(ws) {
const $3 = load(downloadPage);
const apkLink = $3('a[rel="nofollow"]').first().attr('href');

await dloadFromURL(
`https://www.apkmirror.com${apkLink}`,
`${joinPath(
global.revancedDir,
global.jarNames.selectedApp.packageName
)}.apk`,
ws
);
if (!apkDownloadLink) {
await dloadFromURL(
`https://www.apkmirror.com${apkLink}`,
`${joinPath(
global.revancedDir,
global.jarNames.selectedApp.packageName
)}.apkm`,
ws
);
await antiSplit(
`${joinPath(
global.revancedDir,
global.jarNames.selectedApp.packageName
)}.apkm`,
`${joinPath(
global.revancedDir,
global.jarNames.selectedApp.packageName
)}.apk`,
ws
);
} else {
await dloadFromURL(
`https://www.apkmirror.com${apkLink}`,
`${joinPath(
global.revancedDir,
global.jarNames.selectedApp.packageName
)}.apk`,
ws
);
}

ws.send(
JSON.stringify({
Expand Down
5 changes: 5 additions & 0 deletions wsEvents/updateFiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ global.jarNames = {
patchesJar: global.revancedDir,
integrations: global.revancedDir,
microG: global.revancedDir,
apkEditor: global.revancedDir,
patchesList: global.revancedDir,
selectedApp: '',
patches: '',
Expand Down Expand Up @@ -60,6 +61,10 @@ module.exports = async function updateFiles(ws) {
{
owner: microg[0],
repo: microg[1]
},
{
owner: 'REAndroid',
repo: 'APKEditor'
}
];

Expand Down

0 comments on commit ba2c140

Please sign in to comment.