From 0b3190067e555fc56aa9b0fa465fd3ed9b577548 Mon Sep 17 00:00:00 2001 From: Richard Macias Date: Wed, 28 May 2025 11:51:45 -0500 Subject: [PATCH] add frontends, streaming, switch. add excludeFromExport table column --- Makefile | 4 +- README.md | 134 +++++++++++++++++++--------------- obtainium-emulation-pack.json | 2 +- pages/development.md | 21 +++--- pages/faq.md | 14 +++- pages/table.md | 55 +++++++------- scripts/generate-table.py | 14 +++- src/applications.json | 113 ++++++++++++++++++++++------ 8 files changed, 235 insertions(+), 122 deletions(-) diff --git a/Makefile b/Makefile index 506ca50..651d17a 100644 --- a/Makefile +++ b/Makefile @@ -20,5 +20,5 @@ readme: table # Generate the readme file. Why? Because editing that table every @python scripts/generate-readme.py \ ./pages/init.md \ ./pages/table.md \ - ./pages/development.md \ - ./pages/faq.md + ./pages/faq.md \ + ./pages/development.md diff --git a/README.md b/README.md index 2878297..3e74096 100644 --- a/README.md +++ b/README.md @@ -25,63 +25,36 @@ The maintainer of Obtainium also hosts a collection of Crowdsourced app configur 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 | -|------------------|----------|-------------------| -| Artemis | Streaming | Add to Obtainium! | -| Azahar | Emulator | Add to Obtainium! | -| +AzaharPlus+ | Emulator | Add to Obtainium! | -| Cemu | Emulator | Add to Obtainium! | -| Dolphin Emulator (Dev build) | Emulator | Add to Obtainium! | -| Dolphin Emulator | Emulator | Add to Obtainium! | -| DuckStation (Beta) | Emulator | Add to Obtainium! | -| melonDS | Emulator | Add to Obtainium! | -| melonDS Nightly | Emulator | Add to Obtainium! | -| PPSSPP | Emulator | Add to Obtainium! | -| RetroArch AArch64 (Stable) | Emulator | Add to Obtainium! | -| RetroArch AArch64 (Nightly) | Emulator | Add to Obtainium! | -| RPCSX | 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! | -| NetherSX2 Classic | Emulator | Add to Obtainium! | -| NetherSX2 Classic (Pre-Release) | Emulator | Add to Obtainium! | -| Syncthing-Fork | Utilities | Add to Obtainium! | -| AdrenoToolsDrivers | Track Only | Add to Obtainium! | -| Obtainium Emulation Pack | Track Only | Add to Obtainium! | -| Releases | | 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. | +| Application Name | Category | Add to Obtainium | Included in export json? | +|------------------|----------|------------------|--------------------------| +| Azahar | Emulator | Add to Obtainium! | ✅ | +| +AzaharPlus+ | Emulator | Add to Obtainium! | ❌ | +| Cemu | Emulator | Add to Obtainium! | ✅ | +| Citron | Emulator | Add to Obtainium! | ✅ | +| Dolphin Emulator (Dev build) | Emulator | Add to Obtainium! | ❌ | +| Dolphin Emulator | Emulator | Add to Obtainium! | ✅ | +| DuckStation (Beta) | Emulator | Add to Obtainium! | ✅ | +| Eden | Emulator | Add to Obtainium! | ✅ | +| melonDS | Emulator | Add to Obtainium! | ✅ | +| melonDS Nightly | Emulator | Add to Obtainium! | ❌ | +| PPSSPP | Emulator | Add to Obtainium! | ✅ | +| RetroArch AArch64 (Stable) | Emulator | Add to Obtainium! | ✅ | +| RetroArch AArch64 (Nightly) | Emulator | Add to Obtainium! | ❌ | +| RPCSX | 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! | ✅ | +| NetherSX2 Classic | Emulator | Add to Obtainium! | ✅ | +| NetherSX2 Classic (Pre-Release) | Emulator | Add to Obtainium! | ❌ | +| Artemis | Streaming | Add to Obtainium! | ✅ | +| Moonlight | Streaming | Add to Obtainium! | ✅ | +| Syncthing-Fork | Utilities | Add to Obtainium! | ✅ | +| ES-DE Android Apps | Utilities | Add to Obtainium! | ✅ | +| AdrenoToolsDrivers | Track Only | Add to Obtainium! | ✅ | +| Obtainium Emulation Pack | Track Only | Add to Obtainium! | ✅ | +| Daijishō | Frontend | Add to Obtainium! | ✅ | +| Pegasus | Frontend | Add to Obtainium! | ✅ | ## FAQ @@ -108,12 +81,24 @@ It will not remove any other resources you've added. ### A new switch emulator has released! Can you add it? -No. +> [!NOTE] +> Context: I have a full time job, a family. I do this for fun. +> With that in mind... + +I want to be very selective about which switch emulators I add to this pack. The switch emulation space can be very volatile, and I don't want to be in a position where I have to chase a moving target and update the pack every day. + +The switch emulators I've added have proven to be somewhat stable in where they are and how they're +tracked. ### A note about stable, beta, nightly and canary versions of the same app You cannot install more than one version of the same app. For example: You must choose between RetroArch (stable) or RetroArch (nightly). You cannot have both. +To make things easier for beginners, I've omitted nightly, beta and canary versions where a stable +one exists. + +You can manually add beta/nightly applications by using the links in the README + ### How does this work? Obtainium allows you to filter for links on a page using regular expression (regex) @@ -125,3 +110,36 @@ see for a basic example of how this works. Yes. Absolutely it can. Any of the scrapers that use regex can break if the maintainer changes their page. The applications pulling from GitHub are more stable and less likely to break. + +## 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. | +| nameOverride | string | null | overwrite emulator name, useful if the default name is not human friendly | diff --git a/obtainium-emulation-pack.json b/obtainium-emulation-pack.json index 4a00237..becffcc 100644 --- a/obtainium-emulation-pack.json +++ b/obtainium-emulation-pack.json @@ -1 +1 @@ -{"apps":[{"id":"com.limelight.noir","url":"https://github.com/ClassicOldSong/moonlight-android","author":"ClassicOldSong","name":"Artemis","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","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","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","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\":\"