Spaces:
Runtime error
Runtime error
| # File Objective : Fetch the HuffPost News Category dataset into ./data (gitignored). | |
| # Scope : Phase 2 data acquisition β reproducible, login only when needed. | |
| # What it does : 1. Skips download if file already present (idempotent). | |
| # 2. Tries $DATA_URL (no-auth direct download) first. | |
| # 3. Falls back to Kaggle CLI (uses ~/.kaggle/kaggle.json for auth). | |
| # 4. Prints clear manual instructions if both unavailable. | |
| # What it does not: 1. Commit data to git (data/ is gitignored). | |
| # 2. Re-download if the output file already exists. | |
| set -euo pipefail | |
| DATA_DIR="data" | |
| OUT="${DATA_DIR}/news_category.json" | |
| KAGGLE_SLUG="rmisra/news-category-dataset" | |
| mkdir -p "${DATA_DIR}" | |
| # ββ Early exit if already downloaded ββββββββββββββββββββββββββββββββββββββββββ | |
| if [[ -f "${OUT}" ]]; then | |
| echo "β Dataset already present: ${OUT} ($(wc -l < "${OUT}" | tr -d ' ') rows)" | |
| exit 0 | |
| fi | |
| # ββ Primary: direct URL (no auth) β set DATA_URL env var to enable ββββββββββββ | |
| if [[ -n "${DATA_URL:-}" ]]; then | |
| echo "β¬οΈ Downloading from DATA_URL ..." | |
| curl -fSL "${DATA_URL}" -o "${OUT}" | |
| # ββ Fallback: Kaggle CLI (requires ~/.kaggle/kaggle.json) βββββββββββββββββββββ | |
| elif command -v kaggle >/dev/null 2>&1; then | |
| echo "β¬οΈ Downloading via Kaggle CLI ..." | |
| echo " (login uses ~/.kaggle/kaggle.json β run 'kaggle auth' if not set up)" | |
| kaggle datasets download -d "${KAGGLE_SLUG}" -p "${DATA_DIR}" --unzip | |
| # Kaggle may extract as News_Category_Dataset_v3.json or similar β normalise | |
| extracted=$(find "${DATA_DIR}" -maxdepth 1 -name "*.json" ! -name "news_category.json" | head -1) | |
| if [[ -n "${extracted}" ]]; then | |
| mv "${extracted}" "${OUT}" | |
| fi | |
| # ββ No method available ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| else | |
| echo "β Cannot download: no DATA_URL set and Kaggle CLI not found." | |
| echo "" | |
| echo " Option A (no auth) : export DATA_URL=<direct-link> && bash scripts/download_data.sh" | |
| echo " Option B (Kaggle) : pip install kaggle && kaggle auth && bash scripts/download_data.sh" | |
| echo " Option C (manual) : place the JSON file at ${OUT}" | |
| exit 1 | |
| fi | |
| echo "β Done: ${OUT} ($(wc -l < "${OUT}" | tr -d ' ') rows)" | |