function media_youtube_emfield_data in Media: YouTube 6
3 calls to media_youtube_emfield_data()
- emvideo_youtube_data in providers/emvideo/ youtube.inc 
- hook emfield_PROVIDER_data
- media_youtube_raw_url in ./media_youtube.module 
- Return the URL to the raw flash.
- _media_youtube_update_fetch_metadata in ./media_youtube.install 
- Batch function to retrieve the most recent data from providers.
File
- ./media_youtube.module, line 525 
- Embedded Video Field provider file for YouTube.com.
Code
function media_youtube_emfield_data($video_id) {
  $data = array();
  // Create some 'field' version control.
  $data['emvideo_youtube_version'] = $data['emvideo_data_version'] = MEDIA_YOUTUBE_DATA_VERSION;
  // Store the raw data from YouTube's API.
  $raw = media_youtube_request_metadata($video_id);
  if (media_youtube_variable_get('store_raw_metadata')) {
    $data['raw'] = $raw;
  }
  // Store the video's duration.
  if (isset($raw['MEDIA:GROUP']['YT:DURATION'][1]['SECONDS'])) {
    $data['duration'] = intval($raw['MEDIA:GROUP']['YT:DURATION'][1]['SECONDS']);
  }
  else {
    $data['duration'] = 0;
  }
  // Gather info about the item's raw flash video.
  // RSS / MRSS feeds with the item would have enough info.
  // Alternatively try getting the minimum from an HTTP get.
  // Get info from a youtube playlist.
  $proto = _media_youtube_protocol();
  if (strpos($video_id, 'PLAYLIST_') === 0) {
    $playlist_id = substr($video_id, 9);
    $url = $proto . 'youtube.com/p/' . $playlist_id;
    $data['playlist'] = 1;
    // Get the large thumbnail of the first video.
    // Use the Youtube Google API to get this data.
    $api_url = 'http://gdata.youtube.com/feeds/api/playlists/' . $playlist_id;
    $result = drupal_http_request($api_url);
    if ($result->code == 200) {
      $parser = drupal_xml_parser_create($result->data);
      $vals = array();
      $index = array();
      xml_parse_into_struct($parser, $result->data, $vals, $index);
      xml_parser_free($parser);
      if (count($vals)) {
        foreach ($vals as $val) {
          if ($val['tag'] == 'MEDIA:THUMBNAIL' && $val['attributes']['HEIGHT'] >= 240) {
            $data['thumbnail']['url'] = $val['attributes']['URL'];
            break;
          }
        }
      }
    }
  }
  else {
    $url = $proto . 'youtube.com/v/' . $video_id;
    $data['playlist'] = 0;
    // Get the large thumbnail.
    $data['thumbnail']['url'] = $proto . 'img.youtube.com/vi/' . $video_id . '/0.jpg';
  }
  $response = emfield_request_header('youtube', $url);
  if ($response->code == 200) {
    // Don't give the 303 path.
    $data['flash']['url'] = $url;
    $data['flash']['size'] = $response->headers['Content-Length'];
    $data['flash']['mime'] = $response->headers['Content-Type'];
  }
  return $data;
}