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

create-youtube-api-v3

Klik tombol Buat maka muncul seperti gambar dibawah ini, lalu pilih youtube Data API

create-youtube-api-v3-copy1

Seteleah klik maka akan muncul halaman seperti dibawah ini, lalu klik Aktifkan  create-youtube-api-v3-copy2

Setelah klik Aktifkan anda akan dibawah ke halaman seperti dibawah ini lalu klik Button Buat Kredensial 

create-youtube-api-v3-copy3

Setelah klik muncul seperti ini




create-youtube-api-v4

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

create-youtube-api-v5

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.

 

 

 

 

 

You may also like...

Leave a Reply

Your email address will not be published.

NEWS INFO : Aplikasi Sytem Pengarsipan Surat

Aplikasi ini digunakan untuk mempermudah pengelolaan surat masuk, surat keluar, disposisi dan pencarian arsip surat.

Dengan fitur yang lengkap, akan sangat membantu mempermudah pengelolaan surat di Instansi atau Perusahaan Anda.
 
Adapun beberapa fitur ASPAS seperti dibawah ini 
  • Surat Masuk :Surat yang diterima oleh suatu instansi yang berasal dari instansi lain 
  • Surat Keluar : Surat yang di keluarkan/dibuat untuk di kirimkan kepada instansi lain
  • Disposisi : Pendistribusian Surat Masuk dan Surat Keluar ke penerima terkain dalam internal kantor 
  • Laporan : Laporan surat masuk dan surat keluar per tanggal, dan cetak disposisi 
  • In Front Office : Yang di gunakan untuk keperluan di bagian front office, seperti hal nya buku tama.
Aplikasi ini terdiri dari 7 Hak akses yaitu, Admin, Staff Tata Usaha, Kepala Badan, Kepala Bidang, Kepala Sub Bagian, Sekretaris dan Pelaksana.
 
Untuk link demo bisa cek di aspas.andeznet.com dan username,password dibawah ini.
 
Admin Username: andez  Password : andez
Pelaksana Username: raka Password : raka 
Kepala Bidang Username: agung Password : agung
Sekretaris Username: shinta Password : shinta
Staff Tata Usaha Username: sutisna Password : sutisna
Kepala Sub Bagian Username: nurlaila Password : nurlaila
Kepala Badan Username: asep Password : asep
 
Untuk mendapatkan source code bisa hubungi saya via sms atau whatsapp saya di nomor 082213148092