Skip to content

Commit b14e3a0

Browse files
committed
Change implementation
using youtube-dl
1 parent bd7dc2d commit b14e3a0

File tree

2 files changed

+27
-28
lines changed

2 files changed

+27
-28
lines changed
Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,38 @@
11
'use strict'
22

3-
const getSocialVideoUrl = require('get-social-video-url')
43
const { isUrl } = require('@metascraper/helpers')
5-
const createBrowserless = require('browserless')
4+
const youtubedl = require('youtube-dl')
5+
const { promisify } = require('util')
6+
const path = require('path')
67

7-
const PREFERRED_VIDEO_QUALITY = [
8-
'sd',
9-
'hd',
10-
'mobile'
11-
]
8+
const getVideoInfo = promisify(youtubedl.getInfo)
129

13-
const getVideoUrl = async ({
14-
browserless,
15-
url,
16-
preferredVideoQuality = PREFERRED_VIDEO_QUALITY
17-
}) => {
18-
const videoQualities = await getSocialVideoUrl({ url, browserless })
19-
const videoQuality = preferredVideoQuality.find(videoQuality => isUrl(videoQualities[videoQuality]))
20-
return videoQualities[videoQuality]
21-
}
10+
/**
11+
* Get a Video source quality not too high
12+
*/
13+
const getVideoUrl = ({formats}) => {
14+
const urls = formats
15+
.map(item => item.url)
16+
.filter(url => path.extname(url).startsWith('.mp4'))
2217

23-
module.exports = (opts = {}) => {
24-
const { launchOpts = {}, preferredVideoQuality } = opts
18+
const index = Math.round(urls.length / 2) - 1
19+
return urls[index]
20+
}
2521

26-
const fn = async ({url}) => {
27-
const browserless = await createBrowserless(launchOpts)
28-
const result = await getVideoUrl({url, browserless, preferredVideoQuality})
29-
const browserInstance = await browserless.browser
30-
await browserInstance.close()
31-
return result
22+
const getVideoProvider = async url => {
23+
try {
24+
const info = await getVideoInfo(url)
25+
const videoUrl = getVideoUrl(info)
26+
return isUrl(videoUrl) && videoUrl
27+
} catch (err) {
28+
return false
3229
}
30+
}
3331

34-
return { video: fn }
32+
module.exports = () => {
33+
return {
34+
video: ({url}) => getVideoProvider(url)
35+
}
3536
}
3637

3738
module.exports.getVideoUrl = getVideoUrl

packages/metascraper-video-provider/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
},
1818
"dependencies": {
1919
"@metascraper/helpers": "^3.9.3",
20-
"browserless": "~3.5.0",
21-
"get-social-video-url": "~1.0.1",
22-
"puppeteer": "~1.2.0"
20+
"youtube-dl": "~1.12.2"
2321
},
2422
"devDependencies": {
2523
"lodash": "latest",

0 commit comments

Comments
 (0)