Fixed Playlist toJSON function

This commit is contained in:
killer069 2021-11-29 09:43:25 +05:30
parent 83d7810eae
commit dc0e987014
5 changed files with 29 additions and 28 deletions

View File

@ -94,7 +94,7 @@ export class YouTubePlayList {
this.views = data.views || 0; this.views = data.views || 0;
this.link = data.link || undefined; this.link = data.link || undefined;
this.channel = data.author || undefined; this.channel = data.author || undefined;
this.thumbnail = data.thumbnail || undefined; this.thumbnail = new YouTubeThumbnail(data.thumbnail) || undefined;
this.videos = data.videos || []; this.videos = data.videos || [];
this.__count++; this.__count++;
this.fetched_videos.set(`${this.__count}`, this.videos as YouTubeVideo[]); this.fetched_videos.set(`${this.__count}`, this.videos as YouTubeVideo[]);
@ -110,7 +110,7 @@ export class YouTubePlayList {
this.id = data.id || undefined; this.id = data.id || undefined;
this.url = this.id ? `https://www.youtube.com/playlist?list=${this.id}` : undefined; this.url = this.id ? `https://www.youtube.com/playlist?list=${this.id}` : undefined;
this.title = data.title || undefined; this.title = data.title || undefined;
this.thumbnail = data.thumbnail || undefined; this.thumbnail = new YouTubeThumbnail(data.thumbnail) || undefined;
this.channel = data.channel || undefined; this.channel = data.channel || undefined;
this.videos = []; this.videos = [];
this.videoCount = data.videos || 0; this.videoCount = data.videos || 0;

View File

@ -152,7 +152,7 @@ export class YouTubeVideo {
this.durationInSec = (data.duration < 0 ? 0 : data.duration) || 0; this.durationInSec = (data.duration < 0 ? 0 : data.duration) || 0;
this.uploadedAt = data.uploadedAt || undefined; this.uploadedAt = data.uploadedAt || undefined;
this.views = parseInt(data.views) || 0; this.views = parseInt(data.views) || 0;
this.thumbnail = data.thumbnail || {}; this.thumbnail = new YouTubeThumbnail(data.thumbnail) || {};
this.channel = new YouTubeChannel(data.channel) || {}; this.channel = new YouTubeChannel(data.channel) || {};
this.likes = data.likes || 0; this.likes = data.likes || 0;
this.dislikes = data.dislikes || 0; this.dislikes = data.dislikes || 0;

View File

@ -49,17 +49,17 @@ export function setCookieToken(options: { cookie: string }) {
/** /**
* Updates cookies locally either in file or in memory. * Updates cookies locally either in file or in memory.
* *
* Example * Example
* ```ts * ```ts
* const response = ... // Any https package get function. * const response = ... // Any https package get function.
* *
* play.cookieHeaders(response.headers['set-cookie']) * play.cookieHeaders(response.headers['set-cookie'])
* ``` * ```
* @param headCookie response headers['set-cookie'] array * @param headCookie response headers['set-cookie'] array
* @returns Nothing * @returns Nothing
*/ */
export function cookieHeaders(headCookie: string[]): void { export function cookieHeaders(headCookie: string[]): void {
if (!youtubeData?.cookie) return; if (!youtubeData?.cookie) return;
headCookie.forEach((x: string) => { headCookie.forEach((x: string) => {
x.split(';').forEach((z) => { x.split(';').forEach((z) => {

View File

@ -128,7 +128,8 @@ export async function video_basic_info(url: string, options: InfoOptions = {}):
cookies: true cookies: true
}); });
} }
if (body.indexOf('Our systems have detected unusual traffic from your computer network.') !== -1) throw new Error('Captcha page: YouTube has detected that you are a bot!'); if (body.indexOf('Our systems have detected unusual traffic from your computer network.') !== -1)
throw new Error('Captcha page: YouTube has detected that you are a bot!');
const player_data = body const player_data = body
.split('var ytInitialPlayerResponse = ')?.[1] .split('var ytInitialPlayerResponse = ')?.[1]
?.split(';</script>')[0] ?.split(';</script>')[0]

View File

@ -88,20 +88,20 @@ import { DeezerAlbum, DeezerPlaylist, DeezerTrack } from './Deezer/classes';
/** /**
* Creates a Stream [ YouTube or SoundCloud ] class from a url for playing. * Creates a Stream [ YouTube or SoundCloud ] class from a url for playing.
* *
* Example * Example
* ```ts * ```ts
* const source = await play.stream('youtube video URL') // YouTube Video Stream * const source = await play.stream('youtube video URL') // YouTube Video Stream
* *
* const source = await play.stream('soundcloud track URL') // SoundCloud Track Stream * const source = await play.stream('soundcloud track URL') // SoundCloud Track Stream
* *
* const resource = createAudioResource(source.stream, { * const resource = createAudioResource(source.stream, {
* inputType : source.type * inputType : source.type
* }) // Use discordjs voice createAudioResource function. * }) // Use discordjs voice createAudioResource function.
* ``` * ```
* @param url Video / Track URL * @param url Video / Track URL
* @param options * @param options
* *
* - `number` quality : Quality number. [ 0 = Lowest, 1 = Medium, 2 = Highest ] * - `number` quality : Quality number. [ 0 = Lowest, 1 = Medium, 2 = Highest ]
* - `Proxy[]` proxy : sends data through a proxy * - `Proxy[]` proxy : sends data through a proxy
* - `boolean` htmldata : given data is html data or not * - `boolean` htmldata : given data is html data or not
@ -201,7 +201,7 @@ export async function search(
options: { source: { youtube: 'video' } } & SearchOptions options: { source: { youtube: 'video' } } & SearchOptions
): Promise<YouTubeVideo[]>; ): Promise<YouTubeVideo[]>;
export async function search(query: string, options: { limit: number } & SearchOptions): Promise<YouTubeVideo[]>; export async function search(query: string, options: { limit: number } & SearchOptions): Promise<YouTubeVideo[]>;
export async function search(query: string, options? : SearchOptions ): Promise<YouTubeVideo[]>; export async function search(query: string, options?: SearchOptions): Promise<YouTubeVideo[]>;
/** /**
* Searches through a particular source and gives respective info. * Searches through a particular source and gives respective info.
* *
@ -247,22 +247,22 @@ export async function search(
/** /**
* Creates a Stream [ YouTube or SoundCloud ] class from video or track info for playing. * Creates a Stream [ YouTube or SoundCloud ] class from video or track info for playing.
* *
* Example * Example
* ```ts * ```ts
* const info = await video_info('youtube URL') * const info = await video_info('youtube URL')
* const source = await play.stream_from_info(info) // YouTube Video Stream * const source = await play.stream_from_info(info) // YouTube Video Stream
* *
* const soundInfo = await play.soundcloud('SoundCloud URL') * const soundInfo = await play.soundcloud('SoundCloud URL')
* const source = await play.stream_from_info(soundInfo) // SoundCloud Track Stream * const source = await play.stream_from_info(soundInfo) // SoundCloud Track Stream
* *
* const resource = createAudioResource(source.stream, { * const resource = createAudioResource(source.stream, {
* inputType : source.type * inputType : source.type
* }) // Use discordjs voice createAudioResource function. * }) // Use discordjs voice createAudioResource function.
* ``` * ```
* @param info YouTube video info OR SoundCloud track Class * @param info YouTube video info OR SoundCloud track Class
* @param options * @param options
* *
* - `number` quality : Quality number. [ 0 = Lowest, 1 = Medium, 2 = Highest ] * - `number` quality : Quality number. [ 0 = Lowest, 1 = Medium, 2 = Highest ]
* - `Proxy[]` proxy : sends data through a proxy * - `Proxy[]` proxy : sends data through a proxy
* - `boolean` htmldata : given data is html data or not * - `boolean` htmldata : given data is html data or not
@ -277,13 +277,13 @@ export async function stream_from_info(
} }
/** /**
* Validates url that play-dl supports. * Validates url that play-dl supports.
* *
* - `so` - SoundCloud * - `so` - SoundCloud
* - `sp` - Spotify * - `sp` - Spotify
* - `dz` - Deezer * - `dz` - Deezer
* - `yt` - YouTube * - `yt` - YouTube
* @param url URL * @param url URL
* @returns * @returns
* ```ts * ```ts
* 'so_playlist' / 'so_track' | 'sp_track' | 'sp_album' | 'sp_playlist' | 'dz_track' | 'dz_playlist' | 'dz_album' | 'yt_video' | 'yt_playlist' | 'search' | false * 'so_playlist' / 'so_track' | 'sp_track' | 'sp_album' | 'sp_playlist' | 'dz_track' | 'dz_playlist' | 'dz_album' | 'yt_video' | 'yt_playlist' | 'search' | false
* ``` * ```
@ -322,15 +322,15 @@ export async function validate(
} }
/** /**
* Authorization interface for Spotify, SoundCloud and YouTube. * Authorization interface for Spotify, SoundCloud and YouTube.
* *
* Either stores info in `.data` folder or shows relevant data to be used in `setToken` function. * Either stores info in `.data` folder or shows relevant data to be used in `setToken` function.
* *
* ```ts * ```ts
* const play = require('play-dl') * const play = require('play-dl')
* *
* play.authorization() * play.authorization()
* ``` * ```
* *
* Just run the above command and you will get a interface asking some questions. * Just run the above command and you will get a interface asking some questions.
*/ */
export function authorization(): void { export function authorization(): void {
@ -447,7 +447,7 @@ export function authorization(): void {
} }
/** /**
* Attaches paused, playing, autoPaused Listeners to discordjs voice AudioPlayer. * Attaches paused, playing, autoPaused Listeners to discordjs voice AudioPlayer.
* *
* Useful if you don't want extra data to be downloaded by play-dl. * Useful if you don't want extra data to be downloaded by play-dl.
* @param player discordjs voice AudioPlayer * @param player discordjs voice AudioPlayer
* @param resource A {@link YouTubeStream} or {@link SoundCloudStream} * @param resource A {@link YouTubeStream} or {@link SoundCloudStream}