Giter Club home page Giter Club logo

apps.obtainium.imranr.dev's Introduction

Crowdsourced App Configurations website for Obtainium.

The website is accessible at apps.obtainium.imranr.dev

URL Redirection

Obtainium's custom protocol links (obtainium://) may not be easily clickable (for example, neither GitHub's MarkDown renderer nor popular messaging apps like WhatsApp support them). To work around this, you can use the web-based redirect to get a normal http:// link that opens a webpage which redirects to Obtainium (if installed).

For example:

Link Types

As of this writing, there are two types of Obtainium links:

  1. /add: These redirect the user to the "Add App" page with the URL pre-filled in. The user can then modify any app-specific setting before adding it themselves.
  2. /app: These links contain an entire app configuration JSON and opening them in Obtainium results in the app being added directly into the user's list, with the app-specific settings included in the link.

Minimal Example

To add an app config to this repo, your app configuration JSON must contain at least the id, url, author, name, and additionalSettings keys. Note that for any app-specific setting you don't define in additionalSettings, the default value will be used.

For example:

Contributing

  • To contribute content, create a pull request with valid changes/additions to the config files in data/.
    • You can auto-generate config files from an Obtainium export by running node generateFromExport.js <path to Obtainium export>
    • Note: Auto-generated entries will not have icon, category, or description data. Adding those manually is not required but would result in a better user experience.
    • You can also auto-generate config files from an Obtainium URL redirection link by running generate_from_url.py
    • Note: Using generate_from_url.py requires you to install "Colorama" by using the pip command pip install colorama
  • To test locally, run: node buildData.js && python -m http.server 8080
  • See ImranR98/Obtainium#1214 for background/context for this repo.

Badge Graphic

You may want to use the following graphic to link users to your App:

Get it on Obtainium

apps.obtainium.imranr.dev's People

Contributors

achep avatar aleksey-saenko avatar danpeig avatar dwainzwerg avatar grrrrr avatar hamster45105 avatar imranr98 avatar jean-baptistec avatar ldeso avatar lholh avatar lightwayup avatar meenbeese avatar mikaela avatar ncaat avatar noodlejetski avatar o101010 avatar pre-commit-ci[bot] avatar prirai avatar rimaout avatar theexcitedtech avatar tidalmist avatar word66 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apps.obtainium.imranr.dev's Issues

license

The license of the project is missing. This should be adjusted.

[Question] Will this scale?

I am wondering how scalable is this project if everyone is supposed to edit the same data.json and will there be merge conflicts due to it? There are already some commits that add or remove the last line change at the end of file.

I would add pre-commit and pre-commit ci as a first-aid to keep unified formatting, but I don't know how far that would carry to help.

Support More Sources Per App

Rather than hardcoding a list of sources (see #4), I think it's simpler and more future-proof to just turn the config from being a single object to an array. You can then have multiple configs for the same app. The frontend UI will then display the first item in the array as the "main" config, with others being smaller buttons at the bottom of the entry.

For example, we currently have this:

{
    "config": {
        "id": "io.homeassistant.companion.android",
        "url": "https://github.com/home-assistant/android",
        "author": "home-assistant",
        "name": "Home Assistant",
        "latestVersion": "2023.10.2",
        "apkUrls": "[[\"app-full-release.apk\",\"https://api.github.com/repos/home-assistant/android/releases/assets/129563824\"]]",
        "preferredApkIndex": 0,
        "additionalSettings": "{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"trackOnly\":false,\"versionDetection\":\"noVersionDetection\",\"apkFilterRegEx\":\"app-full-release\",\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}"
    }
}

It could support multiple sources like this:

{
    "configs": [
        {
            "id": "io.homeassistant.companion.android",
            "url": "https://github.com/home-assistant/android",
            "author": "home-assistant",
            "name": "Home Assistant",
            "latestVersion": "2023.10.2",
            "apkUrls": "[[\"app-full-release.apk\",\"https://api.github.com/repos/home-assistant/android/releases/assets/129563824\"]]",
            "preferredApkIndex": 0,
            "additionalSettings": "{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"trackOnly\":false,\"versionDetection\":\"noVersionDetection\",\"apkFilterRegEx\":\"app-full-release\",\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}"
        },
        {
            "id": "io.homeassistant.companion.android",
            "url": "https://example.org/home-assistant/download",
            "author": "home-assistant",
            "name": "Home Assistant",
            "latestVersion": "2023.10.2",
            "apkUrls": "[[\"app-full-release.apk\",\"https://api.github.com/repos/home-assistant/android/releases/assets/129563824\"]]",
            "preferredApkIndex": 0,
            "additionalSettings": "{\"includePrereleases\":false,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"trackOnly\":false,\"versionDetection\":\"noVersionDetection\",\"apkFilterRegEx\":\"app-full-release\",\"autoApkFilterByArch\":true,\"appName\":\"\",\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"\"}"
        }
    ]
}

The UI will then have a list titled "Alternate Sources" with links for the "example.org" entry.

If any extra configs have a different App ID from the first one (which shouldn't happen), they will be ignored.

Also note that currently, configs include latestVersion and apkUrls properties, which aren't really needed (Obtainium should be updated to support importing configs with these fields missing).

Redirect Page Problems

The redirect page content is being displayed to the left side of the screen:

image

The problem appears to be 583121c, the content displays normally before this change.

[Enhancement] Add another behavior mode for category filtering (or replace the new mode with the old one).

Currently, when several categories are selected, the system checks whether there is one or more app(s) that contain both categories. This can be useful to further narrow down a filter result due to a very crowded category.
However, if you don't know exactly which of the two categories the app applies to, you intuitively select both because you expect to get results for both categories.
I would suggest introducing a new mode and setting it as default (the current one can be moved to a new "filter options" dropdown if desired): This new mode shows first (alphabetically) the apps that match the most categories. Next, (alphabetically) the apps that correspond to the second most categories, and so on.

[Enhancement] Insert a jump bar to first letter

If you know the name of the app but don't know exactly which category it belongs to, it can be tedious to scroll through the entire list. You could add a bar with jump labels at the top of the page (here), which is sorted according to the alphabet of the first letters and whose jump labels refer to the first occurrence of the first letter.

[Question] Requests

Hello,

can I (and others) leave here some requests for the apps I'd like to see on the site?

Thanks!

Suggestion: specify font-family in css

I don't know how it works together with https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css which seems to have a variable for it, but I would suggest either of these two:

  • "Liberation Sans", "Arimo", "Arial", sans-serif;
  • "Liberation Serif", "Tinos", "Times New Roman", serif;

I think they should handle all the major operating systems especially with the last fallback. Liberation is commonly installed on Linux and is the default font family of LibreOffice with same sizes as Arial/Times…, Arimo/Tinos are similiarly metrically compatible with them (part of ChromeOS core fonts) while the last will just pick something if no font is available (that tends to be the case with Android or mobile devices in general).

Sans-serif is commonly said to be more readable, but serif has more distinguishable I/l.

Of course, maybe "Liberation Mono", "Cousine", "Courier New", monospace; with the same metrical compatibilities would be more thematically appropiate with how Obtainium may be a bit more likely to be used by a technical user than a not-so-technical-user?

This issue occurred to me due to the "side-discussion" at #61 (comment) on my JavaScript console warning a lot about blocked fonts.

No way to access homepage from redirect page

A redirect page such as:
https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22dev.patrickgold.florisboard.beta%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fflorisboard%2Fflorisboard%22%2C%22author%22%3A%22florisboard%22%2C%22name%22%3A%22FlorisBoard%20Beta%22%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Atrue%7D%22%7D
...has no way to get to the main page of the project to browse for other app links.

I think this is a problem because someone might be sent a link like the above from a friend or another website, and want to investigate what this apps list is about - but they'll have no obvious way to do so without guessing that they can edit the url.

A header at the top to take you back to the main page is one solution, or a link at the bottom with text like, "This link was contributed to apps.obtainium.imranr.dev by the community."

How to add new apps

Hey there,

I'm looking to add some new apps to the project. I've got a couple of questions though:

  1. How do I figure out the id for the app I want to add?
  2. Is there a quick way to the get the additionalSettings from my app, or do I need to manually find and set these?

Any help would be much appreciated!

Thanks!

Mullvad VPN configuration not working

Hi,

I tried to install Mullvad VPN from the proposed configuration file but it don't work. I also tried to create one myself on the Obtainium app but I failed. I always receive an error "Could not find a suitable release" .
Same think if I uncheck APK by CPU architecture filter.

Maybe can you correct the config file yourself or remove it ?

PS : I discover this app list accidentally. Maybe it's not enough highlighted on the main Obtainium repo ?

Regards,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.