Пример #1
0
 public static function getVideoIDList($youtubeURL, $optionalparameters, &$playlistid, &$datalink)
 {
     //not ready yet
     //return array();
     //************************************************************************************************************************************
     $base_url = 'https://www.googleapis.com/youtube/v3';
     //https://developers.google.com/youtube/v3/docs/search/list
     /*
     		*videoType 	string 	The videoType parameter lets you restrict a search to a particular type of videos. If you specify a value for this parameter, you must also set the type parameter's value to video.
     
     		Acceptable values are:
     
     		any – Return all videos.
     		episode – Only retrieve episodes of shows.
     		movie – Only retrieve movies.
     */
     $optionalparameters_arr = explode(',', $optionalparameters);
     $videolist = array();
     $season = VideoSource_YoutubeShow::getValueOfParameter($optionalparameters_arr, 'season');
     $content_type = VideoSource_YoutubeShow::getValueOfParameter($optionalparameters_arr, 'content');
     if ($content_type == '') {
         $content_type = 'episodes';
     }
     $season = explode(':', $season);
     if (count($season) == 4) {
         $season_id = $season[2];
     } else {
         return $videolist;
     }
     //season id not found
     $optionalparameters_arr = VideoSource_YoutubeShow::deleteParameter($optionalparameters_arr, 'season');
     $optionalparameters_arr = VideoSource_YoutubeShow::deleteParameter($optionalparameters_arr, 'content');
     $part = 'id,snippet';
     $spq = implode('&', $optionalparameters_arr);
     $spq = str_replace('max-results', 'maxResults', $spq);
     $datalink = 'http://gdata.youtube.com/feeds/api/seasons/' . $season_id . '/' . $content_type . '?v=3' . ($spq != '' ? '&' . $spq : '');
     $opt = "";
     $count = YouTubeGalleryMisc::getMaxResults($spq, $opt);
     if ($count < 1) {
         $maxResults = 1;
     } elseif ($count > 50) {
         $maxResults = 50;
     } else {
         $maxResults = $count;
     }
     $videos_found = 0;
     $nextPageToken = '';
     while ($videos_found < $count) {
         $newspq = str_replace($opt, 'maxResults=' . $maxResults, $spq);
         $url = $base_url . '/playlistItems?part=' . $part . '&key=' . $api_key . '&playlistId=' . $playlistid . ($newspq != '' ? '&' . $newspq : '');
         if ($nextPageToken != '') {
             $url .= '&pageToken=' . $nextPageToken;
         }
         $htmlcode = YouTubeGalleryMisc::getURLData($url);
         if ($htmlcode == '') {
             return $videolist;
         }
         $j = json_decode($htmlcode);
         if (!$j) {
             return 'Connection Error';
         }
         $nextPageToken = $j->nextPageToken;
         $pageinfo = $j->pageInfo;
         if ($pageinfo->totalResults < $count) {
             $count = $pageinfo->totalResults;
         }
         $items = $j->items;
         if (count($items) < $maxResults) {
             $maxResults = count($items);
         }
         foreach ($xml->entry as $entry) {
             $link = $entry->link->attributes();
             $videolist[] = $link['href'];
         }
     }
     $videos_found += $maxResults;
     if ($count - $videos_found < 50) {
         $maxResults = $count - $videos_found;
     }
     return $videolist;
 }