Create API Key using Google Developer Console
https://console.developers.google.com
Create videolist_download.php File and Paste in this Code
Replace $api_key and $api_playlist_id with your own values.
#!/usr/bin/php
<?php
// List videos, fifty at a time
$api_key = "google_api_key";
$api_playlist_id = "google_playlist_id";
$api_url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=50&playlistId=" . $api_playlist_id . "&key=" . $api_key;
$pageToken = '';
$pageNumber = 1;
// Create directory
mkdir("./videolist", 0700, true);
// Remove previous files
foreach (glob('./videolist/vidlist*.json') as $file) {
if(is_file($file)) {
unlink($file);
}
}
function downloadVideos($api_url, $pageToken=null) {
if ($pageToken != '') {
$videos = file_get_contents($api_url . '&pageToken=' . $pageToken);
} else {
$videos = file_get_contents($api_url);
}
return $videos;
}
do {
$videos = downloadVideos($api_url, $pageToken);
file_put_contents("./videolist/vidlist" . $pageNumber . '.json', $videos);
$pageNumber++;
$videos_json = json_decode($videos);
if (!empty($videos_json->nextPageToken)) {
$pageToken = $videos_json->nextPageToken;
} else {
$pageToken = '';
}
} while (!empty($pageToken));
Create videolist_to_html.php File and Paste in this Code
#!/usr/bin/php
<?php
ob_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>YouTube videos</title>
<style>
table {border-collapse: collapse; width: 100%}
table td {border: 1px solid black; padding: 12px}
.wrap {word-break: break-all;}
.nowrap {white-space: nowrap}
</style>
</head>
<table>
<?php
$file_number = 1;
// Convert URLs to Links
// https://stackoverflow.com/questions/1960461/convert-plain-text-urls-into-html-hyperlinks-in-php
// url regex
$url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i';
while ( file_exists("videolist/vidlist" . $file_number . ".json")) {
$contents_json = file_get_contents("videolist/vidlist" . $file_number . ".json");
$contents = json_decode($contents_json);
foreach ($contents->items as $item) {
if ($item->kind == 'youtube#playlistItem') {
$rowbuffer = '<tr>';
$rowbuffer .= '<td class="wrap"><strong>';
$rowbuffer .= $item->snippet->title . "</strong><br />";
$description = nl2br($item->snippet->description);
$description = preg_replace($url, '<a href="$0" target="_blank" title="$0">$0</a>', $description);
$rowbuffer .= $description;
$rowbuffer .= '<td class="nowrap">';
$rowbuffer .= substr($item->snippet->publishedAt, 0, 10);
$rowbuffer .= '<td class="nowrap">';
$rowbuffer .= '<a href="https://studio.youtube.com/video/' . $item->contentDetails->videoId . '/edit" target="_blank">Edit</a>';
$rowbuffer .= '<td class="nowrap">';
$rowbuffer .= '<a href="https://youtu.be/' . $item->contentDetails->videoId . '" target="_blank">View</a>';
echo $rowbuffer;
}
}
$file_number++;
}
echo '</table>';
$output_buffer = ob_get_contents();
ob_end_clean();
file_put_contents('videos.html', $output_buffer);
Give Scripts Executable Permissions
chmod +x videolist*.php
Run Scripts
./videolist_download.php ./videolist_to_html.php
Open videos.html in a web browser to view your videos.
