Scraper - Apple Downloader 2025

Apple Music adalah salah satu platform streaming musik terpopuler di dunia tetapi mendownload lagu dari platform ini seringkali menjadi tantangan terutama jika Anda ingin menggunakannya secara offline di luar aplikasi resmi.

Muhamad Nur Ibad

24 Januari 20251 menit baca

Apple Scraper Downloader: Unduh Lagu Apple Music dengan Mudah

Apple Music adalah salah satu platform streaming musik terpopuler di dunia, tetapi mendownload lagu dari platform ini seringkali menjadi tantangan, terutama jika Anda ingin menggunakannya secara offline di luar aplikasi resmi. Dengan bantuan teknologi web scraping dan API pihak ketiga, Anda dapat mengunduh lagu-lagu favorit Anda dalam format MP3 dengan mudah. Dalam artikel ini, kita akan membahas cara membuat skrip downloader Apple Music menggunakan Node.js.


Pendahuluan

Skrip ini menggunakan API dari fabdl.com untuk mendapatkan informasi tentang lagu, memulai proses konversi ke MP3, dan mengunduh file musik ke komputer Anda. Berikut adalah langkah-langkah utama yang dilakukan oleh skrip:

1. Mengambil Informasi Lagu Menggunakan URL dari Apple Music, skrip ini akan mengambil detail lagu seperti judul, artis, dan ID lagu.

2. Memulai Tugas Konversi MP3 Dengan menggunakan ID lagu yang diperoleh, skrip akan memulai proses konversi file ke format MP3.

3. Memantau Proses Konversi Setelah tugas dimulai, skrip memeriksa status konversi hingga selesai.

4. Mengunduh File MP3 Setelah proses konversi selesai, skrip mengunduh file MP3 ke direktori lokal.


Kode Lengkap Skrip Downloader

Berikut adalah implementasi lengkap skrip downloader:

import { fileURLToPath } from 'url';
import path from 'path';
import axios from 'axios';
import fs from 'fs';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const getTrackInfo = async (url) => {
  try {
    const response = await axios.get('https://api.fabdl.com/apple-music/get', {
      params: { url },
      headers: {
        Accept: 'application/json, text/plain, */*',
        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36',
        Referer: 'https://keepvid.ch/apple-music-new4',
      },
    });
    return response.data.result;
  } catch (error) {
    console.error('Failed to fetch track info:', error.message);
    return null;
  }
};

const startMp3ConvertTask = async (gid, trackId) => {
  try {
    const response = await axios.get(`https://api.fabdl.com/apple-music/mp3-convert-task/${gid}/${trackId}`, {
      headers: {
        Accept: 'application/json, text/plain, */*',
        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36',
        Referer: 'https://keepvid.ch/apple-music-new4',
      },
    });
    return response.data.result;
  } catch (error) {
    console.error('Failed to start MP3 conversion task:', error.message);
    return null;
  }
};

const checkMp3ConvertProgress = async (tid) => {
  try {
    const response = await axios.get(`https://api.fabdl.com/apple-music/mp3-convert-progress/${tid}`, {
      headers: {
        Accept: 'application/json, text/plain, */*',
        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36',
        Referer: 'https://keepvid.ch/apple-music-new4',
      },
    });
    return response.data.result;
  } catch (error) {
    console.error('Failed to check MP3 conversion progress:', error.message);
    return null;
  }
};

const downloadMp3 = async (downloadUrl, trackName) => {
  try {
    const url = `https://api.fabdl.com${downloadUrl}`;
    const response = await axios.get(url, { responseType: 'stream' });
    const outputPath = path.resolve(__dirname, `${trackName}.mp3`);
    const writer = fs.createWriteStream(outputPath);

    response.data.pipe(writer);

    return new Promise((resolve, reject) => {
      writer.on('finish', () => resolve(outputPath));
      writer.on('error', reject);
    });
  } catch (error) {
    console.error('Failed to download MP3:', error.message);
    return null;
  }
};

const appleDownloader = async (url) => {
  console.log('Fetching track info...');
  const trackInfo = await getTrackInfo(url);

  if (!trackInfo) {
    console.error('Failed to get track info.');
    return;
  }

  console.log(`Track: ${trackInfo.name} by ${trackInfo.artists}`);

  console.log('Starting MP3 conversion task...');
  const convertTask = await startMp3ConvertTask(trackInfo.gid, trackInfo.id);

  if (!convertTask) {
    console.error('Failed to start MP3 conversion task.');
    return;
  }

  console.log('Checking MP3 conversion progress...');
  const progress = await checkMp3ConvertProgress(convertTask.tid);

  if (!progress || progress.status !== 3) {
    console.error('MP3 conversion is not complete.');
    return;
  }

  console.log('Downloading MP3...');
  const outputPath = await downloadMp3(progress.download_url, trackInfo.name);

  if (outputPath) {
    console.log(`MP3 downloaded successfully: ${outputPath}`);
  } else {
    console.error('Failed to download MP3.');
  }
};

const appleMusicUrl = 'https://music.apple.com/us/album/die-with-a-smile/1762656724?i=1762656732';
appleDownloader(appleMusicUrl);

Cara Kerja Skrip

  1. Masukkan URL lagu Apple Music yang ingin Anda unduh ke variabel appleMusicUrl.

  2. Skrip akan memanggil API untuk mendapatkan informasi lagu, memulai tugas konversi, dan memantau prosesnya.

  3. Setelah selesai, file MP3 akan diunduh ke folder tempat skrip dijalankan.


Kesimpulan

Dengan menggunakan skrip ini, Anda dapat mengotomatisasi proses pengunduhan lagu dari Apple Music ke format MP3 dengan mudah. Skrip ini adalah solusi praktis bagi mereka yang ingin mendengarkan musik favorit mereka tanpa harus selalu terhubung ke internet. Pastikan untuk selalu menggunakan skrip ini secara bijak sesuai kebijakan hak cipta yang berlaku.

Author: Ibad Ai
Sumber: https://ibad.ct.ws