Membuat Search Engine Youtube dengan JQuery(Youtube Data API 3)
Hai All, ketemu lagi bersama saya pria tampan asli sunda :), mohon maaf dah lama gak bikin tutorial karena kesibukan saya. Untuk kali ini saya akan membuat tutorial membuat search engine youtube dengan menggunakan Youtube Data API 3 dari google. Sebelum memulai tutorial anda harus mempunya API Key dari google, untuk mendapatkan nya bisa cek di sini https://console.developers.google.com, setelah itu anda bisa lihat di pojok kanan atas di situ ada project lalu klik proyek baru serperti gambar dibawah ini
Klik tombol Buat maka muncul seperti gambar dibawah ini, lalu pilih youtube Data API
Seteleah klik maka akan muncul halaman seperti dibawah ini, lalu klik Aktifkan
Setelah klik Aktifkan anda akan dibawah ke halaman seperti dibawah ini lalu klik Button Buat Kredensial
Setelah klik muncul seperti ini
Pilih API yang digunankan Youtube DATA API v3, lalu setelan nya pilih browser Web dan Data yang akan di akses pilih Data Publik, setelah itu klik Tombol Kredensial apa yang saya butuhkan?
lalu akan muncul seperti gambar dibawah ini
Nah yang saya block merah adalah API key yang nanti akan kita gunakan, mohon maaf saya block merah karena alasan privasi.
Setelah muncul ini maka klik selesai.
Sekarang kita aka buat halaman html nya dengan nama index.html, sebelumnya kita include jquery,fancybox dan lain2 seperti contoh dibawah ini
<script src="https://use.fontawesome.com/567fc88304.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js"></script>
<script src="script.js"></script>
<link rel="stylesheet" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css?v=2.1.5">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
Setelah itu kita buat content nya di dalam body seperti dibawah ini
<h5>AndezNET.com</h5>
<hr />
<div class="content">
<h2>Membuat Search Engine Youtube dengan JQuery(Youtube Data API 3)</h2>
h2><i class="fa fa-youtube" aria-hidden="true"></i>YouTube Search Engine</h2>
<div id="custom-search-input">
<div class="input-group col-md-12">
<form id="search-form" name="search-form" onsubmit="return cariYoutube();">
<input type="text" class="form-control" placeholder="Pencarian...." id="search" />
<span class="input-group-btn">
<button class="btn btn-primary btn-lg" type="submit" id="findNow">
<i class="glyphicon glyphicon-search"></i>
</button>
</span>
</form>
</div>
</div>
<br><br>
<div id="hasil"></div>
<br><br>
<div id="buttons"></div>
</div>
Setelah itu kita buat CSS nya untuk mempercantik content nya seperti dibawah ini
<style>
#custom-search-input{
padding: 3px;
border: solid 1px #E4E4E4;
border-radius: 6px;
background-color: #FF0000;
}
#custom-search-input input{
border: 0;
box-shadow: none;
width: 93%;
}
#custom-search-input button{
margin: 2px 0 0 0;
background: none;
box-shadow: none;
border: 0;
color: #666666;
padding: 0 8px 0 10px;
border-left: solid 1px #ccc;
}
#custom-search-input button:hover{
border: 0;
box-shadow: none;
border-left: solid 1px #ccc;
}
#custom-search-input .glyphicon-search{
font-size: 23px;
}
article {
margin: 10px 0;
background: rgba(0,0,0,0.7);
padding: 4px 20px;
}
.video-wrapper {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
z-index:-1;
}
.video-wrapper video {
position: fixed;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}
.content {
position: relative;
margin: 60px auto;
width: 100%;
max-width: 800px;
z-index: 1;
}
.clearfix{
border-bottom: 1px dotted #ccc;
margin-bottom: 5px;
}
.channel
{
font-weight: 700;
color: red;
}
.block a:hover{
color: silver;
}
.block a{
color: #fff;
}
.block {
position: fixed;
background: #2184cd;
padding: 20px;
z-index: 1;
top: 240px;
}
</style>
OK. content sudah, tampilan sudah sekarang kita buat fungsi nya, buat file baru dengan nama file script.js
Pertama kita buat variable dengan nama gapikey di script.js yang nantinya untuk mengambil API Key yang sebelumnya kita buat.
var gapikey = 'API KEYS ANDA';
Kedua buat fungsi untuk menampilkan iframe dari francybox seperti ini
$(function() {
// Memangil plugin fancybox
$(".fancyboxIframe").fancybox({
maxWidth : 900,
maxHeight : 600,
fitToView : false,
width : '90%',
height : '90%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
iframe: {
scrolling : 'auto',
preload : true
}
});
$('#search-form').submit( function(e) {
e.preventDefault();
});
});
Ketiga kita buat fungsi pencarianya seperti dibawah ini
function cariYoutube() {
$('#hasil').html('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Mohon Tunggu...</span>');
$('#buttons').html('');
// Untuk get form input
q = $('#search').val();
// Untuk GET API youtube
$.get(
"https://www.googleapis.com/youtube/v3/search", {
part: 'snippet, id',
q: q,
type: 'video',
key: gapikey
}, function(data) {
var nextPageToken = data.nextPageToken;
var prevPageToken = data.prevPageToken;
// Untuk Log data
console.log(data);
$('#hasil').html('');
$.each(data.items, function(i, item) {
// Get Output
var output = getOutput(item);
// Menampilan hasil
$('#hasil').append(output);
});
var buttons = getButtons(prevPageToken, nextPageToken);
// Display buttons
$('#buttons').append(buttons);
});
}
Keempat kita buat fungsi NextPage seperti dibawah ini,
function cariYoutube() {
$('#hasil').html('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Mohon Tunggu...</span>');
$('#buttons').html('');
// Untuk get form input
q = $('#search').val();
// Untuk GET API youtube
$.get(
"https://www.googleapis.com/youtube/v3/search", {
part: 'snippet, id',
q: q,
type: 'video',
key: gapikey
}, function(data) {
var nextPageToken = data.nextPageToken;
var prevPageToken = data.prevPageToken;
// Untuk Log data
console.log(data);
$('#hasil').html('');
$.each(data.items, function(i, item) {
// Get Output
var output = getOutput(item);
// Menampilan hasil
$('#hasil').append(output);
});
var buttons = getButtons(prevPageToken, nextPageToken);
// Display buttons
$('#buttons').append(buttons);
});
}
Kelima kita buat prev page nya juga seperti dibawah ini
function prevPage() {
var token = $('#prev-button').data('token');
var q = $('#prev-button').data('query');
$('#hasil').html('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Mohon Tunggu...</span>');
$('#buttons').html('');
// get form input
q = $('#search').val();
// Untuk GET API youtube
$.get(
"https://www.googleapis.com/youtube/v3/search", {
part: 'snippet, id',
q: q,
pageToken: token,
type: 'video',
key: gapikey
}, function(data) {
var nextPageToken = data.nextPageToken;
var prevPageToken = data.prevPageToken;
// Log data
console.log(data);
$('#hasil').html('');
$.each(data.items, function(i, item) {
// Get Output
var output = getOutput(item);
// Menampilkan
$('#hasil').append(output);
});
var buttons = getButtons(prevPageToken, nextPageToken);
// Display buttons
$('#buttons').append(buttons);
});
}
Keenam kita buat output hasil pencariannya seperti dibawah ini
function getOutput(item) {
var videoID = item.id.videoId;
var title = item.snippet.title;
var description = item.snippet.description;
var thumb = item.snippet.thumbnails.high.url;
var channelTitle = item.snippet.channelTitle;
var videoDate = item.snippet.publishedAt;
var output = '<div class="col-md-6">' +
'<img src="' + thumb + '" class="img-responsive thumbnail" >' +
'</div>' +
'<div class="input-group col-md-6">' +
'<h3><a data-fancybox-type="iframe" class="fancyboxIframe" href="http://youtube.com/embed/' + videoID + '?rel=0">' + title + '</a></h3>' +
'<small>By <span class="channel">' + channelTitle + '</span> on ' + videoDate + '</small>' +
'<p>' + description + '</p>' +
'</div>' +
'<div class="clearfix"></div>';
return output;
}
Ketujuh kita buat juga ouput ketika pindah ke halaman berikut nya seperti dibawah ini
function getOutput(item) {
var videoID = item.id.videoId;
var title = item.snippet.title;
var description = item.snippet.description;
var thumb = item.snippet.thumbnails.high.url;
var channelTitle = item.snippet.channelTitle;
var videoDate = item.snippet.publishedAt;
var output = '<div class="col-md-6">' +
'<img src="' + thumb + '" class="img-responsive thumbnail" >' +
'</div>' +
'<div class="input-group col-md-6">' +
'<h3><a data-fancybox-type="iframe" class="fancyboxIframe" href="http://youtube.com/embed/' + videoID + '?rel=0">' + title + '</a></h3>' +
'<small>By <span class="channel">' + channelTitle + '</span> on ' + videoDate + '</small>' +
'<p>' + description + '</p>' +
'</div>' +
'<div class="clearfix"></div>';
return output;
}
Selesai deh, mudah kan ? heheheh , jangan lupa memasukan API Key yang kita buat tadi ke Variable gapikey. Ok sekian Tutorial kali ini untuk script lengkap nya bisa di download disini DOWNLOAD dan demo nya bisa di cek disini DEMO.