@@ -4,11 +4,12 @@ const debug = require('debug-logfmt')(
4
4
'metascraper-media-provider:provider:generic'
5
5
)
6
6
const { serializeError } = require ( 'serialize-error' )
7
+ const { parseUrl } = require ( '@metascraper/helpers' )
7
8
const asyncMemoizeOne = require ( 'async-memoize-one' )
8
9
const youtubedl = require ( 'youtube-dl-exec' )
9
10
const pTimeout = require ( 'p-timeout' )
10
11
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 /
12
13
13
14
const DEFAULT_FLAGS = {
14
15
dumpSingleJson : true ,
@@ -20,10 +21,10 @@ const DEFAULT_FLAGS = {
20
21
module . exports = ( {
21
22
timeout = 30000 ,
22
23
retry = 2 ,
23
- flags : getFlags = ( { flags } ) => flags ,
24
+ args : getArgs = ( { url , flags } ) => ( { url , flags } ) ,
24
25
...props
25
26
} ) =>
26
- asyncMemoizeOne ( async url => {
27
+ asyncMemoizeOne ( async targetUrl => {
27
28
const retryCount = 0
28
29
let isTimeout = false
29
30
let isSupportedURL = true
@@ -35,17 +36,21 @@ module.exports = ({
35
36
const task = async ( ) => {
36
37
do {
37
38
try {
38
- const flags = await getFlags ( {
39
- url,
39
+ const { url , flags } = await getArgs ( {
40
+ url : targetUrl ,
40
41
retryCount,
41
42
flags : DEFAULT_FLAGS
42
43
} )
44
+
43
45
data = await youtubedl ( url , flags , { timeout, ...props } )
44
46
} catch ( error ) {
45
47
if ( condition ( ) ) {
46
48
debug ( 'getInfo:error' , { retryCount } , serializeError ( error ) )
47
49
}
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
49
54
}
50
55
} while ( condition ( ) )
51
56
0 commit comments