hadits.js

by Fsbyte
28 Raw
/* ES Module
import axios from 'axios';
import * as cheerio from 'cheerio';
*/

/* Common JS
const axios = require('axios');
const cheerio = require('cheerio');
*/

export async function hadist(hadist) {
    const {
        data: leet
    } = await axios.get(`https://www.hadits.id/tentang/${hadist}`);
    const $ = cheerio.load(leet);

    let hasil = [];
    $('section')
        .each((i, el) => {
            let judul = $(el)
                .find('a')
                .text()
                .trim();
            let link =
                `https://www.hadits.id${$(el).find('a').attr('href')}`;
            let perawi = $(el)
                .find('.perawi')
                .text()
                .trim();
            let kitab = $(el)
                .find('cite')
                .text()
                .replace(perawi, '')
                .trim();
            let teks = $(el)
                .find('p')
                .text()
                .trim();

            hasil.push({
                judul,
                link,
                perawi,
                kitab,
                teks
            });
        });

    return hasil;
}

export async function detail(url) {
    let {
        data
    } = await axios.get(url);
    let $ = cheerio.load(data);

    const title = $('article h1')
        .text()
        .trim();
    const breadcrumb = [];
    $('div.breadcrumb-menu ol.breadcrumbs li')
        .each((index, element) => {
            breadcrumb.push($(element)
                .text()
                .trim());
        });

    const hadithContent = $('article p.rtl')
        .text()
        .trim();
    const hadithNumber = $('header .hadits-about h2')
        .text()
        .match(/No. (\d+)/)[1];

    return {
        title,
        breadcrumb,
        haditsArab: hadithContent,
        hadithNumber
    };
}

//Usage
detail("https://www.hadits.id/hadits/bukhari/6886")
    .then(info => {
        console.log(info)
    })
hadist("Bukhari")
    .then(d => {
        console.log(d)
    })