mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-29 16:44:58 +05:00
108 lines
2.7 KiB
JavaScript
108 lines
2.7 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Playlist = void 0;
|
|
class Playlist {
|
|
/**
|
|
* Playlist constructor
|
|
* @param {Player} player The player
|
|
* @param {PlaylistInitData} data The data
|
|
*/
|
|
constructor(player, data) {
|
|
/**
|
|
* The player
|
|
* @name Playlist#player
|
|
* @type {Player}
|
|
* @readonly
|
|
*/
|
|
this.player = player;
|
|
/**
|
|
* The tracks in this playlist
|
|
* @name Playlist#tracks
|
|
* @type {Track[]}
|
|
*/
|
|
this.tracks = data.tracks ?? [];
|
|
/**
|
|
* The author of this playlist
|
|
* @name Playlist#author
|
|
* @type {object}
|
|
*/
|
|
this.author = data.author;
|
|
/**
|
|
* The description
|
|
* @name Playlist#description
|
|
* @type {string}
|
|
*/
|
|
this.description = data.description;
|
|
/**
|
|
* The thumbnail of this playlist
|
|
* @name Playlist#thumbnail
|
|
* @type {string}
|
|
*/
|
|
this.thumbnail = data.thumbnail;
|
|
/**
|
|
* The playlist type:
|
|
* - `album`
|
|
* - `playlist`
|
|
* @name Playlist#type
|
|
* @type {string}
|
|
*/
|
|
this.type = data.type;
|
|
/**
|
|
* The source of this playlist:
|
|
* - `youtube`
|
|
* - `soundcloud`
|
|
* - `spotify`
|
|
* - `arbitrary`
|
|
* @name Playlist#source
|
|
* @type {string}
|
|
*/
|
|
this.source = data.source;
|
|
/**
|
|
* The playlist id
|
|
* @name Playlist#id
|
|
* @type {string}
|
|
*/
|
|
this.id = data.id;
|
|
/**
|
|
* The playlist url
|
|
* @name Playlist#url
|
|
* @type {string}
|
|
*/
|
|
this.url = data.url;
|
|
/**
|
|
* The playlist title
|
|
* @type {string}
|
|
*/
|
|
this.title = data.title;
|
|
/**
|
|
* @name Playlist#rawPlaylist
|
|
* @type {any}
|
|
* @readonly
|
|
*/
|
|
}
|
|
*[Symbol.iterator]() {
|
|
yield* this.tracks;
|
|
}
|
|
/**
|
|
* JSON representation of this playlist
|
|
* @param {boolean} [withTracks=true] If it should build json with tracks
|
|
* @returns {PlaylistJSON}
|
|
*/
|
|
toJSON(withTracks = true) {
|
|
const payload = {
|
|
id: this.id,
|
|
url: this.url,
|
|
title: this.title,
|
|
description: this.description,
|
|
thumbnail: this.thumbnail,
|
|
type: this.type,
|
|
source: this.source,
|
|
author: this.author,
|
|
tracks: []
|
|
};
|
|
if (withTracks)
|
|
payload.tracks = this.tracks.map((m) => m.toJSON(true));
|
|
return payload;
|
|
}
|
|
}
|
|
exports.Playlist = Playlist;
|