0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Youtubeのチャンネル内の動画を取得したとき、shorts動画を判別する方法

Posted at

判別したいチャンネル内の動画がそんなになければ、
1つずつリダイレクトチェック
youtube.com/shorts/***
でリダイレクトされる場合は通常動画
リダイレクトされない場合はshorts動画という判定もあるけど、
動画の数が多いと、リダイレクトチェックに時間がかかって、
GASだとタイムアウトが発生する問題があった。
なので、
海外フォーラムで調べてみると、
非公式の方法ながら、Shorts動画のプレイリストが
ほぼどのチャンネルも自動生成されていることがわかった。
そこで、
UU~~~から始まるプレイリストIDを
UUSH~~~に編集し、
プレイリスト内の動画IDの配列を取得し、
配列の差分を取得することで、
通常動画の動画ID配列を作り、
その配列で情報取得をすることで、
一気に再生数やいいね数を調べることができた。
以下スクリプト

function getVideoInfo() {
  const s = SpreadsheetApp.getActiveSpreadsheet();
  const ss = s.getSheetByName("getVideoInfo");

  //D2には調べたいチャンネルの投稿動画プレイリストIDが入ってる
  const listId = ss.getRange("D2").getValue();
  const videoIds = getVideoIds(listId);
  console.log(videoIds.length);

  //E2にはスプレッドシートの関数でUUをUUSHに変更したIDが入ってる
  const shortsPlaylistId = ss.getRange("E2").getValue();
  const shortsIds = getVideoIds(shortsPlaylistId);
  console.log(shortsIds.length);

  const diffIds = videoIds.filter(x => !shortsIds.includes(x));
  console.log(diffIds.length);

  const videos = getVideos(sliceByNumber(diffIds, 50));

  var outputArray = [];
  for(var i=0;videos.length>i;i++){
    var url = `https://www.youtube.com/watch?v=${videos[i].id}`;
    var fDate = Utilities.formatDate(new Date(videos[i].snippet.publishedAt) , "JST" , "yyyy/MM/dd");
    var title = videos[i].snippet.title;
    var viewCount = videos[i].statistics.viewCount;
    l(`[${i}]動画名: ${title}, 再生数: ${viewCount}`);//確認用
    //動画データを配列へPUSH
    outputArray.push([title, url, fDate, viewCount]);
  }
  var writeTargetRow = 5;//←書き込みを開始したい行
  ss.getRange(writeTargetRow,2,ss.getLastRow(),4).clear();
  ss.getRange(writeTargetRow,2,outputArray.length,4).setValues(outputArray);

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?