From 23a2cff0ec8977f314f5b3ce2cc49b8b972c8200 Mon Sep 17 00:00:00 2001 From: Killer069 <65385476+killer069@users.noreply.github.com> Date: Tue, 31 Aug 2021 09:51:06 +0530 Subject: [PATCH 1/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 44b8d01..362bad9 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ if(validate(url)) // Will return true if url is a YouTube url ``` ### stream_from_info(info : `infoData`) -*This is basic to create a youtube stream from a info [ from video_info function ].* +*This is basic to create a youtube stream from a info [ from [video_info](https://github.com/play-dl/play-dl#video_infourl--string) function ].* ```js let info = await video_info("url") let source = await stream_from_info(info) // This will create a stream Class which contains type and stream to be played. From 34907c4eda0634b188abd077c8dbcc2b0211d66a Mon Sep 17 00:00:00 2001 From: killer069 <65385476+killer069@users.noreply.github.com> Date: Tue, 31 Aug 2021 11:54:04 +0530 Subject: [PATCH 2/4] Search Live Fix --- package-lock.json | 4 ++-- package.json | 2 +- play-dl/YouTube/utils/parser.ts | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb2f904..e0d56fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "play-dl", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "play-dl", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { "got": "^11.8.2" diff --git a/package.json b/package.json index 0c7335f..b47549a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "play-dl", - "version": "0.7.0", + "version": "0.7.1", "description": "YouTube, SoundCloud, Spotify streaming for discord.js bots", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/play-dl/YouTube/utils/parser.ts b/play-dl/YouTube/utils/parser.ts index 681a9bd..24afcc6 100644 --- a/play-dl/YouTube/utils/parser.ts +++ b/play-dl/YouTube/utils/parser.ts @@ -143,7 +143,8 @@ export function parseVideo(data?: any): Video | void { verified: Boolean(badge?.metadataBadgeRenderer?.style?.toLowerCase().includes("verified")) }, uploadedAt: data.videoRenderer.publishedTimeText?.simpleText ?? null, - views: data.videoRenderer.viewCountText?.simpleText?.replace(/[^0-9]/g, "") ?? 0 + views: data.videoRenderer.viewCountText?.simpleText?.replace(/[^0-9]/g, "") ?? 0, + live : data.videoRenderer.lengthText ? false : true, }); return res; From f8f4d8800879b7c58d7f458a705f28685f363855 Mon Sep 17 00:00:00 2001 From: killer069 <65385476+killer069@users.noreply.github.com> Date: Tue, 31 Aug 2021 15:08:37 +0530 Subject: [PATCH 3/4] URL video details now include channel verified --- package-lock.json | 4 ++-- package.json | 2 +- play-dl/YouTube/utils/extractor.ts | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0d56fb..d8caf9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "play-dl", - "version": "0.7.1", + "version": "0.7.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "play-dl", - "version": "0.7.1", + "version": "0.7.2", "license": "MIT", "dependencies": { "got": "^11.8.2" diff --git a/package.json b/package.json index b47549a..dae7b60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "play-dl", - "version": "0.7.1", + "version": "0.7.2", "description": "YouTube, SoundCloud, Spotify streaming for discord.js bots", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/play-dl/YouTube/utils/extractor.ts b/play-dl/YouTube/utils/extractor.ts index 51862cc..fd4d2a7 100644 --- a/play-dl/YouTube/utils/extractor.ts +++ b/play-dl/YouTube/utils/extractor.ts @@ -30,6 +30,8 @@ export async function video_basic_info(url : string){ let new_url = 'https://www.youtube.com/watch?v=' + video_id let body = await url_get(new_url) let player_response = JSON.parse(body.split("var ytInitialPlayerResponse = ")[1].split("}};")[0] + '}}') + let initial_response = JSON.parse(body.split("var ytInitialData = ")[1].split("}};")[0] + '}}') + let badge = initial_response.contents.twoColumnWatchNextResults.results.results.contents[1]?.videoSecondaryInfoRenderer?.owner?.videoOwnerRenderer?.badges && initial_response.contents.twoColumnWatchNextResults.results.results.contents[1]?.videoSecondaryInfoRenderer?.owner?.videoOwnerRenderer?.badges[0] if(player_response.playabilityStatus.status === 'ERROR') throw new Error(`While getting info from url \n ${player_response.playabilityStatus.reason}`) if(player_response.playabilityStatus.status === 'LOGIN_REQUIRED') throw new Error(`While getting info from url \n ${ player_response.playabilityStatus.reason || player_response.playabilityStatus.messages[0]}`) let html5player = 'https://www.youtube.com' + body.split('"jsUrl":"')[1].split('"')[0] @@ -48,7 +50,8 @@ export async function video_basic_info(url : string){ channel : { name : vid.author, id : vid.channelId, - url : `https://www.youtube.com/channel/${vid.channelId}` + url : `https://www.youtube.com/channel/${vid.channelId}`, + verified : Boolean(badge?.metadataBadgeRenderer?.style?.toLowerCase().includes('verified')) }, views : vid.viewCount, tags : vid.keywords, From 283eabd3c90d9b64b1b86f35ef1efeeb7043244b Mon Sep 17 00:00:00 2001 From: killer069 <65385476+killer069@users.noreply.github.com> Date: Tue, 31 Aug 2021 17:28:37 +0530 Subject: [PATCH 4/4] Small Patch --- package-lock.json | 4 ++-- package.json | 2 +- play-dl/YouTube/classes/LiveStream.ts | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8caf9c..27757fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "play-dl", - "version": "0.7.2", + "version": "0.7.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "play-dl", - "version": "0.7.2", + "version": "0.7.3", "license": "MIT", "dependencies": { "got": "^11.8.2" diff --git a/package.json b/package.json index dae7b60..625fcdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "play-dl", - "version": "0.7.2", + "version": "0.7.3", "description": "YouTube, SoundCloud, Spotify streaming for discord.js bots", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/play-dl/YouTube/classes/LiveStream.ts b/play-dl/YouTube/classes/LiveStream.ts index 3743254..f2771cb 100644 --- a/play-dl/YouTube/classes/LiveStream.ts +++ b/play-dl/YouTube/classes/LiveStream.ts @@ -77,6 +77,9 @@ export class LiveStreaming{ this.packet_count++ resolve('') }) + stream.once('error', (err) => { + this.stream.emit('error', err) + }) }) })() } @@ -151,6 +154,9 @@ export class LiveEnded{ this.packet_count++ resolve('') }) + stream.once('error', (err) => { + this.stream.emit('error', err) + }) }) })() } @@ -198,6 +204,11 @@ export class Stream { } let stream = got.stream(this.url) this.request = stream + + stream.once('error', (err) => { + this.stream.emit('error', err) + }) + stream.pipe(this.stream) } @@ -212,6 +223,10 @@ export class Stream { this.per_sec_bytes = Math.ceil((stream.downloadProgress.total as number)/this.duration) }) + stream.once('error', (err) => { + this.stream.emit('error', err) + }) + stream.on('data', (chunk: any) => { this.bytes_count += chunk.length this.stream.write(chunk) @@ -244,6 +259,11 @@ export class Stream { this.bytes_count += chunk.length this.stream.write(chunk) }) + + stream.once('error', (err) => { + this.stream.emit('error', err) + }) + stream.on('data', () => { if(absolute_bytes > (this.per_sec_bytes * 300)){ stream.destroy()