Files
YouTube.js/lib/parser/classes/Author.js
LuanRT 68cb841c00 refactor!: finish parser migration
Finally! :)

This removes all code related to the old parser.

#65
2022-07-11 06:19:10 -03:00

40 lines
1.4 KiB
JavaScript

'use strict';
const Parser = require('..');
const NavigatableText = require('./NavigatableText');
const Thumbnail = require('./Thumbnail');
const Constants = require('../../utils/Constants');
class Author {
#nav_text;
constructor(item, badges, thumbs) {
this.#nav_text = new NavigatableText(item);
this.id =
this.#nav_text.runs?.[0].endpoint.browse?.id ||
this.#nav_text.endpoint?.browse?.id || 'N/A';
this.name = this.#nav_text.text || 'N/A';
this.thumbnails = thumbs ? Thumbnail.fromResponse(thumbs) : [];
this.endpoint = this.#nav_text.runs?.[0].endpoint || this.#nav_text.endpoint;
this.badges = Array.isArray(badges) ? Parser.parse(badges) : [];
this.is_verified = this.badges?.some((badge) => badge.style == 'BADGE_STYLE_TYPE_VERIFIED') || null;
this.is_verified_artist = this.badges?.some((badge) => badge.style == 'BADGE_STYLE_TYPE_VERIFIED_ARTIST') || null;
this.url =
this.#nav_text.runs?.[0].endpoint.browse &&
`${Constants.URLS.YT_BASE}${this.#nav_text.runs[0].endpoint.browse?.base_url || `/u/${this.#nav_text.runs[0].endpoint.browse?.id}`}` ||
`${Constants.URLS.YT_BASE}${this.#nav_text.endpoint?.browse?.base_url || `/u/${this.#nav_text.endpoint?.browse?.id}`}` ||
null;
}
/**
* @type {Thumbnail | undefined}
*/
get best_thumbnail() {
return this.thumbnails[0];
}
}
module.exports = Author;