diff --git a/Makefile b/Makefile
index fb13ef8..500d6b8 100644
--- a/Makefile
+++ b/Makefile
@@ -8,13 +8,17 @@ help: # Show help for each of the makefile recipes.
release: readme minify # Run all Make targets related to cutting a release.
links: # Generate links for all obtainium packages
- @python scripts/generate-obtainium-urls.py obtainium-emulation-pack.json > scripts/links.md
+ @python scripts/generate-obtainium-urls.py src/obtainium-emulation-pack.json > scripts/links.md
minify: # Obtainium historically expects a minified json. This allows humans to edit the readable and easily update the minified one.
- @python scripts/minify-json.py obtainium-emulation-pack.json obtainium-emulation-pack.min.json
+ @python scripts/minify-json.py src/obtainium-emulation-pack.json obtainium-emulation-pack.min.json
table: # Generate a table of obtainium links for the README.
- @python scripts/generate-table.py obtainium-emulation-pack.json ./pages/table.md
+ @python scripts/generate-table.py src/obtainium-emulation-pack.json ./pages/table.md
readme: table # Generate the readme file. Why? Because editing that table every change is tedious.
- @python scripts/generate-readme.py ./pages/init.md ./pages/table.md ./pages/faq.md
+ @python scripts/generate-readme.py \
+ ./pages/init.md \
+ ./pages/table.md \
+ ./pages/development.md \
+ ./pages/faq.md
diff --git a/README.md b/README.md
index 3765d03..8fea328 100644
--- a/README.md
+++ b/README.md
@@ -10,11 +10,20 @@ The maintainer of Obtainium also hosts a collection of Crowdsourced app configur
### Option 1. Import Method
-1. Download the latest obtainium-emulation-pack.json release json to your device
-2. Open Obtainium on your device
-3. Navigate to Import/Export
-4. Select `Obtainium Import` and select the obtainium-emulation-pack.json
-5. Profit. You should see packages added to your obtainium
+> [!TIP]
+> This is recommended installation method for beginners and/or new devices
+
+1. On your android emulation device, navigate to the [latest release](https://github.com/RJNY/Obtainium-Emulation-Pack/releases/latest) of the Obainium Emulation Pack.
+1. Download the file titled `obtainium-emulation-pack-vX.X.X.json` to your device.
+1. Open Obtainium.
+1. Navigate to Import/Export.
+1. Select `Obtainium Import` and open `obtainium-emulation-pack-vX.X.X.json`
+1. You should see packages imported to your obtainium.
+
+### Option 2. Click-to-Install Method
+
+1. Visit this page on your android emulation device
+1. Click the "Add to Obtainium!" links of the emulators you wish to track
| Application Name | Category | Add to Obtainium |
|------------------|----------|-------------------|
@@ -30,7 +39,7 @@ The maintainer of Obtainium also hosts a collection of Crowdsourced app configur
| RetroArch AArch64 (Stable) | Emulator | Add to Obtainium! |
| RetroArch AArch64 (Nightly) | Emulator | Add to Obtainium! |
| RPCSX | Emulator | Add to Obtainium! |
-| ScummVM | Emulator | Add to Obtainium! |
+| ScummVM | Emulator | Add to Obtainium! |
| Winlator | Emulator | Add to Obtainium! |
| Vita3K | Emulator | Add to Obtainium! |
| Vita3K ZX | Emulator | Add to Obtainium! |
@@ -39,6 +48,38 @@ The maintainer of Obtainium also hosts a collection of Crowdsourced app configur
| AdrenoToolsDrivers | Track Only | Add to Obtainium! |
| Obtainium Emulation Pack | Track Only | Add to Obtainium! |
+# Development & Contribution
+
+## Contributing
+
+You are welcome to make a PR with a contribution.
+
+### 1. Making changes to the pack
+
+You'll want to directly edit only things in either `./pages/` or `./src/`. Everything else should be designed to update
+through scripts. Including the README!
+
+...why template out the README? Because that table is very cumbersome to update on every change.
+
+### 2. Pre-Commit
+
+Before you commit, make sure to run `make release`.
+This will:
+
+- template the README
+- update the minified json release file
+
+## Development Tips
+
+### Meta field options
+
+My scripts will do specific actions if a `meta` field is present
+
+| key | type | default | description |
+| ---------------- | ---- | ------- | ---------------------------------------------- |
+| exludeFromExport | bool | false | Excludes the app from the release export json. |
+| exludeFromTable | bool | false | Excludes the app from the README table. |
+
## FAQ
### Why do some applications say TRACK ONLY?
diff --git a/obtainium-emulation-pack.min.json b/obtainium-emulation-pack.min.json
index b9b1c11..a5f385a 100644
--- a/obtainium-emulation-pack.min.json
+++ b/obtainium-emulation-pack.min.json
@@ -1 +1 @@
-{"apps":[{"id":"com.limelight.noir","url":"https://github.com/ClassicOldSong/moonlight-android","author":"ClassicOldSong","name":"Artemis","apkUrls":"[[\"artemis-nonRoot_game-release.apk\",\"https://api.github.com/repos/ClassicOldSong/moonlight-android/releases/assets/256681514\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Streaming"],"overrideSource":"GitHub"},{"id":"io.github.lime3ds.android","url":"https://github.com/azahar-emu/azahar","author":"azahar-emu","name":"Azahar","apkUrls":"[[\"azahar-2120-android-universal.apk\",\"https://api.github.com/repos/azahar-emu/azahar/releases/assets/239683655\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"info.cemu.cemu","url":"https://github.com/SSimco/Cemu","author":"SSimco","name":"Cemu","apkUrls":"[[\"Cemu-0.1.apk\",\"https://api.github.com/repos/SSimco/Cemu/releases/assets/236257329\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"org.dolphinemu.dolphinemu","url":"https://dolphin-emu.org/download/?ref=btn","author":"dolphin-emu.org","name":"Dolphin Emulator (Dev build)","apkUrls":"[[\"182947822-dolphin-master-2503a-280.apk\",\"https://dl.dolphin-emu.org/builds/b7/5c/dolphin-master-2503a-280.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"https:\\\\/\\\\/dl.dolphin-emu.org\\\\/builds.+dolphin-master-.+.apk\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":true,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"partialAPKHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"dolphin-master-(.+).apk\",\"matchGroupToUse\":\"$1\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Dolphin Emulator (Dev build)\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"org.dolphinemu.dolphinemu","url":"https://dolphin-emu.org/download/?ref=btn","author":"dolphin-emu.org","name":"Dolphin Emulator","apkUrls":"[[\"202199666-dolphin-2503a.apk\",\"https://dl.dolphin-emu.org/releases/2503a/dolphin-2503a.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"https:\\\\/\\\\/dl.dolphin-emu.org\\\\/releases.+dolphin.+.apk\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":true,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"partialAPKHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"/releases/.+/dolphin-(.+).apk\",\"matchGroupToUse\":\"$1\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Dolphin Emulator (Stable)\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"com.github.stenzek.duckstation","url":"https://downloads.duckstation.org/android/","author":"downloads.duckstation.org","name":"DuckStation (Beta)","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"https://www.duckstation.org/android/duckstation-(beta|android).apk\",\"filterByLinkText\":true,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":true,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"partialAPKHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"
[\\\\s\\\\S]*?- \\\\d{4}/\\\\d{2}/\\\\d{2} \\\\((\\\\d+\\\\.\\\\d+-\\\\d+)\\\\)\",\"matchGroupToUse\":\"1\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"me.magnum.melonds","url":"https://github.com/rafaelvcaetano/melonDS-android","author":"rafaelvcaetano","name":"melonDS","apkUrls":"[[\"app-gitHub-prod-release.apk\",\"https://api.github.com/repos/rafaelvcaetano/melonDS-android/releases/assets/141991518\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"MelonDS\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"me.magnum.melonds.nightly","url":"https://github.com/rafaelvcaetano/melonDS-android","author":"rafaelvcaetano","name":"melonDS Nightly","apkUrls":"[[\"app-gitHub-nightly-release.apk\",\"https://api.github.com/repos/rafaelvcaetano/melonDS-android/releases/assets/176333399\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":true,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"Nightly Build\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"nightly\\\\-release\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"org.ppsspp.ppsspp","url":"https://www.ppsspp.org/download","author":"www.ppsspp.org","name":"PPSSPP","apkUrls":"[[\"https://www.ppsspp.org/files/1_17_1/ppsspp.apk\",\"https://www.ppsspp.org/files/1_17_1/ppsspp.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"\\\\/[0-9]+(?:_[0-9]+){1,2}\\\\/ppsspp\\\\.apk$\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\/(?:(?:([0-9]+)_([0-9]+)\\\\/ppsspp\\\\.)|(?:([0-9]+)_([0-9]+)_([0-9]+)\\\\/ppsspp(\\\\.)))apk$\",\"matchGroupToUse\":\"$1$3.$2$4$6$5\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"PPSSPP\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"PPSSPP is an open source, fast and portable PSP emulator\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"487343354","url":"https://buildbot.libretro.com/stable","author":"buildbot.libretro.com","name":"RetroArch AArch64 (Stable)","apkUrls":"[[\"https://buildbot.libretro.com/stable/1.19.1/android/RetroArch_aarch64.apk\",\"https://buildbot.libretro.com/stable/1.19.1/android/RetroArch_aarch64.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[{\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false},{\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/android/\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false}],\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/android/RetroArch_aarch64.apk\",\"filterByLinkText\":false,\"skipSort\":true,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d+.\\\\d+.\\\\d+\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"RetroArch AArch64 (Stable)\",\"exemptFromBackgroundUpdates\":true,\"skipUpdateNotifications\":true,\"about\":\"Released less frequently. Better stability. \",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"487343355","url":"https://buildbot.libretro.com/nightly/android","author":"buildbot.libretro.com","name":"RetroArch AArch64 (Nightly)","apkUrls":"[[\"https://buildbot.libretro.com/nightly/android/2024-07-01-RetroArch_aarch64.apk\",\"https://buildbot.libretro.com/nightly/android/2024-07-01-RetroArch_aarch64.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}-RetroArch_aarch64.apk\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":true,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}-RetroArch_aarch64.apk\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"RetroArch AArch64 (Nightly)\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"Nightly releases. cutting edge features but may contain bugs\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"net.rpcsx","url":"https://github.com/RPCSX/rpcsx-ui-android","author":"RPCSX","name":"RPCSX","apkUrls":"[[\"rpcsx-release.apk\",\"https://api.github.com/repos/RPCSX/rpcsx-ui-android/releases/assets/247111202\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"org.scummvm.scummvm","url":"https://downloads.scummvm.org/frs/scummvm","author":"ScummVM","name":"ScummVM","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[{\"customLinkFilterRegex\":\"\\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false}],\"customLinkFilterRegex\":\"\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\".*android-arm64-v8a.apk\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"A program which allows you to run certain classic graphical adventure and role-playing games, provided you already have their data files.\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"com.winlator","url":"https://github.com/brunodev85/winlator","author":"brunodev85","name":"Winlator","apkUrls":"[[\"Winlator_7.1.apk\",\"https://api.github.com/repos/brunodev85/winlator/releases/assets/176702021\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"shizukuPretendToBeGooglePlay\":false}","categories":["Emulator"]},{"id":"org.vita3k.emulator","url":"https://github.com/Vita3K/Vita3K-Android","author":"Vita3K","name":"Vita3K","apkUrls":"[[\"vita3k-android-release-12.apk\",\"https://api.github.com/repos/Vita3K/Vita3K-Android/releases/assets/172343968\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"org.vita3k.emulator.ikhoeyZX","url":"https://github.com/ikhoeyZX/Vita3K-Android","author":"ikhoeyZX","name":"Vita3K ZX","apkUrls":"[[\"vita3k-12.5_build13.apk\",\"https://api.github.com/repos/ikhoeyZX/Vita3K-Android/releases/assets/238922579\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"xyz.aethersx2.android","url":"https://github.com/Trixarian/NetherSX2-classic","author":"Trixarian","name":"NetherSX2 Classic","apkUrls":"[[\"15210-v2.0-3668-OL.apk\",\"https://api.github.com/repos/Trixarian/NetherSX2-classic/releases/assets/246617205\"],[\"15210-v2.0-3668-signed.apk\",\"https://api.github.com/repos/Trixarian/NetherSX2-classic/releases/assets/244589241\"]]","preferredApkIndex":1,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"com.github.catfriend1.syncthingandroid","url":"https://github.com/Catfriend1/syncthing-android","author":"Catfriend1","name":"Syncthing-Fork","installedVersion":"v1.29.6.5","latestVersion":"v1.29.6.5","apkUrls":"[[\"com.github.catfriend1.syncthingandroid_release_v1.29.6.5_3fafb4fc.apk\",\"https://api.github.com/repos/Catfriend1/syncthing-android/releases/assets/257222169\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\".*release.*\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Utilities"],"overrideSource":"GitHub"},{"id":"476086958","url":"https://github.com/K11MCH1/AdrenoToolsDrivers","author":"K11MCH1","name":"AdrenoToolsDrivers","apkUrls":"[]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"Turnip\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":true,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":false,\"appName\":\"Turnip\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false,\"github-creds\":\"\"}","categories":["Track Only"],"overrideSource":"GitHub"},{"id":"904332840","url":"https://github.com/RJNY/Obtainium-Emulation-Pack","author":"RJNY","name":"Obtainium Emulation Pack","latestVersion":"v3.1.0","apkUrls":"[]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":true,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Obtainium Emulation Pack\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Track Only"]}]}
\ No newline at end of file
+{"apps":[{"id":"com.limelight.noir","url":"https://github.com/ClassicOldSong/moonlight-android","author":"ClassicOldSong","name":"Artemis","apkUrls":"[[\"artemis-nonRoot_game-release.apk\",\"https://api.github.com/repos/ClassicOldSong/moonlight-android/releases/assets/256681514\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Streaming"],"overrideSource":"GitHub"},{"id":"io.github.lime3ds.android","url":"https://github.com/azahar-emu/azahar","author":"azahar-emu","name":"Azahar","apkUrls":"[[\"azahar-2120-android-universal.apk\",\"https://api.github.com/repos/azahar-emu/azahar/releases/assets/239683655\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"info.cemu.cemu","url":"https://github.com/SSimco/Cemu","author":"SSimco","name":"Cemu","apkUrls":"[[\"Cemu-0.1.apk\",\"https://api.github.com/repos/SSimco/Cemu/releases/assets/236257329\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"org.dolphinemu.dolphinemu","url":"https://dolphin-emu.org/download/?ref=btn","author":"dolphin-emu.org","name":"Dolphin Emulator","apkUrls":"[[\"202199666-dolphin-2503a.apk\",\"https://dl.dolphin-emu.org/releases/2503a/dolphin-2503a.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"https:\\\\/\\\\/dl.dolphin-emu.org\\\\/releases.+dolphin.+.apk\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":true,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"partialAPKHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"/releases/.+/dolphin-(.+).apk\",\"matchGroupToUse\":\"$1\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Dolphin Emulator (Stable)\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"com.github.stenzek.duckstation","url":"https://downloads.duckstation.org/android/","author":"downloads.duckstation.org","name":"DuckStation (Beta)","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"https://www.duckstation.org/android/duckstation-(beta|android).apk\",\"filterByLinkText\":true,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":true,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"partialAPKHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"
[\\\\s\\\\S]*?- \\\\d{4}/\\\\d{2}/\\\\d{2} \\\\((\\\\d+\\\\.\\\\d+-\\\\d+)\\\\)\",\"matchGroupToUse\":\"1\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"me.magnum.melonds","url":"https://github.com/rafaelvcaetano/melonDS-android","author":"rafaelvcaetano","name":"melonDS","apkUrls":"[[\"app-gitHub-prod-release.apk\",\"https://api.github.com/repos/rafaelvcaetano/melonDS-android/releases/assets/141991518\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"MelonDS\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"me.magnum.melonds.nightly","url":"https://github.com/rafaelvcaetano/melonDS-android","author":"rafaelvcaetano","name":"melonDS Nightly","apkUrls":"[[\"app-gitHub-nightly-release.apk\",\"https://api.github.com/repos/rafaelvcaetano/melonDS-android/releases/assets/176333399\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":true,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"Nightly Build\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":true,\"trackOnly\":false,\"versionExtractionRegEx\":\"nightly\\\\-release\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"org.ppsspp.ppsspp","url":"https://www.ppsspp.org/download","author":"www.ppsspp.org","name":"PPSSPP","apkUrls":"[[\"https://www.ppsspp.org/files/1_17_1/ppsspp.apk\",\"https://www.ppsspp.org/files/1_17_1/ppsspp.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"\\\\/[0-9]+(?:_[0-9]+){1,2}\\\\/ppsspp\\\\.apk$\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\/(?:(?:([0-9]+)_([0-9]+)\\\\/ppsspp\\\\.)|(?:([0-9]+)_([0-9]+)_([0-9]+)\\\\/ppsspp(\\\\.)))apk$\",\"matchGroupToUse\":\"$1$3.$2$4$6$5\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"PPSSPP\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"PPSSPP is an open source, fast and portable PSP emulator\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"487343354","url":"https://buildbot.libretro.com/stable","author":"buildbot.libretro.com","name":"RetroArch AArch64 (Stable)","apkUrls":"[[\"https://buildbot.libretro.com/stable/1.19.1/android/RetroArch_aarch64.apk\",\"https://buildbot.libretro.com/stable/1.19.1/android/RetroArch_aarch64.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[{\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false},{\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/android/\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false}],\"customLinkFilterRegex\":\"/stable/\\\\d+.\\\\d+.\\\\d+/android/RetroArch_aarch64.apk\",\"filterByLinkText\":false,\"skipSort\":true,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d+.\\\\d+.\\\\d+\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"RetroArch AArch64 (Stable)\",\"exemptFromBackgroundUpdates\":true,\"skipUpdateNotifications\":true,\"about\":\"Released less frequently. Better stability. \",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"487343355","url":"https://buildbot.libretro.com/nightly/android","author":"buildbot.libretro.com","name":"RetroArch AArch64 (Nightly)","apkUrls":"[[\"https://buildbot.libretro.com/nightly/android/2024-07-01-RetroArch_aarch64.apk\",\"https://buildbot.libretro.com/nightly/android/2024-07-01-RetroArch_aarch64.apk\"]]","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[],\"customLinkFilterRegex\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}-RetroArch_aarch64.apk\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":true,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\\\\d{4}-\\\\d{2}-\\\\d{2}-RetroArch_aarch64.apk\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"RetroArch AArch64 (Nightly)\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"Nightly releases. cutting edge features but may contain bugs\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"net.rpcsx","url":"https://github.com/RPCSX/rpcsx-ui-android","author":"RPCSX","name":"RPCSX","apkUrls":"[[\"rpcsx-release.apk\",\"https://api.github.com/repos/RPCSX/rpcsx-ui-android/releases/assets/247111202\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"org.scummvm.scummvm","url":"https://downloads.scummvm.org/frs/scummvm/","author":"ScummVM","name":"ScummVM","preferredApkIndex":0,"additionalSettings":"{\"intermediateLink\":[{\"customLinkFilterRegex\":\"\\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false}],\"customLinkFilterRegex\":\"\",\"filterByLinkText\":false,\"skipSort\":false,\"reverseSort\":false,\"sortByLastLinkSegment\":false,\"versionExtractWholePage\":false,\"requestHeader\":[{\"requestHeader\":\"User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36\"}],\"defaultPseudoVersioningMethod\":\"APKLinkHash\",\"trackOnly\":false,\"versionExtractionRegEx\":\"\\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\".*android-arm64-v8a.apk\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"A program which allows you to run certain classic graphical adventure and role-playing games, provided you already have their data files.\",\"supportFixedAPKURL\":false}","categories":["Emulator"],"overrideSource":"HTML"},{"id":"com.winlator","url":"https://github.com/brunodev85/winlator","author":"brunodev85","name":"Winlator","apkUrls":"[[\"Winlator_7.1.apk\",\"https://api.github.com/repos/brunodev85/winlator/releases/assets/176702021\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"shizukuPretendToBeGooglePlay\":false}","categories":["Emulator"]},{"id":"org.vita3k.emulator","url":"https://github.com/Vita3K/Vita3K-Android","author":"Vita3K","name":"Vita3K","apkUrls":"[[\"vita3k-android-release-12.apk\",\"https://api.github.com/repos/Vita3K/Vita3K-Android/releases/assets/172343968\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Emulator"]},{"id":"org.vita3k.emulator.ikhoeyZX","url":"https://github.com/ikhoeyZX/Vita3K-Android","author":"ikhoeyZX","name":"Vita3K ZX","apkUrls":"[[\"vita3k-12.5_build13.apk\",\"https://api.github.com/repos/ikhoeyZX/Vita3K-Android/releases/assets/238922579\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"xyz.aethersx2.android","url":"https://github.com/Trixarian/NetherSX2-classic","author":"Trixarian","name":"NetherSX2 Classic","apkUrls":"[[\"15210-v2.0-3668-OL.apk\",\"https://api.github.com/repos/Trixarian/NetherSX2-classic/releases/assets/246617205\"],[\"15210-v2.0-3668-signed.apk\",\"https://api.github.com/repos/Trixarian/NetherSX2-classic/releases/assets/244589241\"]]","preferredApkIndex":1,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Emulator"],"overrideSource":"GitHub"},{"id":"com.github.catfriend1.syncthingandroid","url":"https://github.com/Catfriend1/syncthing-android","author":"Catfriend1","name":"Syncthing-Fork","installedVersion":"v1.29.6.5","latestVersion":"v1.29.6.5","apkUrls":"[[\"com.github.catfriend1.syncthingandroid_release_v1.29.6.5_3fafb4fc.apk\",\"https://api.github.com/repos/Catfriend1/syncthing-android/releases/assets/257222169\"]]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\".*release.*\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false}","categories":["Utilities"],"overrideSource":"GitHub"},{"id":"476086958","url":"https://github.com/K11MCH1/AdrenoToolsDrivers","author":"K11MCH1","name":"AdrenoToolsDrivers","apkUrls":"[]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"Turnip\",\"verifyLatestTag\":false,\"sortMethodChoice\":\"date\",\"useLatestAssetDateAsReleaseDate\":false,\"releaseTitleAsVersion\":false,\"trackOnly\":true,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":false,\"appName\":\"Turnip\",\"appAuthor\":\"\",\"shizukuPretendToBeGooglePlay\":false,\"allowInsecure\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\",\"refreshBeforeDownload\":false,\"github-creds\":\"\"}","categories":["Track Only"],"overrideSource":"GitHub"},{"id":"904332840","url":"https://github.com/RJNY/Obtainium-Emulation-Pack","author":"RJNY","name":"Obtainium Emulation Pack","latestVersion":"v3.1.0","apkUrls":"[]","preferredApkIndex":0,"additionalSettings":"{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":true,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":true,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"\",\"invertAPKFilter\":false,\"autoApkFilterByArch\":true,\"appName\":\"Obtainium Emulation Pack\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}","categories":["Track Only"]}]}
\ No newline at end of file
diff --git a/pages/development.md b/pages/development.md
new file mode 100644
index 0000000..8208878
--- /dev/null
+++ b/pages/development.md
@@ -0,0 +1,31 @@
+# Development & Contribution
+
+## Contributing
+
+You are welcome to make a PR with a contribution.
+
+### 1. Making changes to the pack
+
+You'll want to directly edit only things in either `./pages/` or `./src/`. Everything else should be designed to update
+through scripts. Including the README!
+
+...why template out the README? Because that table is very cumbersome to update on every change.
+
+### 2. Pre-Commit
+
+Before you commit, make sure to run `make release`.
+This will:
+
+- template the README
+- update the minified json release file
+
+## Development Tips
+
+### Meta field options
+
+My scripts will do specific actions if a `meta` field is present
+
+| key | type | default | description |
+| ---------------- | ---- | ------- | ---------------------------------------------- |
+| exludeFromExport | bool | false | Excludes the app from the release export json. |
+| exludeFromTable | bool | false | Excludes the app from the README table. |
diff --git a/pages/init.md b/pages/init.md
index 7e866f5..b299eb1 100644
--- a/pages/init.md
+++ b/pages/init.md
@@ -10,8 +10,17 @@ The maintainer of Obtainium also hosts a collection of Crowdsourced app configur
### Option 1. Import Method
-1. Download the latest obtainium-emulation-pack.json release json to your device
-2. Open Obtainium on your device
-3. Navigate to Import/Export
-4. Select `Obtainium Import` and select the obtainium-emulation-pack.json
-5. Profit. You should see packages added to your obtainium
+> [!TIP]
+> This is recommended installation method for beginners and/or new devices
+
+1. On your android emulation device, navigate to the [latest release](https://github.com/RJNY/Obtainium-Emulation-Pack/releases/latest) of the Obainium Emulation Pack.
+1. Download the file titled `obtainium-emulation-pack-vX.X.X.json` to your device.
+1. Open Obtainium.
+1. Navigate to Import/Export.
+1. Select `Obtainium Import` and open `obtainium-emulation-pack-vX.X.X.json`
+1. You should see packages imported to your obtainium.
+
+### Option 2. Click-to-Install Method
+
+1. Visit this page on your android emulation device
+1. Click the "Add to Obtainium!" links of the emulators you wish to track
diff --git a/pages/table.md b/pages/table.md
index 1415076..aa33ae8 100644
--- a/pages/table.md
+++ b/pages/table.md
@@ -12,7 +12,7 @@
| RetroArch AArch64 (Stable) | Emulator | Add to Obtainium! |
| RetroArch AArch64 (Nightly) | Emulator | Add to Obtainium! |
| RPCSX | Emulator | Add to Obtainium! |
-| ScummVM | Emulator | Add to Obtainium! |
+| ScummVM | Emulator | Add to Obtainium! |
| Winlator | Emulator | Add to Obtainium! |
| Vita3K | Emulator | Add to Obtainium! |
| Vita3K ZX | Emulator | Add to Obtainium! |
diff --git a/scripts/generate-readme.py b/scripts/generate-readme.py
index 40ebc73..62d748f 100644
--- a/scripts/generate-readme.py
+++ b/scripts/generate-readme.py
@@ -2,11 +2,10 @@ import sys
import os
-def stitch_markdown_files(init_file, table_file, faq_file, output_file="README.md"):
- files = [init_file, table_file, faq_file]
+def stitch_markdown_files(markdown_files, output_file="README.md"):
combined_content = []
- for file in files:
+ for file in markdown_files:
if not os.path.exists(file):
print(f"❌ File not found: {file}")
sys.exit(1)
@@ -18,12 +17,13 @@ def stitch_markdown_files(init_file, table_file, faq_file, output_file="README.m
with open(output_file, "w", encoding="utf-8") as f:
f.write("\n\n".join(combined_content) + "\n")
- print(f"✅ README.md successfully created with {len(files)} sections.")
+ print(f"✅ {output_file} successfully created with {len(markdown_files)} sections.")
if __name__ == "__main__":
- if len(sys.argv) != 4:
- print("Usage: python stitch_markdown.py init.md table.md faq.md")
+ if len(sys.argv) < 2:
+ print("Usage: python stitch_markdown.py file1.md file2.md ... [fileN.md]")
sys.exit(1)
- stitch_markdown_files(sys.argv[1], sys.argv[2], sys.argv[3])
+ input_files = sys.argv[1:]
+ stitch_markdown_files(input_files)
diff --git a/scripts/generate-table.py b/scripts/generate-table.py
index 4a6c578..8699920 100644
--- a/scripts/generate-table.py
+++ b/scripts/generate-table.py
@@ -24,6 +24,10 @@ def generate_markdown_table(apps):
rows.append(divider)
for app in apps:
+ meta = app.get("meta", {})
+ if meta.get("excludeFromTable", False):
+ continue
+
name = app.get("name", "")
category = ", ".join(app.get("categories", []))
obtainium_link = make_obtainium_link(app)
diff --git a/scripts/minify-json.py b/scripts/minify-json.py
index 525c167..d90566b 100644
--- a/scripts/minify-json.py
+++ b/scripts/minify-json.py
@@ -1,23 +1,35 @@
import json
import sys
+
def minify_json(input_file, output_file):
try:
# Read JSON data from input file
- with open(input_file, 'r', encoding='utf-8') as f:
+ with open(input_file, "r", encoding="utf-8") as f:
data = json.load(f)
- # Minify JSON and write to output file
- with open(output_file, 'w', encoding='utf-8') as f:
- json.dump(data, f, separators=(',', ':'), ensure_ascii=False)
+ # Filter out apps with meta.exclude_from_json = true
+ if "apps" in data:
+ filtered_apps = []
+ for app in data["apps"]:
+ meta = app.get("meta", {})
+ if not meta.get("excludeFromExport", False):
+ filtered_apps.append(app)
+ data["apps"] = filtered_apps
- print(f"Minified JSON saved to {output_file}")
+ # Minify JSON and write to output file
+ with open(output_file, "w", encoding="utf-8") as f:
+ json.dump(data, f, separators=(",", ":"), ensure_ascii=False)
+
+ print(
+ f"Minified JSON saved to {output_file} ({len(data.get('apps', []))} apps included)"
+ )
except Exception as e:
print(f"Error: {e}")
+
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python minify_json.py input.json output.json")
else:
minify_json(sys.argv[1], sys.argv[2])
-
diff --git a/obtainium-emulation-pack.json b/src/obtainium-emulation-pack.json
similarity index 99%
rename from obtainium-emulation-pack.json
rename to src/obtainium-emulation-pack.json
index 0d6a4d2..f1f3438 100644
--- a/obtainium-emulation-pack.json
+++ b/src/obtainium-emulation-pack.json
@@ -50,7 +50,10 @@
"categories": [
"Emulator"
],
- "overrideSource": "HTML"
+ "overrideSource": "HTML",
+ "meta": {
+ "excludeFromExport": true
+ }
},
{
"id": "org.dolphinemu.dolphinemu",
@@ -155,7 +158,7 @@
},
{
"id": "org.scummvm.scummvm",
- "url": "https://downloads.scummvm.org/frs/scummvm",
+ "url": "https://downloads.scummvm.org/frs/scummvm/",
"author": "ScummVM",
"name": "ScummVM",
"preferredApkIndex": 0,