네이버 영상 불러오기 혹시 뭐 바뀐거 있는지 아시는 분 계시나요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
네이버 영상 불러오기 혹시 뭐 바뀐거 있는지 아시는 분 계시나요?

QA

네이버 영상 불러오기 혹시 뭐 바뀐거 있는지 아시는 분 계시나요?

본문

안녕하세요.

 

여분필드에 유튜브, 네이버, 카카오 등 동영상 주소 입력하면 

리스트에서 자동으로 썸네일 불러오고, 

본문에서는 자동으로 영상 불러오는 소스를 몇 년째 잘 사용하고 있습니다. 

 

오늘 게시판 수정 작업을 하다 발견했는데,

지금보니 네이버만 썸네일과 영상을 불러오지 못하고 있네요. 

그래서 운영중인 다른 홈페이지도 확인해 보니 모두 네이버 영상만 뜨지 않고 있습니다. 

네이버 영상 썸네일의 경우 기존에 불러왔던 썸네일은 그대로 남아 있지만 그 글을 수정하면 썸네일이 없어집니다.

 

언제부터 이런 건지 정확하게는 알지 못하지만 대략 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;
}

이 질문에 댓글 쓰기 :

답변 2

네이버 동영상 추출 방법 2가지 (tistory.com)

친절하신 답변 감사합니다.
저도 처음에 구글링으로 찾아봤던 문서네요.
저 방법으로 게시판에 적용은 하기 힘들거 같지만,
네이버 영상 들어가보니 불러오는 방식이 예전과 좀 달라진거 같더라고요.
조금만 손보면 다시 사용 가능할듯합니다.

masahide님

이거 문제 해결 하셧나요?

해결 하셧다면

방법 공유좀 부탁 드립니다 ㅠㅠ

지금은 이 스킨 사용안해서 정확히 기억은 안나는데,
썸네일 불러오는건 포기했고,
본문에서 영상 불러오기는 스킨내 네이버 동영상 주소를 변경해서 성공했습니다.
네이버 동영상 주소 방식이 기존과 바뀌었더라고요. 그래서 그에 맞춰서 수정만 했습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT