Add apkmonk.com downloader (#189)

* Add apkmonk.com downloader

* error message

* prioritize apkmirror

* redundant echo

---------

Co-authored-by: j-hc <j-hc@users.noreply.github.com>
This commit is contained in:
Péter Tombor 2023-03-09 10:57:37 +01:00 committed by GitHub
parent 39a4a57c35
commit 06e7cb73d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

View File

@ -76,12 +76,16 @@ for table_name in $(toml_get_table_names); do
app_args[uptodown_dlurl]=${app_args[uptodown_dlurl]%/}
app_args[dl_from]=uptodown
} || app_args[uptodown_dlurl]=""
app_args[apkmonk_dlurl]=$(toml_get "$t" apkmonk-dlurl) && {
app_args[apkmonk_dlurl]=${app_args[apkmonk_dlurl]%/}
app_args[dl_from]=apkmonk
} || app_args[apkmonk_dlurl]=""
app_args[apkmirror_dlurl]=$(toml_get "$t" apkmirror-dlurl) && {
app_args[apkmirror_dlurl]=${app_args[apkmirror_dlurl]%/}
app_args[dl_from]=apkmirror
} || app_args[apkmirror_dlurl]=""
if [ -z "${app_args[dl_from]:-}" ]; then
abort "ERROR: neither 'apkmirror_dlurl' nor 'uptodown_dlurl' were not set for '$table_name'."
abort "ERROR: no 'apkmirror_dlurl', 'uptodown_dlurl', 'apkmonk_dlurl' were set for '$table_name'."
fi
app_args[arch]=$(toml_get "$t" arch) && {
if ! isoneof "${app_args[arch]}" all arm64-v8a arm-v7a; then

View File

@ -237,6 +237,19 @@ get_uptodown_pkg_name() {
}
# --------------------------------------------------
# -------------------- apkmonk ---------------------
get_apkmonk_resp() { req "${1}" -; }
get_apkmonk_vers() { grep -oP 'download_ver.+?>\K([0-9,\.]*)' <<<"$1"; }
dl_apkmonk() {
local apkmonk_resp=$1 version=$2 output=$3
local url
url="https://www.apkmonk.com/down_file?pkg="$(echo "$apkmonk_resp" | grep "$version</a>" | grep -oP 'href=\"/download-app/\K.+?(?=/?\">)' | sed 's;/;\&key=;') || return 1
url=$(req "$url" - | grep -oP 'https.+?(?=\",)')
req "$url" "$output"
}
get_apkmonk_pkg_name() { grep -oP '.*apkmonk\.com\/app\/\K([,\w,\.]*)' <<<"$1"; }
# --------------------------------------------------
patch_apk() {
local stock_input=$1 patched_apk=$2 patcher_args=$3
declare -r tdir=$(mktemp -d -p $TEMP_DIR)
@ -270,6 +283,9 @@ build_rv() {
elif [ "$dl_from" = uptodown ]; then
uptwod_resp=$(get_uptodown_resp "${args[uptodown_dlurl]}")
pkg_name=$(get_uptodown_pkg_name "${args[uptodown_dlurl]}")
elif [ "$dl_from" = apkmonk ]; then
pkg_name=$(get_apkmonk_pkg_name "${args[apkmonk_dlurl]}")
apkmonk_resp=$(get_apkmonk_resp "${args[apkmonk_dlurl]}")
fi
local get_latest_ver=false
@ -290,6 +306,9 @@ build_rv() {
elif [ "$dl_from" = uptodown ]; then
uptwodvers=$(get_uptodown_vers "$uptwod_resp")
version=$(get_largest_ver <<<"$uptwodvers") || version=$(head -1 <<<"$uptwodvers")
elif [ "$dl_from" = apkmonk ]; then
apkmonkvers=$(get_apkmonk_vers "$apkmonk_resp")
version=$(get_largest_ver <<<"$apkmonkvers") || version=$(head -1 <<<"$apkmonkvers")
fi
fi
if [ -z "$version" ]; then
@ -320,6 +339,12 @@ build_rv() {
epr "ERROR: Could not download ${app_name} from Uptodown"
return 0
fi
elif [ "$dl_from" = apkmonk ]; then
pr "Downloading '${app_name}' from Apkmonk"
if ! dl_apkmonk "$apkmonk_resp" "$version" "$stock_apk"; then
epr "ERROR: Could not download ${app_name} from Apkmonk"
return 0
fi
fi
fi
if [ "${arch}" = "all" ]; then