강좌

|  다양한 분야에 다소 전문적인 도움이 되는 강좌들입니다.

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form

안녕하세요?


스포어 회원님들께서 아시다시피 유튜브는 다양한 썸네일 파일을 제공하지만 


모든 영상에서 동일한 종류의 썸네일을 제공하는 것은 아니죠 ㅠㅠ



maxresdefault.jpg은 원본 동영상이 HD버전인 경우에 생성되기 때문에 없는 경우가 꽤 있다고 알고 있어요. 


그런 경우에는 https://img.youtube.com/vi/동영상ID/sddefault.jpg 또는 hqdefault.jpg는 존재할 가능성이 높고 


영상 사이즈에 관계없이 0.jpg ~ 3.jpg는 예외없이 존재하는 것으로 알고 있네요 ^^ 


다만 0.jpg ~ 3.jpg는 사이즈가 작은 썸네일이어서 화질이 안 좋아요.


이와 관련해서 아미나와 SIR에서 맹활약하시는 신비 님께서 잘 정리해 놓으셨더군요 ^^


https://homzzang.com/b/free-2842



이러한 이유로 maxresdefault.jpg가 제공되지 않는 경우에 Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨게 되더군요.


다행히 maxresdefault.jpg가 생성되지 않으면 유튜브에서 적당한 파일을 띄우지 않고 헤더에 404 에러를 보내주네요.


그래서 maxresdefault.jpg -> sddefault.jpg -> hqdefault.jpg 순으로 404 에러 여부를 확인하는 방식으로 엑박 문제를 해결할 수 있더군요.


widget.php 파일을 열어서 88열 정도에 아래와 같이 삽입하시면 되어요.


function jpgexist($url) {
$curl = curl_init();
curl_setopt_array($curl, array(    
    CURLOPT_URL => $url,
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_NOBODY => true));
$header = explode("\n", curl_exec($curl));
curl_close($curl);
return $header[0];
}

$bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/maxresdefault.jpg';
$code = jpgexist($bg_img);
if (strpos($code, '404') !== false) {    
    $bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/sddefault.jpg';
    $code = jpgexist($bg_img);
    if (strpos($code, '404') !== false) {    
        $bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/hqdefault.jpg';
}
}



그리고 위 스크립트를 복붙했을 때 237열 정도에 위치하는 jQuery 스크립트도 수정해야 합니다.


$('#<?php echo $widget_id;?>').css("background-image", "url(<?php echo $bg_img?>)");



curl을 두 번이나 사용해서 스크립트가 지저분하긴 하지만 이러한 방법으로 해결이 되긴 하더군요.


get_headers를 사용하면 훨씬 간단하긴 한데 호스팅 환경에 따라 막아놓은 경우가 많은 것 같아요.


아미나 회원분들께서 처음에 엑박으로 뜬다고 제보하신 영상들이 다음과 같이 엑박이나 끊김 없이 잘 나오는 것을 확인할 수 있어요 ^^


1) maxresdefault.jpg 파일은 없고 sddefault.jpg 파일은 있는 경우


2) sddefault.jpg 파일조차 없고 hqdefault.jpg 파일만 있는 경우



작성하고보니 그누보드보다는 XE(라이믹스)가 대세인 스포어에서 이 문제에 대해 흥미 있으신 분들은 아마도 안 계실 것 같네요 ㅠㅠ


