YouTube 비디오(API 키 없이) 및 제목 및 기타 항목의 조회수 가져오기

3692 단어
업데이트: YouTube 페이지에 있는 경우 개발자 콘솔의 브라우저에서만 작동합니다(그렇지 않으면 cors 오류가 발생합니다).

API 키 없이 YouTube 동영상의 조회수를 얻을 수 있습니다. 비밀 공식과 빠른 솔루션은 다음과 같습니다.

async function getViews(videoId) {
  const response = await fetch(`https://www.youtube.com/watch?v=${videoId}`);
  const html = await response.text();
  const viewCount = html?.split('viewCount":"')?.[1]?.split('"')?.[0];
  return viewCount ? parseInt(viewCount) : null;
}

]

비디오에서 더 많은 데이터 얻기



모든 Youtube 페이지에는 매우 유용한 ytInitialPlayerResponse 변수가 있습니다. 여기에서 자막, 조회수 등을 확인할 수 있습니다.
  • YouTube 비디오로 이동
  • 개발자 콘솔 열기
  • 페이지 새로 고침(중요)
  • 개발자 콘솔에서
  • 과거ytInitialPlayerResponse
  • 이제 많은 정보를 마음대로 사용할 수 있습니다!



  • 조회수는 videoDetails 아래에 있습니다. 내 솔루션에서 나는 split에서 (viewCount: "로) 검색하고 첫 번째 결과를 가져옵니다.

    ytInitialPlayerResponse 변수로 작업할 수 있으면 더 좋을 것입니다. 알고 보니 이 부분까지 var meta = document.createElement('meta')
    JSON.parse(html.split('ytInitialPlayerResponse = ')[1].split(`;var meta = document.createElement('meta')`)[0])
    


    다음과 같이 완전한 비디오 데이터를 얻을 수 있습니다.

    async function getYouTubeVideoData(videoId) {
      const response = await fetch(`https://www.youtube.com/watch?v=${videoId}`);
      const html = await response.text();
      const ytInitialPlayerResponse = JSON.parse(html.split('ytInitialPlayerResponse = ')[1].split(`;var meta = document.createElement('meta')`)[0]);
      return ytInitialPlayerResponse;
    }
    


    동영상 제목 가져오기




    async function getYouTubeVideoTitle(videoId) {
      const response = await fetch(`https://www.youtube.com/watch?v=${videoId}`);
      const html = await response.text();
      const ytInitialPlayerResponse = JSON.parse(html.split('ytInitialPlayerResponse = ')[1].split(`;var meta = document.createElement('meta')`)[0]);
      return ytInitialPlayerResponse.videoDetails.title;
    }
    
    await getYouTubeVideoTitle('dQw4w9WgXcQ');
    // will return 'Rick Astley - Never Gonna Give You Up (Official Music Video)'
    

    ytInitialPlayerResponse 개체에서 모든 매개 변수를 반환할 수 있습니다.



    두 단계로 자막을 검색할 수도 있습니다.

    // if no languageCode is given, then return first subtitle from the list
    async function getYouTubeSubtitle(videoId, languageCode) {
      const response = await fetch(`https://www.youtube.com/watch?v=${videoId}`);
      const html = await response.text();
      const ytInitialPlayerResponse = JSON.parse(html.split('ytInitialPlayerResponse = ')[1].split(`;var meta = document.createElement('meta')`)[0]);
      const captionTracks = ytInitialPlayerResponse.captions. playerCaptionsTracklistRenderer.captionTracks;
      const captionTrack = languageCode ? captionTracks.find(c => c.languageCode === languageCode) : captionTracks[0];
      return await fetch(captionTrack.baseUrl);
    }
    
    await getYouTubeSubtitle('dQw4w9WgXcQ');
    // will return 'Rick Astley - Never Gonna Give You Up (Official Music Video)'
    

    좋은 웹페이지 즐겨찾기