네이버 영상 불러오기 혹시 뭐 바뀐거 있는지 아시는 분 계시나요?
본문
안녕하세요.
여분필드에 유튜브, 네이버, 카카오 등 동영상 주소 입력하면
리스트에서 자동으로 썸네일 불러오고,
본문에서는 자동으로 영상 불러오는 소스를 몇 년째 잘 사용하고 있습니다.
오늘 게시판 수정 작업을 하다 발견했는데,
지금보니 네이버만 썸네일과 영상을 불러오지 못하고 있네요.
그래서 운영중인 다른 홈페이지도 확인해 보니 모두 네이버 영상만 뜨지 않고 있습니다.
네이버 영상 썸네일의 경우 기존에 불러왔던 썸네일은 그대로 남아 있지만 그 글을 수정하면 썸네일이 없어집니다.
언제부터 이런 건지 정확하게는 알지 못하지만 대략 2~3주 전까지는 문제없었습니다.
혹시 네이버 영상 불러오기 관련해서 바뀐 내용이 있는지 아시는 분 계시나요?
참고로 아래는 기존에 사용하던 소스에서 영상이나 네이버 영상 관련된 부분입니다.
list.view.skin.php
================
에서
if($list[$i]['wr_4']) {
$img_content = '<img src="'.$list[$i]['wr_4'].'">';
썸네일 뽑아옴.
view.skin.php
============
에서
<?php }else if($movie_company == "naver" || $movie_company == "soundcloud"){ ?>
<div class="movie">
<?php
$url = "https://tv.naver.com/oembed?url=https://tv.naver.com/v/".$movie_id."&format=json";
$jsondata = curl_get_contents($url);
$arr = json_decode($jsondata, true);
echo $arr['html'];
?>
</div>
영상 뽑아옴.
write_update.head.skin.php
=========================
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once($board_skin_path.'/movie.lib.php');
$movie_company = get_hostis($wr_10);
$movie_id = movie_id($wr_10, $movie_company);
$wr_2 = $movie_company;
$wr_3 = $movie_id;
if($movie_company == "naver"){
$url = "https://tv.naver.com/oembed?url=https://tv.naver.com/v/".$movie_id."&format=json";
$jsondata = curl_get_contents($url);
$arr = json_decode($jsondata, true);
$wr_4 = $arr['thumbnail_url'];
}
...
movie.lib.php
============
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//도메인 정보출력
function get_hostis($path)
{
preg_match("/^(https|http|ftp):\/\/(.*?)\//", "$path/" , $matches);
$parts = explode(".", $matches[2]);
$tld = array_pop($parts);
$host = array_pop($parts);
if ( strlen($tld) == 2 && strlen($host) <= 3 ) {
$tld = "$host.$tld";
$host = array_pop($parts);
}
$host = array(
'protocol' => $matches[1], //https
'subdomain' => implode(".", $parts), //subdomain
'domain' => "$host.$tld", //domain.co.kr
'host'=>$host, //domain 이름
'tld'=>$tld //co.kr
);
return $host['host'];
}
//동영상 아이프레임 출력 유투브/비메오
function movie_id($path, $host)
{
if($host == "youtube"){
/*유투브링크 동영상 아이디*/
$youtube_link = $path;
$youtube_url = parse_url($youtube_link);
parse_str($youtube_url['query']);
$youtubeid = $v;
$movieid = $youtubeid;//$youtubeid;
}
else if($host == "vimeo" || $host == "kakao" || $host == "naver" || $host == "dailymotion"){
/*동영상 아이디*/
$vars =strrchr($path, "?"); //
$videoid = preg_replace('/'. preg_quote($vars, '/') . '$/', '', basename($path)); //
$movieid = $videoid;//$vimeoid;
}
else if($host == "soundcloud"){
/*동영상 아이디*/
$urls = parse_url($path, PHP_URL_PATH);
$videoid = explode("/",$urls);
$movieid = $videoid[1];//$vimeoid;
}
else{
$movieid = false;
}
return $movieid;
}
//동영상 image 출력 유투브/비메오
function get_movie_thumb($movie_id, $movie_company)
{
if($movie_company == "youtube"){
$movieimg = "https://img.youtube.com/vi/".$movie_id."/maxresdefault.jpg";
}
else if($movie_company == "vimeo"){
$vimeo = unserialize(file_get_contents("http://vimeo.com/api/v2/video/{$movie_id}.php"));
//echo $small = $vimeo[0]['thumbnail_small'];
//echo $medium = $vimeo[0]['thumbnail_medium'];
$movieimg = $vimeo[0]['thumbnail_large'];
}
else if($movie_company == "kakao" || $movie_company == "dailymotion"){
if($movie_company == "kakao"){
$sites_html = file_get_contents('http://tv.kakao.com/v/'.$movie_id);
}else if($movie_company == "dailymotion"){
$sites_html = file_get_contents('https://www.dailymotion.com/video/'.$movie_id);
}
$html = new DOMDocument();
@$html->loadHTML($sites_html);
$meta_og_img = null;
//Get all meta tags and loop through them.
foreach($html->getElementsByTagName('meta') as $meta) {
//If the property attribute of the meta tag is og:image
if($meta->getAttribute('property')=='og:image'){
//Assign the value from content attribute to $meta_og_img
$meta_og_img = $meta->getAttribute('content');
}
}
$movieimg = $meta_og_img;
}
else if($movie_company == "naver" || $movie_company == "soundcloud"){
$movieimg = xml_movie_frame($movie_id, $movie_company, 'thumb');
}
else {
$movieimg = "noimg";//
}
return $movieimg;
}
//xml로 동영상 소스 통째로
function xml_movie_frame($movieid, $host, $type)
{
if($host == "naver"){
$xml=simplexml_load_file("https://tv.naver.com/oembed?url=https://tv.naver.com/v/".$movieid."&format=xml");
//print_r($xml);
$movie_frame = $xml->html;
$movie_img = $xml->thumbnail_url;
}
else if($host == "soundcloud"){
//$json = file_get_contents("https://soundcloud.com/oembed?url=https%3A%2F%2Fsoundcloud.com%2F".$movieid."%2Fflox-the-words&format=json");
$json = file_get_contents("https://soundcloud.com/oembed?url=https://soundcloud.com/".$movieid."&format=json");
$obj = json_decode($json);
$movie_frame = $obj->html;
$movie_img = $obj->thumbnail_url;
}
if($type == "movie"){
return $movie_frame;
}else{
return $movie_img;
}
}
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
답변을 작성하시기 전에 로그인 해주세요.