Skip to content

Commit 3facaac

Browse files
author
Stossy11
committed
Add MeloNX >:3
1 parent 7458d4b commit 3facaac

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tools/update_apps.mjs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ const overrides = {
1111
PokeMMO: 'A free-to-play online monster mmorpg.',
1212
};
1313

14+
const additions = [
15+
// Example:
16+
{
17+
name: 'MeloNX',
18+
desc: 'A Nintendo Switch Emulator for iOS / iPadOS devices on 15.0+.',
19+
iconURL: 'https://git.ryujinx.app/melonx/emu/-/raw/XC-ios-ht/src/MeloNX/MeloNX/Assets/Assets.xcassets/AppIcon.appiconset/nxgradientpng.png?ref_type=heads'
20+
},
21+
];
22+
1423
const folderExists = async (path) => {
1524
let exists = false;
1625
try {
@@ -114,6 +123,49 @@ const outFolder = path.join(__dirname, '../src/assets/apps_data/');
114123
});
115124
await Promise.all(promises);
116125

126+
// Process custom additions
127+
console.log(`✨ Processing ${additions.length} custom additions...`);
128+
for (const app of additions) {
129+
const { name, desc, iconURL } = app;
130+
131+
if (!name || !desc) {
132+
console.log(`🚫 Skipping custom app - missing name or desc`);
133+
continue;
134+
}
135+
136+
let exists = false;
137+
try {
138+
exists = await fs.stat(outFolder + name + '.webp');
139+
} catch {}
140+
141+
// Download and process icon if provided
142+
if (iconURL && !exists) {
143+
try {
144+
console.log(`🖼️ Downloading icon for custom app ${name}...`);
145+
const file = await fetch(iconURL, {
146+
headers: {
147+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
148+
},
149+
});
150+
const buffer = await file.arrayBuffer();
151+
const buffer2 = Buffer.from(buffer);
152+
const image = sharp(buffer2);
153+
154+
image.resize(128, 128);
155+
image.webp();
156+
await image.toFile(`${outFolder}${name}.webp`);
157+
} catch (e) {
158+
console.log(`🚫 Failed to download icon for custom app ${name}... - ${iconURL}`);
159+
console.log(e);
160+
}
161+
}
162+
163+
built.push({
164+
name,
165+
desc,
166+
});
167+
}
168+
117169
//remove dupe apps based on name
118170
built = built.filter((thing, index, self) => index === self.findIndex((t) => t.name === thing.name));
119171
console.log(`📝 Writing applist.json (${built.length} apps)...`);

0 commit comments

Comments
 (0)