Thumbnail highest resolution

This commit is contained in:
killer069 2021-08-30 12:10:28 +05:30
parent 96ae7eb0bd
commit 1cfaf52945
4 changed files with 35 additions and 14 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "play-dl",
"version": "0.6.3",
"version": "0.6.4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "play-dl",
"version": "0.6.2",
"version": "0.6.4",
"license": "MIT",
"dependencies": {
"got": "^11.8.2"

View File

@ -1,6 +1,6 @@
{
"name": "play-dl",
"version": "0.6.3",
"version": "0.6.4",
"description": "YouTube, SoundCloud, Spotify streaming for discord.js bots",
"main": "dist/index.js",
"typings": "dist/index.d.ts",

View File

@ -2,6 +2,7 @@ import { url_get } from './request'
import { format_decipher, js_tokens } from './cipher'
import { Video } from '../classes/Video'
import { PlayList } from '../classes/Playlist'
import { parseThumbnail } from './parser';
const DEFAULT_API_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
const video_pattern = /^((?:https?:)?\/\/)?(?:(?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/;
@ -29,11 +30,7 @@ export async function video_basic_info(url : string){
durationInSec : vid.lengthSeconds,
durationRaw : parseSeconds(vid.lengthSeconds),
uploadedDate : microformat.publishDate,
thumbnail : {
width : vid.thumbnail.thumbnails[vid.thumbnail.thumbnails.length - 1].width,
height : vid.thumbnail.thumbnails[vid.thumbnail.thumbnails.length - 1].height,
url : vid.thumbnail.thumbnails[vid.thumbnail.thumbnails.length - 1].url,
},
thumbnail : parseThumbnail(vid.thumbnail.thumbnails),
channel : {
name : vid.author,
id : vid.channelId,

View File

@ -7,6 +7,12 @@ export interface ParseSearchInterface {
limit?: number;
}
export interface thumbnail{
width: string;
height : string;
url : string
}
export function ParseSearchResult(html :string, options? : ParseSearchInterface): (Video | PlayList | Channel)[] {
if(!html) throw new Error('Can\'t parse Search result without data')
if (!options) options = { type: "video", limit: 0 };
@ -124,12 +130,7 @@ export function parseVideo(data?: any): Video | void {
description: data.videoRenderer.descriptionSnippet && data.videoRenderer.descriptionSnippet.runs[0] ? data.videoRenderer.descriptionSnippet.runs[0].text : "",
duration: data.videoRenderer.lengthText ? parseDuration(data.videoRenderer.lengthText.simpleText) : 0,
duration_raw: data.videoRenderer.lengthText ? data.videoRenderer.lengthText.simpleText : null,
thumbnail: {
id: data.videoRenderer.videoId,
url: data.videoRenderer.thumbnail.thumbnails[data.videoRenderer.thumbnail.thumbnails.length - 1].url,
height: data.videoRenderer.thumbnail.thumbnails[data.videoRenderer.thumbnail.thumbnails.length - 1].height,
width: data.videoRenderer.thumbnail.thumbnails[data.videoRenderer.thumbnail.thumbnails.length - 1].width
},
thumbnail: parseThumbnail(data.videoRenderer.thumbnail.thumbnails),
channel: {
id: data.videoRenderer.ownerText.runs[0].navigationEndpoint.browseEndpoint.browseId || null,
name: data.videoRenderer.ownerText.runs[0].text || null,
@ -148,6 +149,29 @@ export function parseVideo(data?: any): Video | void {
return res;
}
export function parseThumbnail(thumbnails :thumbnail[]) : thumbnail{
let parsed : thumbnail = {
width : '',
height : '',
url : ''
}
thumbnails.forEach((thumb) => {
if(thumb.url.indexOf('maxresdefault') !== -1){
parsed = {
width : thumb.width,
height : thumb.height,
url : thumb.url
}
}
})
if(parsed.url.length !== 0){
return parsed
}
else {
return thumbnails[thumbnails.length - 1]
}
}
export function parsePlaylist(data?: any): PlayList | void {
if (!data.playlistRenderer) return;