mirror of
https://github.com/YuzuZensai/play-dl-test.git
synced 2026-01-31 04:32:38 +00:00
End soon
This commit is contained in:
63
node-youtube-dl/YouTube/classes/Channel.ts
Normal file
63
node-youtube-dl/YouTube/classes/Channel.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
export interface ChannelIconInterface {
|
||||
url?: string;
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
export class Channel {
|
||||
name?: string;
|
||||
verified!: boolean;
|
||||
id?: string;
|
||||
url?: string;
|
||||
icon!: ChannelIconInterface;
|
||||
subscribers?: string;
|
||||
|
||||
constructor(data: any) {
|
||||
if (!data) throw new Error(`Cannot instantiate the ${this.constructor.name} class without data!`);
|
||||
|
||||
this._patch(data);
|
||||
}
|
||||
|
||||
private _patch(data: any): void {
|
||||
if (!data) data = {};
|
||||
|
||||
this.name = data.name || null;
|
||||
this.verified = !!data.verified || false;
|
||||
this.id = data.id || null;
|
||||
this.url = data.url || null;
|
||||
this.icon = data.icon || { url: null, width: 0, height: 0 };
|
||||
this.subscribers = data.subscribers || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns channel icon url
|
||||
* @param {object} options Icon options
|
||||
* @param {number} [options.size=0] Icon size. **Default is 0**
|
||||
*/
|
||||
iconURL(options = { size: 0 }): string | undefined{
|
||||
if (typeof options.size !== "number" || options.size < 0) throw new Error("invalid icon size");
|
||||
if (!this.icon.url) return undefined;
|
||||
const def = this.icon.url.split("=s")[1].split("-c")[0];
|
||||
return this.icon.url.replace(`=s${def}-c`, `=s${options.size}-c`);
|
||||
}
|
||||
|
||||
get type(): "channel" {
|
||||
return "channel";
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
return this.name || "";
|
||||
}
|
||||
|
||||
toJSON() {
|
||||
return {
|
||||
name: this.name,
|
||||
verified: this.verified,
|
||||
id: this.id,
|
||||
url: this.url,
|
||||
iconURL: this.iconURL(),
|
||||
type: this.type,
|
||||
subscribers: this.subscribers
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user