※このプログラムはCahtGPTのサンプルプログラムを組み合わせて作成しました
・YouTubeプレイリストをcsvでダウンロードする処理について
・YouTube Data APIキーとプレイリストIDをを使って動画名、URLをCSVでダウンロードする事でリスト作成の時短を図る
・ポイント
・「YouTube Data API v3」を有効にし「YouTube Data APIキー」を準備する
(参考URL https://qiita.com/shinkai_/items/10a400c25de270cb02e4)
・CSVに出力したい再生リストのIDを準備
例 https://www.youtube.com/watch?v=yT8PG2P8Svs&list=UULFyOfqgtsQaM3S-VZnsYnHjQ の場合
IDは「UULFyOfqgtsQaM3S-VZnsYnHjQ」
下のプログラムにAPIキーを当てはめていただくとそのままご利用いただけます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php $apiKey = '//ここにあなたのAPIキーを入力してください'; //youtubeのタイトルとURLを取得する function data_get(&$data, $results_item){ foreach ($results_item['items'] as $item) { $url = 'https://www.youtube.com/watch?v='.$item['snippet']['resourceId']['videoId']; $data[] = array($item['snippet']['title'], $url); } } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $playlistId = $_POST['list']; $maxResults = 50; //最初のページの取得 $apiUrl = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults={$maxResults}&playlistId={$playlistId}&key={$apiKey}"; $response = file_get_contents($apiUrl); $results = json_decode($response, true); $data = array(); $data[] = array('name', 'url'); data_get($data, $results); //ページングして取得 while (isset($results['nextPageToken'])) { $nextPageToken = $results['nextPageToken']; $apiUrl = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults={$maxResults}&playlistId={$playlistId}&pageToken={$nextPageToken}&key={$apiKey}"; $response = file_get_contents($apiUrl); $results = json_decode($response, true); //取得した結果を処理する data_get($data, $results['items']); } // ファイル名を指定する $filename = 'sample.csv'; // HTTPヘッダーを設定する header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // CSVファイルを出力する $output = fopen('php://output', 'w'); foreach ($data as $row) { // 配列の各要素をUTF-8に変換する foreach ($row as &$value) { $value = mb_convert_encoding($value, "SJIS", "UTF-8"); } fputcsv($output, $row); } header("Location: " . $_SERVER['PHP_SELF']); exit; } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>youtubeリストCSV出力システム</title> </head> <body> <h1>YOUTUBE URLリスト出力フォーム</h1> <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> <p>list: <input type="text" name="list" size="100" ></p> <p><input type="submit" value="送信"></p> </form> </body> </html> |
