diff --git a/build.sh b/build.sh index 6ad9038..48dd93d 100755 --- a/build.sh +++ b/build.sh @@ -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 diff --git a/utils.sh b/utils.sh index ced7a4f..55dc42c 100755 --- a/utils.sh +++ b/utils.sh @@ -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" | 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