mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-20 04:51:16 +00:00
* feat: add core comments section classes * chore: update type declarations * chore: fix linter warnings * style: fix linter * chore: update tests * chore(tests): fix typo * chore(tests): fix typo x2 * fix(tests): `getReplies()` method is only present in `CommentThread` and not `Comment` * chore(tests): fix comment id path * chore(tests): remove outdated code * chore(tests): fix results path * chore: enforce code style * chore: update type declarations * docs: add examples and documentation * chore(docs): fix paths * chore(docs): fix more paths * chore(docs): fix `Comments.js` path * chore(docs): fix typo * chore(docs): mention example file * chore(examples): fix imports * chore(examples): fix typo
41 lines
926 B
JavaScript
41 lines
926 B
JavaScript
'use strict';
|
|
|
|
const VideoItem = require('./VideoItem');
|
|
const GridVideoItem = require('./GridVideoItem');
|
|
|
|
class ShelfRenderer {
|
|
static parse(data) {
|
|
return {
|
|
title: this.getTitle(data.title),
|
|
videos: this.parseItems(data.content)
|
|
};
|
|
}
|
|
|
|
static getTitle(data) {
|
|
if ('runs' in (data || {})) {
|
|
return data.runs.map((run) => run.text).join('');
|
|
} else if ('simpleText' in (data || {})) {
|
|
return data.simpleText;
|
|
}
|
|
return 'Others';
|
|
|
|
}
|
|
|
|
static parseItems(data) {
|
|
let items;
|
|
|
|
if ('expandedShelfContentsRenderer' in data) {
|
|
items = data.expandedShelfContentsRenderer.items;
|
|
} else if ('horizontalListRenderer' in data) {
|
|
items = data.horizontalListRenderer.items;
|
|
}
|
|
|
|
const videos = ('gridVideoRenderer' in items[0])
|
|
&& GridVideoItem.parse(items)
|
|
|| VideoItem.parse(items);
|
|
|
|
return videos;
|
|
}
|
|
}
|
|
|
|
module.exports = ShelfRenderer; |