#!/usr/bin/env node /** * Anison & Anime MP3 Downloader * Dijalankan langsung dengan: node anison.js */ const fs = require('fs'); const path = require('path'); const { pipeline } = require('stream/promises'); // ========================================================================= // PENGATURAN LAGU DI DALAM FILE (Ubah judul lagu di sini): // ========================================================================= const QUERY = "Another colony TRUE"; // Contoh lagu anime dari Anison Online const DOWNLOAD_DIR = "./downloads"; // Lokasi folder download // ========================================================================= // Bisa juga menerima argumen dari terminal jika dioper: node anison.js "Judul Lagu" const targetQuery = process.argv.slice(2).join(" ").trim() || QUERY; const HEADERS = { "Content-Type": "application/x-www-form-urlencoded", "Origin": "https://spotidown.app", "Referer": "https://spotidown.app/en7", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "X-Requested-With": "XMLHttpRequest" }; async function downloadSong() { console.log("=================================================="); console.log(" ANISON / ANIME MP3 DOWNLOADER (.JS) "); console.log("=================================================="); console.log(`[*] Target Query : "${targetQuery}"`); console.log(`[*] Mencari katalog musik & anime...`); // 1. Cari lagu di engine let cookie = ""; const searchRes = await fetch("https://spotidown.app/action", { method: "POST", headers: HEADERS, body: new URLSearchParams({ url: targetQuery, "g-recaptcha-response": "" }) }); if (!searchRes.ok) { throw new Error(`Pencarian gagal: HTTP ${searchRes.status}`); } const rawCookies = searchRes.headers.getSetCookie ? searchRes.headers.getSetCookie() : [searchRes.headers.get("set-cookie")]; cookie = rawCookies.map(c => (c || "").split(";")[0]).filter(Boolean).join("; "); const searchData = await searchRes.json(); if (searchData.error || !searchData.data) { throw new Error(searchData.message || "Lagu tidak ditemukan."); } const forms = [...searchData.data.matchAll(/