Thumbnail highest resolution
This commit is contained in:
parent
96ae7eb0bd
commit
1cfaf52945
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "play-dl",
|
"name": "play-dl",
|
||||||
"version": "0.6.3",
|
"version": "0.6.4",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "play-dl",
|
"name": "play-dl",
|
||||||
"version": "0.6.2",
|
"version": "0.6.4",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"got": "^11.8.2"
|
"got": "^11.8.2"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "play-dl",
|
"name": "play-dl",
|
||||||
"version": "0.6.3",
|
"version": "0.6.4",
|
||||||
"description": "YouTube, SoundCloud, Spotify streaming for discord.js bots",
|
"description": "YouTube, SoundCloud, Spotify streaming for discord.js bots",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { url_get } from './request'
|
|||||||
import { format_decipher, js_tokens } from './cipher'
|
import { format_decipher, js_tokens } from './cipher'
|
||||||
import { Video } from '../classes/Video'
|
import { Video } from '../classes/Video'
|
||||||
import { PlayList } from '../classes/Playlist'
|
import { PlayList } from '../classes/Playlist'
|
||||||
|
import { parseThumbnail } from './parser';
|
||||||
|
|
||||||
const DEFAULT_API_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
const DEFAULT_API_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
||||||
const video_pattern = /^((?:https?:)?\/\/)?(?:(?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/;
|
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,
|
durationInSec : vid.lengthSeconds,
|
||||||
durationRaw : parseSeconds(vid.lengthSeconds),
|
durationRaw : parseSeconds(vid.lengthSeconds),
|
||||||
uploadedDate : microformat.publishDate,
|
uploadedDate : microformat.publishDate,
|
||||||
thumbnail : {
|
thumbnail : parseThumbnail(vid.thumbnail.thumbnails),
|
||||||
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,
|
|
||||||
},
|
|
||||||
channel : {
|
channel : {
|
||||||
name : vid.author,
|
name : vid.author,
|
||||||
id : vid.channelId,
|
id : vid.channelId,
|
||||||
|
|||||||
@ -7,6 +7,12 @@ export interface ParseSearchInterface {
|
|||||||
limit?: number;
|
limit?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface thumbnail{
|
||||||
|
width: string;
|
||||||
|
height : string;
|
||||||
|
url : string
|
||||||
|
}
|
||||||
|
|
||||||
export function ParseSearchResult(html :string, options? : ParseSearchInterface): (Video | PlayList | Channel)[] {
|
export function ParseSearchResult(html :string, options? : ParseSearchInterface): (Video | PlayList | Channel)[] {
|
||||||
if(!html) throw new Error('Can\'t parse Search result without data')
|
if(!html) throw new Error('Can\'t parse Search result without data')
|
||||||
if (!options) options = { type: "video", limit: 0 };
|
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 : "",
|
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: data.videoRenderer.lengthText ? parseDuration(data.videoRenderer.lengthText.simpleText) : 0,
|
||||||
duration_raw: data.videoRenderer.lengthText ? data.videoRenderer.lengthText.simpleText : null,
|
duration_raw: data.videoRenderer.lengthText ? data.videoRenderer.lengthText.simpleText : null,
|
||||||
thumbnail: {
|
thumbnail: parseThumbnail(data.videoRenderer.thumbnail.thumbnails),
|
||||||
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
|
|
||||||
},
|
|
||||||
channel: {
|
channel: {
|
||||||
id: data.videoRenderer.ownerText.runs[0].navigationEndpoint.browseEndpoint.browseId || null,
|
id: data.videoRenderer.ownerText.runs[0].navigationEndpoint.browseEndpoint.browseId || null,
|
||||||
name: data.videoRenderer.ownerText.runs[0].text || null,
|
name: data.videoRenderer.ownerText.runs[0].text || null,
|
||||||
@ -148,6 +149,29 @@ export function parseVideo(data?: any): Video | void {
|
|||||||
return res;
|
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 {
|
export function parsePlaylist(data?: any): PlayList | void {
|
||||||
if (!data.playlistRenderer) return;
|
if (!data.playlistRenderer) return;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user