src/surah-search.js
/*
base: https://quran.nu.or.id
auth: dann
cret: sel-19-mei-26
note: jangan hapus cr
*/
(async () => {
async function getSurahData(slug) {
const axios = (await import("axios")).default
try {
const rscPayload = encodeURIComponent(JSON.stringify([
"",
{
children: [
["slug", slug, "d"],
{
children: [`__PAGE__?{"slug":"${slug}"}`, {}]
}
]
},
null,
null,
true
]))
const { data } = await axios.get(`https://quran.nu.or.id/${slug}`, {
params: {
_rsc: 'k8ba4'
},
headers: {
'RSC': '1',
'Next-Router-State-Tree': rscPayload,
'Next-Url': `/${slug}`,
'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'
},
responseType: 'text'
})
const result = {
creator: "dann",
info: {},
verses: []
}
const surahMatch = data.match(/"name":"([^"]+)","slug":"([^"]+)","translate":"([^"]+)","type":"([^"]+)","verse_count":(\d+),"juz_id":(\d+)/)
if (surahMatch) {
result.info = {
namaSurah: surahMatch[1],
slug: surahMatch[2],
terjemahan: surahMatch[3],
tipe: surahMatch[4],
jumlahAyat: parseInt(surahMatch[5]),
juz: parseInt(surahMatch[6])
}
}
const verseMatches = data.matchAll(/"transliteration":"([^"]+)","text":"([^"]+)","translation_id":"([^"]+)"/g)
for (const match of verseMatches) {
result.verses.push({
arab: match[2],
latin: match[1],
terjemahan: match[3]
})
}
return { status: true, data: result }
} catch (e) {
return { status: false, creator: "dann", error: e.message }
}
}
const targetSlug = "al-falaq"
const output = await getSurahData(targetSlug)
if (output.status) {
return m.reply(JSON.stringify(output.data, null, 2))
} else {
return m.reply(JSON.stringify(output, null, 2))
}
})()
Direct URL
Disalin!