UNPKG

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

66 lines (61 loc) 1.84 kB
const uriCheck = require('is-url'); class youtube { static __youtubeRegex = [ /^(?:https?:\/\/)?(?:(?:www|m|music)\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/, /^.*(youtu.be\/|list=)([^#\&\?]*).*/, ]; static __youtubealbumRegex = [ /[?&]list=([^#\&\?]+)/, /^.*(youtu.be\/|list=)([^#\&\?]*).*/, ]; static __test(rawUrl, returnRegexValue = false) { try { if (!(rawUrl && typeof rawUrl === 'string' && rawUrl !== '')) { return false; } if ( returnRegexValue && Boolean(youtube.__youtubeRegex.find((regExp) => regExp.test(rawUrl))) ) { return ( rawUrl?.match( youtube.__youtubeRegex.find( (regExp) => rawUrl.match(regExp)?.length > 2, ), ) ?? (!uriCheck(rawUrl) ? rawUrl : false) ); } return ( Boolean(youtube.__youtubeRegex.find((regExp) => regExp.test(rawUrl))) || !uriCheck(rawUrl) ); } catch { return false; } } static async __extractor(rawQuery, __scrapperOptions, playdl, queue) { try { if (__scrapperOptions?.playersCompatibility && !uriCheck(rawQuery)) { __scrapperOptions = { ...__scrapperOptions, fetchOptions: { ...__scrapperOptions?.fetchOptions, fetchLimit: 1 }, }; } const playdlEngine = require('./__playdlEngine'); await playdlEngine?.__rawExtractor( rawQuery, { orignal_extractor: 'youtube' }, __scrapperOptions, playdl, queue, ); return true; } catch (rawError) { if (__scrapperOptions?.ignoreInternalError) { return void playdl.__errorHandling(rawError); } throw rawError; } } } module.exports = youtube;