mirror of
https://github.com/wukko/cobalt.git
synced 2025-05-08 09:44:27 +02:00
39 lines
1.7 KiB
JavaScript
39 lines
1.7 KiB
JavaScript
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], 10)
|
|
for (let i in all) {
|
|
let currQuality = parseInt(all[i]["quality"].replace('p', ''), 10)
|
|
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') };
|
|
}
|
|
}
|