diff --git a/CONFIG.md b/CONFIG.md index bc77500..068e365 100755 --- a/CONFIG.md +++ b/CONFIG.md @@ -41,5 +41,5 @@ apkmonk-dlurl = "https://www.apkmonk.com/app/com.app.app/" module-prop-name = "some-app-magisk" # magisk module prop name. merge-integrations = false # set false to never merge even when needed. default: true apkmirror-dpi = "360-480dpi" # used to select apk variant from apkmirror. default: nodpi -apkmirror-arch = "arm64-v8a" # 'arm64-v8a', 'arm-v7a', 'universal', 'both'. 'both' downloads both arm64-v8a and arm-v7a. default: universal +apkmirror-arch = "arm64-v8a" # 'arm64-v8a', 'arm-v7a', 'all', 'both'. 'both' downloads both arm64-v8a and arm-v7a. default: all ``` diff --git a/build.sh b/build.sh index cdb6683..da5a9b6 100755 --- a/build.sh +++ b/build.sh @@ -146,8 +146,8 @@ for table_name in $(toml_get_table_names); do app_args[dl_from]=archive } || app_args[archive_dlurl]="" if [ -z "${app_args[dl_from]:-}" ]; then abort "ERROR: no 'apkmirror_dlurl', 'uptodown_dlurl' or 'apkmonk_dlurl' option was set for '$table_name'."; fi - app_args[arch]=$(toml_get "$t" apkmirror-arch) || app_args[arch]="universal" - if [ "${app_args[arch]}" != "both" ] && [ "${app_args[arch]}" != "universal" ] && [[ "${app_args[arch]}" != "arm64-v8a"* ]] && [[ "${app_args[arch]}" != "arm-v7a"* ]]; then + app_args[arch]=$(toml_get "$t" apkmirror-arch) || app_args[arch]="all" + if [ "${app_args[arch]}" != "both" ] && [ "${app_args[arch]}" != "all" ] && [[ "${app_args[arch]}" != "arm64-v8a"* ]] && [[ "${app_args[arch]}" != "arm-v7a"* ]]; then abort "wrong arch '${app_args[arch]}' for '$table_name'" fi diff --git a/utils.sh b/utils.sh index 1b3fdf5..7b531ff 100755 --- a/utils.sh +++ b/utils.sh @@ -209,15 +209,16 @@ isoneof() { # -------------------- apkmirror -------------------- dl_apkmirror() { - local url=$1 version=${2// /-} output=$3 apkorbundle=$4 arch=$5 dpi=$6 + local url=$1 version=${2// /-} output=$3 arch=$4 dpi=$5 apkorbundle=APK + if [ "$arch" = "arm-v7a" ]; then arch="armeabi-v7a"; fi [ "${DRYRUN:-}" ] && { : >"$output" return 0 } - local resp node app_table dlurl="" - if [ "$arch" = universal ]; then + local apparch resp node app_table dlurl="" + if [ "$arch" = all ]; then apparch=(universal noarch 'arm64-v8a + armeabi-v7a') - else apparch=("$arch" universal); fi + else apparch=("$arch" universal noarch 'arm64-v8a + armeabi-v7a'); fi url="${url}/${url##*/}-${version//./-}-release/" resp=$(req "$url" -) || return 1 for ((n = 1; n < 40; n++)); do @@ -238,12 +239,10 @@ dl_apkmirror() { req "$url" "$output" } get_apkmirror_vers() { - local apkmirror_category=$1 allow_alpha_version=$2 local vers apkm_resp - apkm_resp=$(req "https://www.apkmirror.com/uploads/?appcategory=${apkmirror_category}" -) - # apkm_name=$(echo "$apkm_resp" | sed -n 's;.*Latest \(.*\) Uploads.*;\1;p') + apkm_resp=$(req "https://www.apkmirror.com/uploads/?appcategory=${__APKMIRROR_CAT__}" -) vers=$(sed -n 's;.*Version:\(.*\) .*;\1;p' <<<"$apkm_resp") - if [ "$allow_alpha_version" = false ]; then + if [ "$__AAV__" = false ]; then local IFS=$'\n' vers=$(grep -iv "\(beta\|alpha\)" <<<"$vers") local v r_vers=() @@ -255,48 +254,59 @@ get_apkmirror_vers() { echo "$vers" fi } -get_apkmirror_pkg_name() { req "$1" - | sed -n 's;.*id=\(.*\)" class="accent_color.*;\1;p'; } +get_apkmirror_pkg_name() { sed -n 's;.*id=\(.*\)" class="accent_color.*;\1;p' <<<"$__APKMIRROR_RESP__"; } +get_apkmirror_resp() { + __APKMIRROR_RESP__=$(req "${1}" -) + __APKMIRROR_CAT__="${1##*/}" +} # -------------------------------------------------- # -------------------- uptodown -------------------- -get_uptodown_resp() { req "${1}/versions" -; } -get_uptodown_vers() { $HTMLQ --text ".version" <<<"$1"; } +get_uptodown_resp() { + __UPTODOWN_RESP__=$(req "${1}/versions" -) + __UPTODOWN_RESP_PKG__=$(req "${1}/download" -) +} +get_uptodown_vers() { $HTMLQ --text ".version" <<<"$__UPTODOWN_RESP__"; } dl_uptodown() { - local uptwod_resp=$1 version=$2 output=$3 uptodown_dlurl=$4 + local uptodown_dlurl=$1 version=$2 output=$3 local url if [ -n "$version" ]; then - url=$(grep -F "${version}" -B 2 <<<"$uptwod_resp" | head -1 | sed -n 's;.*data-url=".*download\/\(.*\)".*;\1;p') || return 1 + url=$(grep -F "${version}" -B 2 <<<"$__UPTODOWN_RESP__" | head -1 | sed -n 's;.*data-url=".*download\/\(.*\)".*;\1;p') || return 1 else url=""; fi url="https://dw.uptodown.com/dwn/$(req "${uptodown_dlurl}/post-download/${url}" - | sed -n 's;.*class="post-download" data-url="\(.*\)".*;\1;p')" || return 1 req "$url" "$output" } -get_uptodown_pkg_name() { $HTMLQ --text "tr.full:nth-child(1) > td:nth-child(3)" <<<"$1"; } +get_uptodown_pkg_name() { $HTMLQ --text "tr.full:nth-child(1) > td:nth-child(3)" <<<"$__UPTODOWN_RESP_PKG__"; } # -------------------------------------------------- # -------------------- apkmonk --------------------- -get_apkmonk_resp() { req "${1}" -; } -get_apkmonk_vers() { grep -oP 'download_ver.+?>\K([0-9,\.]*)' <<<"$1"; } +get_apkmonk_resp() { + __APKMONK_RESP__=$(req "${1}" -) + __APKMONK_PKG_NAME__=$(awk -F/ '{print $NF}' <<<"$1") +} +get_apkmonk_vers() { grep -oP 'download_ver.+?>\K([0-9,\.]*)' <<<"$__APKMONK_RESP__"; } dl_apkmonk() { - local apkmonk_resp=$1 version=$2 output=$3 - local url - url="https://www.apkmonk.com/down_file?pkg="$(grep -F "$version" <<<"$apkmonk_resp" | grep -oP 'href=\"/download-app/\K.+?(?=/?\">)' | sed 's;/;\&key=;') || return 1 + local url=$1 version=$2 output=$3 + url="https://www.apkmonk.com/down_file?pkg="$(grep -F "$version" <<<"$__APKMONK_RESP__" | grep -oP 'href=\"/download-app/\K.+?(?=/?\">)' | sed 's;/;\&key=;') || return 1 url=$(req "$url" - | grep -oP 'https.+?(?=\",)') || return 1 req "$url" "$output" } -get_apkmonk_pkg_name() { grep -oP '.*apkmonk\.com\/app\/\K([,\w,\.]*)' <<<"$1"; } +get_apkmonk_pkg_name() { echo "$__APKMONK_PKG_NAME__"; } # -------------------------------------------------- dl_archive() { - local archive_resp=$1 version=$2 arch=$3 output=$4 url=$5 - local path - path=$(grep "${version}-${arch}" <<<"$archive_resp") || return 1 + local url=$1 version=$2 output=$3 arch=$4 + local path version=${version// /} + path=$(grep "${version_f#v}-${arch// /}" <<<"$__ARCHIVE_RESP__") || return 1 req "${url}/${path}" "$output" } get_archive_resp() { + local r r=$(req "$1" -) - if [ -z "$r" ]; then return 1; else sed -n 's;^