playdl-music-extractor
Version:
PlayDL Music Extractor is a Extractor/Scrapper and Helps Players to fetch data from play-dl or Custom Extractors , as Per reduces extra work and credentials
48 lines (44 loc) • 1.45 kB
JavaScript
const playdlEngine = require('./__playdlEngine');
class arbitary {
static __arbitaryRegex = [
/^(https?|ftp|file):\/\/[-a-zA-Z0-9+&@#\/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#\/%=~_|]\.mp3$/,
/^(https?|ftp|file):\/\/(www.)?(.*?)\.(mp3)$/gm,
/^(https?|ftp|file):\/\/(www.)?(.*?)\.(mp3|mp4|wav|avi|m4a)$/gm,
];
static __test(rawUrl, returnRegexValue = false) {
try {
if (!(rawUrl && typeof rawUrl === 'string' && rawUrl !== '')) return false;
return returnRegexValue
&& Boolean(arbitary.__arbitaryRegex.find((regExp) => regExp.test(rawUrl)))
? rawUrl?.match(
arbitary.__arbitaryRegex.find((regExp) => rawUrl.match(regExp)),
) ?? false
: Boolean(
arbitary.__arbitaryRegex.find((regExp) => regExp.test(rawUrl)),
);
} catch {
return false;
}
}
static async __extractor(rawUrl, __scrapperOptions, playdl, queue) {
try {
await playdlEngine.__rawExtractor(
rawUrl,
{ stream: rawUrl, url: rawUrl, orignal_extractor: 'arbitary' },
{
...__scrapperOptions,
fetchOptions: { ...__scrapperOptions?.fetchOptions, fetchLimit: 1 },
},
playdl,
queue,
);
return true;
} catch (rawError) {
if (__scrapperOptions?.ignoreInternalError) {
return void playdl.__errorHandling(rawError);
}
throw rawError;
}
}
}
module.exports = arbitary;