PHP와 JSON으로 Youtube 내채널 목록 가져오기

길라잡이 0 330 2020.08.13 16:02

<?php

//예제를 찾아보면 file_get_contents함수를 이용하는 것이 많다. 하지만 보통 웹서버에서 보안상 이유로 지원하지 않아서 

//curl를 사용하기로 한다.

function getFromUrl($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

 

//Get videos from channel by YouTube Data API

$API_key    = 'Google API Key';

$channelID  = 'YouTube channel ID';//이게 어디 숨어 있는거야??

$maxResults = 15;

 

$query = 'https://www.googleapis.com/youtube/v3/search?order=date&;part=snippet&channelId='.$channelID.'&maxResults='.$maxResults.'&key='.$API_key.'';

 

$json = getFromUrl($query);//curl 수행 결과, json 형식으로 받아 온다.

$array = json_decode($json, true); //이것을 php에서 사용하기 위해 array로 디코딩?

?>

 

<html>

<head>

<title>유튜브 내채널</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="viewport" content="width=device-width, user-scalable=no">

<style type="text/css">

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);

body {margin:0; padding:0; font-family: 'Naum Gothic', sans-serif;}

.main {width: 100%; margin: 0 auto;}

.header {position: fixed; width: 100%; background-color: #cc0033; color: #ffffff; padding: 0px; text-align: center; z-index: 999;}

h2 {}

ul.list {list-style-type: none; position: relative; top: 80px; padding-left:0;}

ul.list li {margin-bottom: 32px; padding: 0;}

ul.list li p {padding: 0 10px;}

ul.list img {width: 100%; max-width: 600px;}

.title {font-weight: bold}

.description {color: #5a5a5a;}

.date {font-size: 9pt; color:#a0a0a0;}

</style>

 

</head>

<body>

<div class="main">

<div class="header"><h2>Youtube 내채널</h2></div>

<ul class="list">

<!--array 갯수만큼 loop-->

<?php

for ($i =1; $i < count($array); $i++){

$title = $array['items'][$i]['snippet']['title'];

$thumb = $array['items'][$i]['snippet']['thumbnails']['high']['url'];

$description = $array['items'][$i]['snippet']['description'];

$publishedAt = $array['items'][$i]['snippet']['publishedAt'];

$videoId = $array['items'][$i]['id']['videoId'];

?>

<li>

<a href="https://www.youtube.com/watch?v=<;?php echo $videoId;?>" target="_blank">

<img src="<?php echo $thumb; ?>"></a>

<p><span class="title"><?php echo $title; ?></span><br>

<span class="description"><?php echo $description; ?></span><br>

<span class="date"><?php echo $publishedAt; ?></span></p>

</li>

<?php

}

?>

</ul>

</div>

</body>

</html>​ 

Comments

번호 제목 글쓴이 날짜 조회
219 네이버쇼핑 스마트스토어 세금계산서 신청하는 방법 길라잡이 01.29 79
218 부가가치세신고 스마트스토어 + 쿠팡 개인사업자 길라잡이 01.29 81
217 스마트스토어 스타일링 연관상품 관리 길라잡이 01.17 61
216 VM웨어 This host supports Intel VT-x, but Inter VT-x is disabl… 길라잡이 2021.12.19 117
215 vm웨어 가상머신 하드디스크 용량 늘리기 길라잡이 2021.12.19 98
214 스마트스토어 가격비교 매칭 조건 길라잡이 2021.11.16 206
213 스마트스토어 실시간 알람 설정 방법 길라잡이 2021.11.03 94
212 스마트스토어 가격비교 매칭방법 길라잡이 2021.11.03 83
211 스마트스토어나 쇼핑 개인사업자등록 인터넷 신청 길라잡이 2021.09.23 111
210 통신판매업자 등록요령 길라잡이 2021.04.05 234
209 Job for httpd.service invalid. 에러확인 길라잡이 2021.02.13 240
208 Letsencrypt 인증서 삭제 또는 제거 길라잡이 2021.02.13 528
207 Let’s Encrypt 인증서 기간 남은 날짜 상태 확인하기 길라잡이 2021.02.13 344
206 ssl 적용후 https 리디렉션한 횟수가 너무 많습니다 길라잡이 2021.01.24 611
205 let's encrypt 서브도메인 무한설정 (와일드카드) 길라잡이 2021.01.21 364
204 Centos7 + Letsencrypt + cloudflare 와일드카드 자동갱신 길라잡이 2021.01.20 316
203 apache 2.4 - letsencrypt 와일드 카드 인증서를 설치하는 방법 길라잡이 2021.01.20 324
202 PhpMyAdmin 쿠키 유효기간 설정 길라잡이 2021.01.15 260
201 디비 idx 이빨빠진 데이터 순번 다시 정렬하기 길라잡이 2021.01.06 308
200 서버 포트바꾸기 길라잡이 2021.01.05 252
199 구글 맞춤 검색 엔진(google custom search engine) 길라잡이 2020.12.07 344
198 postfix 리눅스 패키지 중지하는 방법 길라잡이 2020.10.17 473
197 회원정보를 DB에 저장 중복값 구별 길라잡이 2020.09.25 232
196 error 에러주소 메인보네기 길라잡이 2020.09.23 263
195 파이썬 티스토리 제목 카테고리 크롤링 길라잡이 2020.09.22 284
194 리눅스 TOP 명령어 (시스템 전체상태를 실시간으로 파악) 길라잡이 2020.09.16 313
193 [Python] 파이썬 설치방법 (64비트) 길라잡이 2020.09.11 268
192 윈도우즈에 아나콘다, 텐서플로 설치하기 길라잡이 2020.09.11 320
191 php 특정 웹페이지에 암호걸기 길라잡이 2020.08.21 588
열람중 PHP와 JSON으로 Youtube 내채널 목록 가져오기 길라잡이 2020.08.13 331


 

페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유