Как найти общее количество просмотров в плейлисте YouTube

Я пытаюсь найти общее количество просмотров всех видео в моем плейлисте на YouTube. Я вижу, что под названием плейлиста указано число «общее количество просмотров». Однако, похоже, это количество просмотров, полученных при первом входе в плейлист. Когда я суммирую количество просмотров отдельных видео, я получаю значительно большее число, потому что, как я полагаю, большинство видео просматриваются по ссылке, отличной от плейлиста.

В поисках ответа я вижу два предложения

  1. используя следующий JS в консоли YT
ytInitialData.header.playlistHeaderRenderer.viewCountText.simpleText

Но это просто дает тот же номер, который доступен под именем плейлиста.

  1. используя следующие
var totalViews = 0;
var videos = document.querySelectorAll('ytd-playlist-video-renderer');
for (var i= 0; i < videos.length; i++)  {
    var viewsElement = videos[i].querySelector('#metadata > span:nth- child(1)');
    if (viewsElement !== null) {
        var views = viewsElement.textContent.trim().replace(/\D/g,'');
        totalViews += parseInt(views);
    }
}
console.info('Total views of all videos in the playlist: ' + totalViews);

Но это дает общий счет 0.

Можете ли вы предоставить рабочую демонстрацию?

MrAlbino 12.04.2023 09:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попробовал этот скрипт, и он, кажется, работает в браузере. Я не мог понять никаких возможных крайних случаев. Я также предположил, что общее количество просмотров никогда не превысит максимально безопасное целое число в javascript. Также обратите внимание, что представления, которые говорят как 1.3M560K, аппроксимированы/округлены. Таким образом, вы никогда не сможете получить точное количество просмотров из плейлиста. Только приближение. Однако это будет точно, если в плейлисте есть видео с просмотрами менее 1000.

const videos = document.querySelectorAll('ytd-playlist-video-renderer');
const convertViews = (views) => {
  let num = parseFloat(views);
  if (views.includes("K")) {
    num *= 1000;
  } else if (views.includes("M")) {
    num *= 1000000;
  } else if (views.includes("B")) {
    num *= 1000000000;
  }
  return num;
}

let totalViews = 0
videos.forEach((vid) => {
    const views = vid.querySelector('#video-info > span:nth-child(1)')?.textContent.split(' ')[0] || '0'
    const converted = convertViews(views)
    totalViews += converted
})

console.info(totalViews)

Другие вопросы по теме