Buat File album.json Otomatis untuk Galeri Online-mu

Gunakan script Python atau Node.js untuk memindai folder album rekursif dengan cepat.

Tentu. Karena browser tidak bisa memindai folder di komputer Anda, kita tidak bisa membuatnya dari halaman web.

Sebagai gantinya, kita bisa menggunakan script pendek di komputer Anda untuk membuat file album.json tersebut. Setelah file itu jadi, Anda bisa mengunggahnya bersama semua gambar Anda ke server.

Saya akan berikan dua opsi script yang paling umum: Python (seringkali sudah ada di Mac/Linux dan mudah di-install di Windows) dan Node.js (jika Anda lebih suka JavaScript).

Keduanya melakukan hal yang sama:

  • Memindai folder tempat script dijalankan secara rekursif.
  • Mencari semua file gambar (jpg, png, webp, gif).
  • Membuat file album.json yang berisi daftar path relatif dari gambar-gambar tersebut.

Cara Pakai (Penting!)

  1. Letakkan semua gambar dan subfolder album Anda di dalam satu folder utama (misalnya, album-liburan).
  2. Pilih salah satu dari script di bawah ini (Python atau Node.js).
  3. Simpan script tersebut di dalam folder utama tadi (misalnya, album-liburan/buat_json.py).
  4. Jalankan script tersebut dari dalam folder itu.
  5. File album.json akan muncul di folder yang sama.
  6. Unggah seluruh isi folder album-liburan (termasuk album.json dan semua subfolder gambar) ke server web Anda.

Opsi 1: Script Python (.py)

Metode ini merupakan alternatif yang efisien apabila perangkat Anda telah terintegrasi dengan runtime Python. di dalam folder album Anda, beri nama buat_json.py, lalu salin dan tempel kode di bawah ini ke dalamnya.

import os
import json
# --- Konfigurasi ---
START_DIR = '.' # Titik (.) berarti folder saat ini
OUTPUT_FILE = 'album.json' # Nama file JSON yang akan dibuat
SCRIPT_NAME = os.path.basename(__file__) # Nama script ini agar diabaikan
IMAGE_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.webp', '.gif', '.avif')
# --------------------
image_paths = []
print(f"Memindai '{START_DIR}' untuk mencari gambar...")
# os.walk() akan menjelajah semua subfolder secara otomatis
for root, dirs, files in os.walk(START_DIR, topdown=True):
 # Abaikan folder .git atau node_modules jika ada
 dirs[:] = [d for d in dirs if d not in ['.git', 'node_modules']]
 for file in files:
 # 1. Abaikan file script ini dan file outputnya sendiri
 if file == SCRIPT_NAME or file == OUTPUT_FILE:
 continue
 # 2. Cek apakah ekstensinya adalah gambar
 if file.lower().endswith(IMAGE_EXTENSIONS):
 # 3. Dapatkan path lengkap dan path relatif
 full_path = os.path.join(root, file)
 # os.path.relpath akan membuat path relatif (mis: 'subfolder/gambar.jpg')
 relative_path = os.path.relpath(full_path, START_DIR)
 # 4. Ganti backslash (\) Windows menjadi forward slash (/) untuk URL
 relative_path = relative_path.replace(os.path.sep, '/')
 image_paths.append(relative_path)
 print(f" Menemukan: {relative_path}")
# 5. Urutkan daftar agar rapi
image_paths.sort()
# 6. Tulis semua path ke dalam file JSON
try:
 with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
 # Parameter penjarakan tersebut dikonfigurasikan agar output berkas JSON menyajikan struktur data secara sistematis dan terstruktur.
 json.dump(image_paths, f, indent=2, ensure_ascii=False)
 print(f"\n✅ Sukses! {len(image_paths)} gambar telah disimpan ke '{OUTPUT_FILE}'")
except IOError as e:
 print(f"\n❌ Gagal menulis file: {e}")

Cara Menjalankan (Python)

1. Buka terminal atau Command Prompt.
2. Masuk ke folder album Anda:
cd path/ke/album-liburan
3. Jalankan script:
python buat_json.py (atau python3 buat_json.py)


Opsi 2: Script Node.js (.js)

Gunakan ini jika Anda sudah meng-install Node.js di komputer Anda. Buat file baru di dalam folder album Anda, beri nama buat_json.js, lalu salin dan tempel kode di bawah ini ke dalamnya.

const fs = require('fs');
const path = require('path');
// --- Konfigurasi ---
const START_DIR = '.'; // Titik (.) berarti folder saat ini
const OUTPUT_FILE = 'album.json'; // Nama file JSON yang akan dibuat
const SCRIPT_NAME = path.basename(__filename); // Nama script ini agar diabaikan
const IMAGE_EXTENSIONS = new Set(['.jpg', '.jpeg', '.png', '.webp', '.gif', '.avif']);
// --------------------
const imagePaths = [];
console.log(`Memindai '${START_DIR}' untuk mencari gambar...`);
// Fungsi rekursif untuk memindai folder
function findImages(currentDir) {
 try {
 const entries = fs.readdirSync(currentDir, { withFileTypes: true });
 for (const entry of entries) {
 const fullPath = path.join(currentDir, entry.name);
 // Abaikan folder .git atau node_modules
 if (entry.isDirectory() && entry.name !== '.git' && entry.name !== 'node_modules') {
 findImages(fullPath); // Rekursif ke subfolder
 } else if (entry.isFile()) {
 // 1. Abaikan file script ini dan file outputnya sendiri
 if (entry.name === SCRIPT_NAME || entry.name === OUTPUT_FILE) {
 continue;
 }
 // 2. Cek apakah ekstensinya adalah gambar
 const ext = path.extname(entry.name).toLowerCase();
 if (IMAGE_EXTENSIONS.has(ext)) {
 // 3. Dapatkan path relatif
 // path.relative akan membuat path relatif (mis: 'subfolder/gambar.jpg')
 const relativePath = path.relative(START_DIR, fullPath);
 // 4. Ganti backslash (\) Windows menjadi forward slash (/) untuk URL
 const urlPath = relativePath.replace(/\\/g, '/');
 imagePaths.push(urlPath);
 console.log(` Menemukan: ${urlPath}`);
 }
 }
 }
 } catch (err) {
 console.error(`Gagal membaca folder: ${currentDir}`, err);
 }
}
// Mulai pemindaian
findImages(START_DIR);
// 5. Urutkan daftar agar rapi
imagePaths.sort();
// 6. Tulis semua path ke dalam file JSON
try {
 // JSON.stringify dengan 'null, 2' membuat file rapi dan mudah dibaca
 const jsonContent = JSON.stringify(imagePaths, null, 2);
 fs.writeFileSync(OUTPUT_FILE, jsonContent, 'utf8');
 console.log(`\n✅ Sukses! ${imagePaths.length} gambar telah disimpan ke '${OUTPUT_FILE}'`);
} catch (err) {
 console.error(`\n❌ Gagal menulis file: ${err}`);
}

Cara Menjalankan (Node.js)

1. Buka terminal atau Command Prompt.
2. Masuk ke folder album Anda:
cd path/ke/album-liburan
3. Jalankan script:
node buat_json.js