import { genericUserAgent, maxAudioDuration } from "../config.js"; let cachedID = {} async function findClientID() { try { let sc = await fetch('https://soundcloud.com/').then(async (r) => {return r.text()}).catch(() => {return false}); let sc_version = String(sc.match(/')[0]) if (json["media"]["transcodings"]) { let clientId = await findClientID(); if (clientId) { let fileUrl = `${json.media.transcodings[0]["url"].replace("/hls", "/progressive")}?client_id=${clientId}&track_authorization=${json.track_authorization}`; if (fileUrl.substring(0, 54) === "https://api-v2.soundcloud.com/media/soundcloud:tracks:") { if (json.duration < maxAudioDuration) { let file = await fetch(fileUrl).then(async (r) => {return (await r.json()).url}).catch(() => {return false}); if (!file) return { error: 'ErrorCouldntFetch' }; return { urls: file, audioFilename: `soundcloud_${json.id}`, fileMetadata: { title: json.title, artist: json.user.username, } } } else return { error: ['ErrorLengthAudioConvert', maxAudioDuration / 60000] } } } else return { error: 'ErrorSoundCloudNoClientId' } } else return { error: 'ErrorEmptyDownload' } } else return { error: ['ErrorBrokenLink', 'soundcloud'] } } catch (e) { return { error: 'ErrorBadFetch' }; } }