Парсер видео youtube по ссылке

294
08 ноября 2017, 03:27

Имеется давольно старый код, который парсит видео ютуба по ссылке

<?
require_once('libs/JSON.php');
$json = new Services_JSON();
function youtube($url){
global $uid, $json;
 if(!ereg("http://", $url))$url = "http://".$url;
 $pars_url = parse_url($url);
 parse_str($pars_url["query"]);
 $html = str_replace('$', '', @file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$v."?alt=json"));
 $video = $json->decode($html);
  $video_array = (array) $video->entry;
 //print_R($video_array["title"]->t);
 //print_R($video->entry->content);
  if($video_array["title"]->t){
   $video_image = "http://img.youtube.com/vi/".$v."/0.jpg";
   $video_simage = "http://img.youtube.com/vi/".$v."/2.jpg";
   $out["url"] = $url;
   $out["title"] = iconv("utf-8", "windows-1251",  str_replace(array("\n" ,"\r", '"',"/"),array('\n' ,'\r', '\"', ""), $video_array["title"]->t));
   $out["description"] = iconv("utf-8", "windows-1251", str_replace(array("\n" ,"\r", '"',"/"),array('\n' ,'\r', '\"', "\/"),$video_array["content"]->t));
   $out["images"] = array($video_image, $video_simage);
   $out["domain"] = $pars_url["host"];
   $out["duration"] = $video_array["mediagroup"]->ytduration->seconds;
   $out["error"]  = "1";
   $out["vid"] = $v;
   $out["uid"] = $uid;
   $out["hash"] = md5($uid.$out["vid"]."youtube_add".date("ym").$out["duration"].$video_image.$video_simage);
  }else{
   $out["error"]  = "2";
  }
  //print_R($out);
  return $out;
}
?>

Данный метод давно не работает. Где нужно править, что бы работало? Заранее благодарю..

Answer 1

Найдено на просторах enSO (да простит меня сообщество). Альтернативный вариант:

function get_youtube($url){
    $youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json";
    $curl = curl_init($youtube);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $return = curl_exec($curl);
    curl_close($curl);
    return json_decode($return, true);
}
$url = // youtube video url 
// Display Data 
print_r(get_youtube($url));

Проверил, работает. Конкретно по Вашему коду: если в наглую перейти по генерируемой ссылке, то сервис отвечает, что сервис не работает (но может у меня руки корявые).

Есть еще один вариант, на самой взгляд, самый геморойный: использовать Google Youtube API

READ ALSO
Отправка данных через html форму в MySQL

Отправка данных через html форму в MySQL

Доброго времени сутокИмеется WAMP сервер, файл index

213
Никак не работает функция flush

Никак не работает функция flush

На серверах с установленной Vestacp не работает функция flush, перепробовал уже все возможные варианты комбинацийВ php

207
Internal server error 500 при попытке обновить БД ajax json php js

Internal server error 500 при попытке обновить БД ajax json php js

Проблема заключается в функции checkEmail, не могу понять только в чем именно проблема

250