You are here

function MediaYouTubeStreamWrapper::getOriginalThumbnailPath in Media: YouTube 7.3

Same name and namespace in other branches
  1. 7 includes/MediaYouTubeStreamWrapper.inc \MediaYouTubeStreamWrapper::getOriginalThumbnailPath()
  2. 7.2 includes/MediaYouTubeStreamWrapper.inc \MediaYouTubeStreamWrapper::getOriginalThumbnailPath()
1 call to MediaYouTubeStreamWrapper::getOriginalThumbnailPath()
MediaYouTubeStreamWrapper::getLocalThumbnailPath in includes/MediaYouTubeStreamWrapper.inc
1 method overrides MediaYouTubeStreamWrapper::getOriginalThumbnailPath()
MediaYouTubeTestStreamWrapper::getOriginalThumbnailPath in tests/includes/MediaYouTubeTestStreamWrapper.inc

File

includes/MediaYouTubeStreamWrapper.inc, line 19
Extends the MediaReadOnlyStreamWrapper class to handle YouTube videos.

Class

MediaYouTubeStreamWrapper
Create an instance like this: $youtube = new MediaYouTubeStreamWrapper('youtube://v/[video-code]');

Code

function getOriginalThumbnailPath() {
  $parts = $this
    ->get_parameters();
  $thumbnail_url = 'https://img.youtube.com/vi/' . check_plain($parts['v']) . "/maxresdefault.jpg";
  $response = drupal_http_request($thumbnail_url);
  if ($response->code == 404) {
    $thumbnail_url = 'https://img.youtube.com/vi/' . check_plain($parts['v']) . "/hqdefault.jpg";
    $response = drupal_http_request($thumbnail_url);
  }
  if (!isset($response->error)) {
    return $thumbnail_url;
  }
  elseif ($response->code == -110) {
    throw new MediaInternetValidationException("Connection timed out.");
  }
  elseif ($response->code == 401) {
    throw new MediaInternetValidationException("Embedding has been disabled for this video.");
  }
  elseif ($response->code == 404) {
    return "https://s.ytimg.com/yts/img/image-hh-404-vflvCykRp.png";
  }
  elseif ($response->code != 200) {
    throw new MediaInternetValidationException("The YouTube video ID is invalid or the video was deleted.");
  }
  else {
    $uri = file_stream_wrapper_uri_normalize('youtube://v/' . check_plain($parts['v']));
    $external_url = file_create_url($uri);
    $oembed_url = url('https://www.youtube.com/oembed', array(
      'query' => array(
        'url' => $external_url,
        'format' => 'json',
      ),
    ));
    $response = drupal_http_request($oembed_url);
    if (!isset($response->error)) {
      $data = drupal_json_decode($response->data);
      return $data['thumbnail_url'];
    }
    else {
      throw new Exception("Error Processing Request. (Error: {$response->code}, {$response->error})");
      return;
    }
  }
}