const axios = require('axios') const cheerio = require('cheerio') const FormData = require('form-data') async function soundcloud(url) { try { const session = axios.create({ headers: { 'User-Agent': 'Mozilla/5.0' } }) const { data: homeData, headers } = await session.get('https://soundcloudmp3.org/') const cookies = headers['set-cookie']?.map(cookie => cookie.split(';')[0]).join('; ') || '' const $ = cheerio.load(homeData) const csrf_token = $('input[name="_token"]').val() const form = new FormData() form.append('url', url) form.append('_token', csrf_token) form.append('lang', 'en') const { data: convertData } = await session.post('https://soundcloudmp3.org/converter', form, { headers: { ...form.getHeaders(), Cookie: cookies } }) const $$ = cheerio.load(convertData) const download = $$('#download-btn').attr('href') || '' const duration = $$('p:contains("Length")').text().replace('Length:', '').replace('Minutes', '').trim() || '' const quality = $$('p:contains("Quality")').text().replace('Quality:', '').trim() || '' let title = $$('h2').first().text().trim() if (!title || title.includes('While you are waiting')) { title = $$('p:contains("Title")').text().replace('Title:', '').trim() } return { title, duration, quality, download } } catch (err) { throw Error(err.message) } }