| .. | ||
| descriptions | 15 items | |
| homebrew.manifest.json | 464 lines | |
| make-catalog.mjs | 572 lines | |
| package-lock.json | 650 lines | |
| package.json | 14 lines | |
| README.md | 66 lines |
README.md
Catalogue generator
Builds the PS3 World app's catalogue from the site build data and the local copies of every download. It never uploads anything.
| File | What |
|---|---|
catalog/v1/catalog.json |
the index (~30 KB): each section's lists, their page files with sha256s, counts, where each letter starts |
catalog/v1/homebrew/<category>/N.json |
homebrew, one list per site category (Games, Ports, Tools, Media, Misc), 100 items a page |
catalog/v1/theme/<list>/N.json |
themes, 100 items a page: all, then one list per site category |
catalog/v1/avatar/<list>/N.json |
avatar packs, 100 a page: all, then one list per region. Each pack is a folder: its item carries its own list |
catalog/v1/avatar/<list>/packs/<pack>/N.json |
a pack's avatars (in a region's list, only that region's) |
catalog/v1/icons/hd/, previews/hd/ |
homebrew's icons (256 px) and previews (960x540), for 1080p |
catalog/v1/lang/<code>.json |
homebrew's descriptions in that language (from generator/descriptions/<code>.json, keyed by item id); an item with none shows the English |
.../newest/, .../largest/ |
each list again in those orders (the app's Select) |
.../search.txt |
one line per item (title, author, group), so the app can search a list without loading every page |
catalog/v1/icons/<id>.jpg |
128 px JPEG icons |
The app loads only the index at start, then each page as the list reaches it.
npm install
node make-catalog.mjs # everything (first run hashes ~60 GB; later runs use the cache)
node make-catalog.mjs --limit 3 --out ..\tests\sample # a quick sample: the first 3 of each type (--limit and --only need --out)
node make-catalog.mjs --verify # re-hash every page and file the index lists, ignoring the cache
To offer an app update, put the new PKG in D:\PS3 WORLD R2\homebrewtools\ named PS3WorldApp-v<version>.pkg (for example PS3WorldApp-v1.0.1.pkg). The newest one goes into catalog.json as "app", and any app older than that shows "PS3 World 1.0.1 is out". The printed upload commands send that folder first, then the catalogue.
Paths are in CONFIG at the top of make-catalog.mjs. Output goes to G:\ps3world-catalog. The hash cache is kept in .cache\ there, and it is not part of the upload.
Sources
| Type | Metadata | Files |
|---|---|---|
| Themes | G:\ps3-themes\_site\data\themes.json (NSFW skipped) |
Best-PS3-Themes\PS3_Themes, PS3_Themes |
| Avatars | G:\PS3 Avatars\_site_avatars\data\avatars.json |
D:\PS3 Avatars |
| Homebrew | homebrew.manifest.json (this folder) |
D:\PS3 WORLD R2 |
homebrew.manifest.json
You maintain this file. Each entry looks like this:
{
"file": "homebrewtools/pkgi-ps3.pkg",
"title": "PKGi PS3",
"author": "",
"version": "",
"description": "One or two sentences.",
"group": "Tools",
"requires": "hen",
"icon": "images/homebrew/pkgi-ps3.webp"
}
file: the path underD:\PS3 WORLD R2, which is also the path on dl.ps3.world.requires:any,hen(HEN or CFW) orcfw(CFW only).icon: relative to the main site folder (siteRootin CONFIG). Any image type works, and it's converted to a 128 px JPEG. Leave it empty for no icon.
Upload
The generator prints the command to run when it finishes:
rclone copy "G:\ps3world-catalog\catalog" R2:ps3wrld-content/catalog --progress