ytdownloader.js
Version:
A Youtube Downloader
48 lines (47 loc) • 1.63 kB
text/typescript
import request from "request"
import { IHeaders, IYtResult, Youtube } from ".."
export async function yta(url: string, needSearch: boolean, headers: IHeaders): Promise<IYtResult> {
return new Promise(async (resolve, reject) => {
if (needSearch) {
const search = await new Youtube().ytsearch(url)
url = search[0].url
}
request({
url: 'https://yt1s.io/api/ajaxSearch',
method: 'POST',
headers: headers.ytis,
form: { 'q': url, 'vt': 'mp3' }
}, function (error, response, body) {
const result = JSON.parse(body)
var thumb = `https://i.ytimg.com/vi/${result.vid}/0.jpg`
let quality = []
Object.keys(result.links.mp3).map((i) => {
quality.push(result.links.mp3[i].k)
})
request({
url: 'https://backend.svcenter.xyz/api/convert-by-45fc4be8916916ba3b8d61dd6e0d6994',
method: 'POST',
headers: headers.download,
form: {
'v_id': result.vid,
'ftype': 'mp3',
'fquality': Number(quality[0]),
'token': result.token,
'timeExpire': result.timeExpires,
'client': 'yt1s.io'
}
}, function (error, response, body) {
resolve({
dl_link: JSON.parse(body).d_url,
thumbnail: thumb,
title: result.title,
quality: quality[0],
qualitys: quality,
url: url,
channel: result.a,
needSearch: needSearch
})
})
})
})
};