🎵 مستندات وب‌سرویس موسیقی

API یکپارچه برای جستجو و دانلود از ۴ سایت موسیقی ایرانی

📖 معرفی

این وب‌سرویس به شما اجازه می‌دهد تا با یک درخواست ساده، در چهار سایت بزرگ موسیقی ایرانی جستجو کنید، جدیدترین آهنگ‌ها را بگیرید و لینک دانلود با کیفیت‌های مختلف را استخراج کنید. خروجی همه‌ی درخواست‌ها به صورت JSON و با ساختار یکسان است.

💡 این سرویس از WordPress REST API سایت‌ها استفاده می‌کند، بنابراین سریع، پایدار و بدون نیاز به اسکرپ HTML است.

🌐 سایت‌های پشتیبانی‌شده

با پارامتر source می‌توانید سایت موردنظر را انتخاب کنید:

رادیو جوان HDradiojavanhd
اردبیل موزیکardabilmusic
موزیکفاmusicsfa
موزیکدلmusicdel
همه سایت‌هاall

🔗 آدرس پایه

همه درخواست‌ها به این آدرس ارسال می‌شوند:

BASE https://your-domain.com/api.php
⚠️ آدرس بالا را با آدرس واقعی سرور خودتان جایگزین کنید.

🆕 جدیدترین آهنگ‌ها latest

آخرین آهنگ‌های اضافه‌شده به سایت‌ها را برمی‌گرداند.

GET /api.php?action=latest&source={SOURCE}&limit={LIMIT}&dl={0|1}

🧪 تست زنده

📂 دسته‌بندی‌ها categories

لیست دسته‌بندی‌ها (خواننده‌ها، سبک‌ها و...) را برمی‌گرداند. برای پیدا کردن id خواننده مفید است.

GET /api.php?action=categories&q={QUERY}&source={SOURCE}
💡 پارامتر q در این action اختیاری است. اگر حذف شود، همه دسته‌بندی‌ها برگردانده می‌شوند.

🧪 تست زنده

🎤 آهنگ‌های یک خواننده artist

همه‌ی آهنگ‌های یک خواننده خاص را برمی‌گرداند. (اول دسته‌بندی خواننده را پیدا می‌کند، بعد آهنگ‌ها را می‌گیرد.)

GET /api.php?action=artist&name={ARTIST_NAME}&limit={LIMIT}&dl={0|1}

🧪 تست زنده

🎵 اطلاعات کامل یک آهنگ song

با دادن id آهنگ، اطلاعات کامل آن شامل لینک‌های دانلود با کیفیت‌های مختلف را برمی‌گرداند.

GET /api.php?action=song&id={POST_ID}&source={SOURCE}

🧪 تست زنده

🚨 کدهای خطا

وضعیتتوضیح
successدرخواست با موفقیت انجام شد و نتیجه برگشت
emptyدرخواست موفق بود اما هیچ نتیجه‌ای یافت نشد
errorخطایی رخ داده — پیام در فیلد message

💻 نمونه کد برای اپلیکیشن

JavaScript (Fetch API)

async function searchMusic(query) {
  const url = `https://your-domain.com/api.php?action=search&q=${encodeURIComponent(query)}`;
  const res = await fetch(url);
  const data = await res.json();

  if (data.status === 'success') {
    data.results.forEach(song => {
      console.log(`${song.artist} - ${song.title}`);
      console.log('کاور:', song.cover);
    });
  }
}

searchMusic('shadmehr');

PHP

$url = 'https://your-domain.com/api.php?action=search&q=' . urlencode('shadmehr');
$response = file_get_contents($url);
$data = json_decode($response, true);

foreach ($data['results'] as $song) {
    echo $song['artist'] . ' - ' . $song['title'] . "\n";
    if (!empty($song['downloads']['320kbps'])) {
        echo "دانلود: " . $song['downloads']['320kbps'] . "\n";
    }
}

Kotlin (اندروید)

val url = "https://your-domain.com/api.php?action=search&q=shadmehr"
val json = URL(url).readText()
val obj = JSONObject(json)
val results = obj.getJSONArray("results")

for (i in 0 until results.length()) {
    val song = results.getJSONObject(i)
    Log.d("MUSIC", "${song.getString("artist")} - ${song.getString("title")}")
}

Swift (iOS)

let url = URL(string: "https://your-domain.com/api.php?action=search&q=shadmehr")!
URLSession.shared.dataTask(with: url) { data, _, _ in
    guard let data = data else { return }
    if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
       let results = json["results"] as? [[String: Any]] {
        for song in results {
            print("\(song["artist"] ?? "") - \(song["title"] ?? "")")
        }
    }
}.resume()

💡 نکات مهم

✅ سرعت: همیشه اول با dl=0 جستجو کن و فقط وقتی کاربر روی دکمه دانلود کلیک کرد، از action=song استفاده کن.
💾 کش: نتایج ۱۰ دقیقه کش می‌شوند. یعنی درخواست‌های تکراری سریع‌تر پاسخ داده می‌شوند.
⚠️ محدودیت: حداکثر ۵۰ نتیجه در هر درخواست. اگر بیشتر می‌خواهید، از limit و pagination استفاده کنید.
🔒 امنیت: آدرس API را از سمت کاربر (client) مخفی نگه دارید یا یک API Key برای آن تعریف کنید تا کسی سوءاستفاده نکند.