그럼 스포어 회원님들께서도 편안한 주말 저녁 되시고 감기 조심하세요~! ^^


  • profile
    title: &#039;&lt; &gt;&#039; 아이콘맛스타 2018.12.16 00:36
    여기가 라이믹스를 사용해서 라이믹스가 많은것 같지만 호스팅 이용자들 중에서 그누보드 이용자분들도 좀 있습니다. ㅎㅎ

    근데 그누보드에서 무료호스팅은 아파치님 호스팅을 많이 이용하시는 것 같더라구요.
  • profile
    이니스프리 2018.12.16 00:54

    앗 그렇군요~! 그누보드 사용하시는 분들께서 사이트를 공개 안 하시는지 스포어에서 뵙기 어려운 것 같아요 ㅎㅎ

    예전에 대전댁 님이나 핫슈 님께서 잠시 사용을 하셨던 기억이 나긴 하네요~

    그나저나 아파치 님의 호스팅 서버에서도 얼마 전에 문제가 발생해서 한동안 고생이 많으셨을 것 같더군요 ㅠㅠ

    그럼 맛스타 님께서도 안녕히 주무시고 남은 주말 뜻깊게 보내세요~! ^^

    항상 감사드립니다!!

  • profile
    이니스프리 2018.12.16 21:41

    Youtube Data API v3를 이용하는 방법을 테스트해봤네요 ^^


    $api_url = 'https://www.googleapis.com/youtube/v3/videos?id='.$vopt[0]['id'].'&key=API키&part=snippet&fields=items/snippet/thumbnails'; // API키를 입력하세요


    function curl_api($api_url) {

    $curl = curl_init($api_url);

    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($curl, CURLOPT_REFERER, '리퍼러'); // Referer URL을 입력하세요

    $json_response = curl_exec($curl);

    curl_close($curl);

    return $json_response;

    }


    $result = curl_api($api_url);

    $w1280 = '1280,';

    $w640 = '640,';

    if (strpos($result, $w1280) !== false) {

        $bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/maxresdefault.jpg';

    } elseif (strpos($result, $w640) !== false) {

        $bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/sddefault.jpg';

        } else {

            $bg_img = 'https://img.youtube.com/vi/'.$vopt[0]['id'].'/hqdefault.jpg';

    }


강좌

다양한 분야에 다소 전문적인 도움이 되는 강좌들입니다.

List of Articles
번호 게시판 제목 글쓴이 날짜 조회 수
공지 구글 로그인 문제가 있던 부분을 해결하였습니다. 7 마스터 2019.03.13 177
공지 당분간 호스팅 신청을 받지 않습니다. 20 마스터 2019.02.27 647
공지 회원 전용 페이지가 생겼습니다. 15 file 마스터 2018.03.20 5767
214 강좌 웹디자인 第一강 홈페이지는 어떻게 만드는건가 new PRASEOD- 2019.03.19 5
213 강좌 간단한 JS강의 #1 2 도토리묵 2019.03.02 66
212 라이츄 과학츄 22. 혈액입니츄 1 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2019.02.05 133
» 강좌 [아미나] Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨는 경우의 해결책 3 file 이니스프리 2018.12.15 155
210 강좌 아미나의 회원 이미지와 관련하여 x2 3 file 이니스프리 2018.12.10 114
209 라이츄 과학츄 21. 혈액형입니츄 12 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.12.08 319
208 강좌 현행 저작권법 제30조(사적이용을 위한 복제)에 대하여 - 음원 다운로더의 처벌과 관련하여 6 이니스프리 2018.12.07 204
207 강좌 그누보드/아미나에서 게시글의 날짜를 최종수정일로 변경하고, 목록스킨 및 위젯을 최종수정일 순으로 정렬하기 2 file 이니스프리 2018.11.11 1809
206 강좌 [스페인어 강좌] CH1) 스페인어란? 1 file 도토리묵 2018.10.12 152
205 강좌 리뉴얼된 구글 뉴스에서 RSS 피드를 생성하는 방법 3 file 이니스프리 2018.10.07 387
204 라이츄 과학츄 20. 알레르기츄 3 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.10.03 228
203 강좌 아실분들은 아실 미디어위키 웹호스팅상에서의 시각편집기 설치방법(게시판 이동) 3 file 퓨처마츠 2018.10.03 182
202 강좌 [ASP.NET Core를 이용한 웹사이트 만들기] 1. 시작하기 3 file 0x00000FF 2018.09.07 375
201 강좌 [ASP.NET Core를 이용한 웹사이트 만들기] OT. ASP.NET Core란 무엇인가?, 작업 환경 구성 5 0x00000FF 2018.09.06 328
200 라이츄 과학츄 19. 카리킨에 대해 알아보시츄 9 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.08.26 317
199 라이츄 과학츄 18. C3, C4, CAM이츄 3 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.07.22 378
198 라이츄 과학츄 17. 형질전환입니츄-풀때기 3 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.07.03 318
197 Doge의 잡것 프로그래밍 4. 디스코드 봇을 시작해보자 file Doge아시다시피 2018.05.08 2278
196 강좌 정말정말 기본적인 XE 위젯 반응형 적용하기 (라이믹스도 OK!) 7 file 망할윈도우미 2018.04.29 542
195 라이츄 과학츄 16. 형질전환입니츄-박테리아 3 file title: 하트뿅뿅 피카츄허니버터뚠뚜니라이츄 2018.04.15 608
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11
서버에 요청 중입니다. 잠시만 기다려 주십시오...