Download scripts/fetch-models.sh from we2app/v4: direct link, hf CLI and curl.
- Browser
- Download file 2.36 kB
-
https://huggingface.co/spaces/we2app/v4/resolve/main/scripts/fetch-models.sh
- Command line
-
hf download hf://spaces/we2app/v4/scripts/fetch-models.sh
-
curl -L -o fetch-models.sh https://huggingface.co/spaces/we2app/v4/resolve/main/scripts/fetch-models.sh
2.36 kB
| # fetch-models.sh — download every link in models.txt into $MODELS_DIR. | |
| # Skips files that already exist (use --force to re-download). | |
| # | |
| # Usage: fetch-models.sh [--dry-run] [--force] [--list] [models.txt] | |
| # Env: MODELS_TXT (default: models.txt), MODELS_DIR (default: /models) | |
| set -euo pipefail | |
| MODELS_DIR="${MODELS_DIR:-/models}" | |
| LIST="${MODELS_TXT:-models.txt}" | |
| FORCE=0 | |
| DRY=0 | |
| ONLY_LIST=0 | |
| for arg in "$@"; do | |
| case "$arg" in | |
| -h|--help) | |
| echo "Usage: $0 [--dry-run] [--force] [--list] [models.txt]" | |
| exit 0 | |
| ;; | |
| --dry-run|-n) DRY=1 ;; | |
| --force|-f) FORCE=1 ;; | |
| --list|-l) ONLY_LIST=1 ;; | |
| --*) | |
| echo "error: unknown option '$arg'" >&2 | |
| exit 1 | |
| ;; | |
| *) LIST="$arg" ;; | |
| esac | |
| done | |
| if [ ! -f "$LIST" ]; then | |
| echo "error: link file not found: $LIST" >&2 | |
| exit 1 | |
| fi | |
| # --- parse models.txt into parallel arrays (no URLs hardcoded here) --- | |
| f_url=() | |
| f_file=() | |
| basename_of_url() { | |
| local u="${1%%\?*}" | |
| echo "${u##*/}" | |
| } | |
| while IFS= read -r line || [ -n "$line" ]; do | |
| line="${line%$'\r'}" | |
| line="${line%% #*}" | |
| case "$line" in | |
| ''|'#'*) continue ;; | |
| esac | |
| url="${line%% *}" | |
| rest="${line#"$url"}" | |
| rest="${rest#"${rest%%[![:space:]]*}"}" | |
| if [ -n "$rest" ]; then | |
| file="${rest%%[[:space:]]*}" | |
| else | |
| file="$(basename_of_url "$url")" | |
| fi | |
| f_url+=("$url") | |
| f_file+=("$file") | |
| done < "$LIST" | |
| if [ "${#f_url[@]}" -eq 0 ]; then | |
| echo "error: no links found in $LIST" >&2 | |
| exit 1 | |
| fi | |
| fetch_one() { | |
| local url="$1" dest="$2" | |
| if [ -s "$dest" ]; then | |
| if [ "$FORCE" -eq 1 ]; then | |
| echo "re-downloading: $dest" | |
| else | |
| echo "skip (exists): $dest" | |
| return 0 | |
| fi | |
| fi | |
| if [ "$DRY" -eq 1 ]; then | |
| echo "would download: $url -> $dest" | |
| return 0 | |
| fi | |
| echo "downloading: $url" | |
| mkdir -p "$(dirname "$dest")" | |
| if command -v wget >/dev/null 2>&1; then | |
| wget -q --show-progress "$url" -O "$dest.tmp" | |
| mv "$dest.tmp" "$dest" | |
| else | |
| curl -fL --progress-bar "$url" -o "$dest.tmp" | |
| mv "$dest.tmp" "$dest" | |
| fi | |
| } | |
| mkdir -p "$MODELS_DIR" | |
| i=0 | |
| while [ "$i" -lt "${#f_url[@]}" ]; do | |
| dest="$MODELS_DIR/${f_file[$i]}" | |
| if [ "$ONLY_LIST" -eq 1 ]; then | |
| echo "${f_url[$i]} -> $dest" | |
| else | |
| fetch_one "${f_url[$i]}" "$dest" | |
| fi | |
| i=$((i + 1)) | |
| done | |
| if [ "$ONLY_LIST" -eq 0 ]; then | |
| echo "done: ${#f_url[@]} files in $MODELS_DIR" | |
| fi | |