mirror of
https://github.com/Zaarrg/stremio-community-v5.git
synced 2026-01-11 12:00:40 +00:00
Updated animejanai script to work with multi part releases
- Updated Script to work with multi part releases.
This commit is contained in:
parent
7d1b63c993
commit
b4cad35041
1 changed files with 40 additions and 15 deletions
|
|
@ -235,27 +235,52 @@ function find7zExecutable() {
|
|||
const version = releaseJson.tag_name || 'latest';
|
||||
console.log(`Latest version: ${version}`);
|
||||
|
||||
// Step 2: Find the 'full-package' .7z asset
|
||||
const assets = releaseJson.assets;
|
||||
const fullPackageAsset = assets.find(asset => asset.name.includes('full-package') && asset.name.endsWith('.7z'));
|
||||
// Step 2: Locate and download the 'full-package' asset(s) (single or multi-part)
|
||||
const assets = releaseJson.assets || [];
|
||||
const fullPackageCandidates = assets.filter(a =>
|
||||
a.name.includes('full-package') &&
|
||||
(a.name.endsWith('.7z') || /\.7z\.\d+$/.test(a.name))
|
||||
);
|
||||
|
||||
if (!fullPackageAsset) {
|
||||
throw new Error("No 'full-package' .7z asset found in the latest release.");
|
||||
if (fullPackageCandidates.length === 0) {
|
||||
throw new Error("No 'full-package' .7z or .7z.NNN assets found in the latest release.");
|
||||
}
|
||||
|
||||
const downloadUrl = fullPackageAsset.browser_download_url;
|
||||
const assetName = fullPackageAsset.name;
|
||||
const downloadedFilePath = path.join(TEMP_DIR, assetName);
|
||||
// Group by base name (strip .7z or .7z.NNN)
|
||||
const groups = fullPackageCandidates.reduce((acc, a) => {
|
||||
const base = a.name.replace(/\.7z(\.\d+)?$/, '');
|
||||
(acc[base] ||= []).push(a);
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
console.log(`Downloading asset: ${assetName}`);
|
||||
await downloadFile(downloadUrl, downloadedFilePath);
|
||||
console.log(`Downloaded to ${downloadedFilePath}`);
|
||||
// Pick the group with the most parts (typically only one group exists in a release)
|
||||
const [selectedBase, selectedGroup] = Object.entries(groups)
|
||||
.sort((a, b) => b[1].length - a[1].length)[0];
|
||||
|
||||
// Step 3: Extract the .7z archive
|
||||
// Sort deterministically: .7z (treated like part 0) or .7z.001, .002, ...
|
||||
const sortedAssets = selectedGroup.slice().sort((a, b) => {
|
||||
const pa = (/\.7z\.(\d+)$/.exec(a.name)?.[1]) ? parseInt(/\.7z\.(\d+)$/.exec(a.name)[1], 10) : 0;
|
||||
const pb = (/\.7z\.(\d+)$/.exec(b.name)?.[1]) ? parseInt(/\.7z\.(\d+)$/.exec(b.name)[1], 10) : 0;
|
||||
return pa - pb;
|
||||
});
|
||||
|
||||
// Download all parts into TEMP_DIR
|
||||
const downloadedParts = [];
|
||||
for (const asset of sortedAssets) {
|
||||
const dest = path.join(TEMP_DIR, asset.name);
|
||||
console.log(`Downloading asset: ${asset.name}`);
|
||||
await downloadFile(asset.browser_download_url, dest);
|
||||
downloadedParts.push(dest);
|
||||
}
|
||||
|
||||
// For extraction: if multipart, 7-Zip expects we point at the .7z.001; if single, the .7z file itself
|
||||
const archiveToExtract = downloadedParts[0];
|
||||
|
||||
// Step 3: Extract the archive (7-Zip will auto-detect and read all parts if .001 is used)
|
||||
const extractDir = path.join(TEMP_DIR, 'extracted');
|
||||
fs.mkdirSync(extractDir, { recursive: true });
|
||||
console.log(`Extracting ${downloadedFilePath} to ${extractDir}...`);
|
||||
execCommand(`${sevenZipPath} x "${downloadedFilePath}" -o"${extractDir}" -y`, TEMP_DIR);
|
||||
console.log(`Extracting ${path.basename(archiveToExtract)} to ${extractDir}...`);
|
||||
execCommand(`${sevenZipPath} x "${archiveToExtract}" -o"${extractDir}" -y`, TEMP_DIR);
|
||||
console.log('Extraction complete.');
|
||||
|
||||
// Step 4: Identify the root directory inside the extracted folder
|
||||
|
|
@ -346,7 +371,7 @@ function find7zExecutable() {
|
|||
console.log('Cleanup complete.');
|
||||
|
||||
console.log('=== Build AnimeJaNai Script Completed Successfully ===');
|
||||
process.exit(1);
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('Error during build:', error.message);
|
||||
process.exit(1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue