DashXx / plugins /apple.js
HerzaJ's picture
Upload 56 files
7c363b0 verified
const axios = require('axios');
const cookieString = "_ga=GA1.1.206983766.1756790346; PHPSESSID=jomn6brkleb5969a3opposidru; quality=m4a; dcount=2; _ga_382FSD5=GS2.1.s1756858170$o3$g1$t1756858172$j58$l0$h0";
const axiosInstance = axios.create({
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Cookie': cookieString
}
});
function encodeDownloadUrl(url) {
if (!url) return url;
return url.replace(/ /g, '%20');
}
function detectUrlType(url) {
if (url.includes('/song/')) {
return 'song';
} else if (url.includes('/album/') && url.includes('?i=')) {
return 'song';
} else if (url.includes('/album/') && !url.includes('?i=')) {
return 'album';
} else {
return 'song';
}
}
async function apple(url) {
try {
const urlType = detectUrlType(url);
if (urlType === 'album') {
return await downloadAlbum(url);
} else {
return await downloadSong(url);
}
} catch (error) {
return {
author: "Herza",
status: 500,
source: "error",
data: {
error: error.message,
message: 'Download gagal dari aaplmusicdownloader'
}
};
}
}
async function downloadSong(url) {
await axiosInstance.get('https://aaplmusicdownloader.com/ifCaptcha.php');
const endpoint = url.includes('/song/')
? 'https://aaplmusicdownloader.com/api/song_url.php'
: 'https://aaplmusicdownloader.com/api/applesearch.php';
const searchResponse = await axiosInstance.get(`${endpoint}?url=${encodeURIComponent(url)}`, {
headers: {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://aaplmusicdownloader.com/'
}
});
const searchData = searchResponse.data;
await axiosInstance.get('https://aaplmusicdownloader.com/song.php', {
headers: {
'Referer': 'https://aaplmusicdownloader.com/'
}
});
await axiosInstance.get('https://aaplmusicdownloader.com/ifCaptcha.php', {
headers: {
'Referer': 'https://aaplmusicdownloader.com/song.php'
}
});
const formData = `song_name=${encodeURIComponent(searchData.name)}&artist_name=${encodeURIComponent(searchData.artist)}&url=${encodeURIComponent(url)}&token=none&zip_download=false&quality=m4a`;
const downloadResponse = await axiosInstance.post('https://aaplmusicdownloader.com/api/composer/swd.php', formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://aaplmusicdownloader.com/song.php'
}
});
const downloadData = downloadResponse.data;
const downloadLink = downloadData.dlink || downloadData.wmcode;
return {
author: "Herza",
status: 200,
source: "aaplmusicdownloader",
type: "song",
data: {
name: searchData.name,
albumname: searchData.albumname,
artist: searchData.artist,
thumb: searchData.thumb,
duration: searchData.duration,
downloadLink: encodeDownloadUrl(downloadLink),
status: downloadData.status
}
};
}
async function downloadAlbum(url) {
await axiosInstance.get('https://aaplmusicdownloader.com/ifCaptcha.php');
const playlistResponse = await axiosInstance.get(`https://aaplmusicdownloader.com/api/pl.php?url=${encodeURIComponent(url)}`, {
headers: {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://aaplmusicdownloader.com/'
}
});
const albumData = playlistResponse.data.album_details;
const firstSong = albumData[0];
await axiosInstance.get('https://aaplmusicdownloader.com/album.php', {
headers: {
'Referer': 'https://aaplmusicdownloader.com/'
}
});
await axiosInstance.get('https://aaplmusicdownloader.com/ifCaptcha.php', {
headers: {
'Referer': 'https://aaplmusicdownloader.com/album.php'
}
});
const formData = `song_name=${encodeURIComponent(firstSong.name)}&artist_name=${encodeURIComponent(firstSong.artist.replace(/&/g, '&'))}&url=${encodeURIComponent(firstSong.link)}&token=na&zip_download=false&quality=m4a`;
const downloadResponse = await axiosInstance.post('https://aaplmusicdownloader.com/api/composer/swd.php', formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://aaplmusicdownloader.com/album.php'
}
});
const downloadData = downloadResponse.data;
const downloadLink = downloadData.dlink || downloadData.wmcode;
return {
author: "Herza",
status: 200,
source: "aaplmusicdownloader",
type: "album",
data: {
name: firstSong.name,
albumname: firstSong.album,
artist: firstSong.artist.replace(/&/g, '&'),
thumb: firstSong.thumb,
duration: firstSong.duration,
downloadLink: encodeDownloadUrl(downloadLink),
status: downloadData.status
}
};
}
const handler = async (req, res) => {
try {
const { url } = req.query;
if (!url) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: url'
});
}
const result = await apple(url);
if (result.status === 500) {
return res.status(500).json({
success: false,
error: result.data.error,
message: result.data.message
});
}
res.json({
author: "Herza",
success: true,
msg: result.data
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
};
module.exports = {
name: 'Apple Music DL',
description: 'Download Apple Music Song or Album',
type: 'GET',
routes: ['api/download/applemusic'],
tags: ['downloader', 'tools', 'misc'],
parameters: ['url', 'key'],
enabled: true,
main: ['Downloader'],
handler
}