<?php $playlist_id= 'PLzJZ3ahfm9Q_VSVXmANa8s6v99t3uRkkL'; $api_key = 'AIzaSyAL7YE_8oGFPPWJ6pgQVbAYF-G7tsbf15I'; $base_url = 'https://www.googleapis.com/youtube/v3/'; $playlist_items_url = 'playlistItems?part=contentDetails%2Csnippet&maxResults=50&playlistId='.$playlist_id.'&key='.$api_key; $playlist_url = $base_url . 'playlists?part=contentDetails%2Csnippet&id='.$playlist_id.'&key='.$api_key; $playlist_output = curl_get($playlist_url); $json_playlist_info = json_decode($playlist_output, true); $playlist_title = $json_playlist_info['items'][0]['snippet']['title']; $playlist_title = preg_replace('/[\s]+/', '', $playlist_title); $folder_title = '~/Movies/'.$playlist_title; mkdir($folder_title); $url = $base_url . $playlist_items_url; $output = curl_get($url); $json_youtube_videos = json_decode($output,true); $videos = $json_youtube_videos['items']; //print_r($json_youtube_videos); while(isset($json_youtube_videos['nextPageToken'])){ if(preg_match('/&pageToken=/', $url)){ $exploded_url = explode('&', $url); foreach($exploded_url as $i => $chunk){ if(preg_match('/pageToken=/', $chunk)){ $exploded_url[$i] = 'pageToken='.$json_youtube_videos['nextPageToken']; $url = implode('&', $exploded_url); } } } else { $url = $url.'&pageToken='.$json_youtube_videos['nextPageToken']; } $output = curl_get($url); $json_youtube_videos = json_decode($output,true); $additional_videos = $json_youtube_videos['items']; $videos = array_merge($videos, $additional_videos); } //print_r(count($videos)); $video_template_url = 'http://www.youtube.com/watch?v='; //$get_video_info = 'http://www.youtube.com/get_video_info?&video_id='; foreach($videos as $i => $video){ $video_id = $video['contentDetails']['videoId']; $resolved_video_url = $video_template_url. $video_id; $video_title = $video['snippet']['title']; //echo $video_url .PHP_EOL.implode('', explode(' ', $video_title)).PHP_EOL.PHP_EOL; echo "Downloading... ".$video_title.PHP_EOL; $video_title = preg_replace('/[\s]+/', '', $video_title); $output_file = $folder_title . '/'. $video_title; exec("youtube-dl -o ".$output_file.".mp4 '".$resolved_video_url."'"); } function curl_get($URL) { $ch = curl_init(); $timeout = 3; curl_setopt( $ch , CURLOPT_URL , $URL ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $ch , CURLOPT_CONNECTTIMEOUT , $timeout ); /* if you want to force to ipv6, uncomment the following line */ //curl_setopt( $ch , CURLOPT_IPRESOLVE , 'CURLOPT_IPRESOLVE_V6'); $tmp = curl_exec( $ch ); curl_close( $ch ); return $tmp; }