Lynx Snip

allinone-dl

#xifnt37

javascript · 55 baris · 33 dilihat

Lihat raw
const axios = require('axios');
const readline = require('readline');

async function omnifyAio(mediaUrl) {
    try {
        const res = await axios.post('https://api-aio.omnifylabs.sbs/api/v1/media/resolve', {
            url: mediaUrl
        }, {
            headers: {
                'Content-Type': 'application/json',
                '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',
                'Origin': 'https://aio.omnifylabs.sbs',
                'Referer': 'https://aio.omnifylabs.sbs/'
            }
        });

        const rawData = res.data;
        if (rawData?.status !== 'success' || !rawData?.data) {
            throw new Error('Gagal mengambil data dari API.');
        }

        const data = rawData.data;
        const formats = data.formats || [];
        
        const sdVideo = formats.find(f => f.id === 'sd');
        const wmVideo = formats.find(f => f.id === 'watermark');
        const audio = formats.find(f => f.id === 'audio');

        return {
            status: 'success',
            platform: rawData.platform,
            type: data.type,
            title: data.description || 'Tidak ada judul',
            author: data.author?.nickname || data.author?.uniqueId,
            video_hd_no_wm: sdVideo ? sdVideo.url : data.videoUrl,
            video_wm: wmVideo ? wmVideo.url : data.wmVideoUrl,
            audio: audio ? audio.url : data.audioUrl
        };

    } catch (err) {
        return { 
            status: 'failed', 
            error: err.response?.data?.message || err.message 
        };
    }
}

const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
rl.question('Masukkan link Media (TikTok/IG/dll): ', async (link) => {
    const res = await omnifyAio(link);
    console.log('\n======================================');
    console.log(JSON.stringify(res, null, 2));
    console.log('======================================\n');
    rl.close();
});