@@ -4,11 +4,12 @@ const debug = require('debug-logfmt')(
44 'metascraper-media-provider:provider:generic'
55)
66const { serializeError } = require ( 'serialize-error' )
7+ const { parseUrl } = require ( '@metascraper/helpers' )
78const asyncMemoizeOne = require ( 'async-memoize-one' )
89const youtubedl = require ( 'youtube-dl-exec' )
910const pTimeout = require ( 'p-timeout' )
1011
11- const RE_UNSUPORTED_URL = / U n s u p p o r t e d U R L /
12+ const RE_UNSUPPORTED_URL = / U n s u p p o r t e d U R L /
1213
1314const DEFAULT_FLAGS = {
1415 dumpSingleJson : true ,
@@ -20,10 +21,10 @@ const DEFAULT_FLAGS = {
2021module . exports = ( {
2122 timeout = 30000 ,
2223 retry = 2 ,
23- flags : getFlags = ( { flags } ) => flags ,
24+ args : getArgs = ( { url , flags } ) => ( { url , flags } ) ,
2425 ...props
2526} ) =>
26- asyncMemoizeOne ( async url => {
27+ asyncMemoizeOne ( async targetUrl => {
2728 const retryCount = 0
2829 let isTimeout = false
2930 let isSupportedURL = true
@@ -35,17 +36,21 @@ module.exports = ({
3536 const task = async ( ) => {
3637 do {
3738 try {
38- const flags = await getFlags ( {
39- url,
39+ const { url , flags } = await getArgs ( {
40+ url : targetUrl ,
4041 retryCount,
4142 flags : DEFAULT_FLAGS
4243 } )
44+
4345 data = await youtubedl ( url , flags , { timeout, ...props } )
4446 } catch ( error ) {
4547 if ( condition ( ) ) {
4648 debug ( 'getInfo:error' , { retryCount } , serializeError ( error ) )
4749 }
48- isSupportedURL = ! RE_UNSUPORTED_URL . test ( error . stderr )
50+
51+ const isYoutube = parseUrl ( targetUrl ) . domain === 'youtube.com'
52+ const isUnsupported = RE_UNSUPPORTED_URL . test ( error . stderr )
53+ isSupportedURL = isYoutube ? isUnsupported : ! isUnsupported
4954 }
5055 } while ( condition ( ) )
5156
0 commit comments