added support for vimeo and wav audio conversion
This commit is contained in:
38
src/modules/services/vimeo.js
Normal file
38
src/modules/services/vimeo.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import got from "got";
|
||||
import loc from "../../localization/manager.js";
|
||||
import { genericUserAgent, quality } from "../config.js";
|
||||
|
||||
export default async function(obj) {
|
||||
try {
|
||||
let api = await got.get(`https://player.vimeo.com/video/${obj.id}/config`, { headers: { "user-agent": genericUserAgent } });
|
||||
api.on('error', (err) => {
|
||||
return { error: loc(obj.lang, 'ErrorCouldntFetch', 'vimeo') };
|
||||
});
|
||||
api = api.body
|
||||
if (api.includes('}}},"progressive":[{')) {
|
||||
api = JSON.parse(api)
|
||||
if (api["request"]["files"]["progressive"]) {
|
||||
let all = api["request"]["files"]["progressive"].sort((a, b) => Number(b.width) - Number(a.width));
|
||||
let best = all[0]
|
||||
try {
|
||||
if (obj.quality != "max") {
|
||||
let pref = parseInt(quality[obj.quality])
|
||||
for (let i in all) {
|
||||
let currQuality = parseInt(all[i]["quality"].replace('p', ''))
|
||||
if (currQuality < pref) {
|
||||
break;
|
||||
} else if (currQuality == pref) {
|
||||
best = all[i]
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
best = all[0]
|
||||
}
|
||||
return { urls: best["url"], audioFilename: loc(obj.lang, 'ErrorEmptyDownload') }
|
||||
} else return { error: loc(obj.lang, 'ErrorEmptyDownload') }
|
||||
} else return { error: loc(obj.lang, 'ErrorBrokenLink', 'vimeo') }
|
||||
} catch (e) {
|
||||
return { error: loc(obj.lang, 'ErrorBadFetch') };
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@ export default async function(obj) {
|
||||
let userQuality = selectQuality('vk', obj.quality, Object.entries(services.vk.quality_match).reduce((r, [k, v]) => { r[v] = k; return r;})[maxQuality])
|
||||
let id = js["player"]["params"][0][selectedQuality].split("id=")[1]
|
||||
if (selectedQuality in js["player"]["params"][0]) {
|
||||
return { urls: js["player"]["params"][0][selectedQuality].replace(`type=${maxQuality}`, `type=${services.vk.quality_match[userQuality]}`), filename: `vk_${js["player"]["params"][0][selectedQuality].split("id=")[1]}_${attr['width']}x${attr['height']}.mp4`, audioFilename: loc(obj.lang, 'ErrorEmptyDownload') };
|
||||
return { urls: js["player"]["params"][0][selectedQuality].replace(`type=${maxQuality}`, `type=${services.vk.quality_match[userQuality]}`), filename: `vk_${id}_${attr['width']}x${attr['height']}.mp4`, audioFilename: loc(obj.lang, 'ErrorEmptyDownload') };
|
||||
} else {
|
||||
return { error: loc(obj.lang, 'ErrorEmptyDownload') };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user