Connecting to YouTube Channel
<!--views/index.ejs--> <%- include('partials/head') %> <%- include('partials/facebookapi') %> <%- include('partials/header') %> <link rel='stylesheet' href='/stylesheets/index.css' /> <script src='/javascripts/utility.js'></script> <section class="panel region"> <script src="https://apis.google.com/js/api.js"></script> <script src="/javascripts/index.js"></script> <div id="video-screen"></div> <div id="navigation"> <img onclick="index.getVidContent(index.yt_prevPageToken)" src="/images/left.png" /> <img onclick="index.getVidContent()" src="/images/home.png" /> <img onclick="index.getVidContent(index.yt_nextPageToken)" src="/images/right.png" /> </div> </section> <section id="main"></section> <%- include('partials/footer.ejs') %>
// javascripts/index.js class Index{ constructor(){ this.pageTokens = []; this.apiKey = 'AIzaSyCDMr6toQGyDRFPChRsbQ2sheSQfTQLVqg'; this.kplaylistId = 'UUQfwfsi5VrQ8yKZ-UWmAEFg'; this.yt_nextPageToken = false; this.yt_prevPageToken = false; this.kclicked = false; this.kPlaylistt = []; this.kPlaylist = []; this.created = false; this.videoIds = []; var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); } getVidContent(pageToken) { index.option = { "part": ["snippet,contentDetails"], "playlistId": index.kplaylistId, "maxResults": 5 } if(pageToken) index.option.pageToken = pageToken; gapi.client.init({ 'apiKey': index.apiKey, 'discoveryDocs': ['https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest'], }).then(function() { return gapi.client.youtube.playlistItems.list(index.option); }).then(function(response) { index.yt_nextPageToken = response.result.nextPageToken; index.yt_prevPageToken = response.result.prevPageToken; index.getVidData(response.result.items); }, function(reason) { console.log('Error: ' + reason.result.error.message); }); } getVidData(items){ this.videoIds = []; for(var v in items){ this.videoIds.push(items[v].snippet.resourceId.videoId); } this.createPlayer(); } createPlayer(){ var html = ``; for(var v in this.videoIds){ html += `<div>`; html += `<iframe src="https://www.youtube.com/embed/${this.videoIds[v]}"></iframe>`; html += `</div>`; } $('.panel #video-screen').html(html); } }//end class const index = new Index(); function initAPI() { index.getVidContent(); } gapi.load('client', initAPI);
/* public/stylesheets/index.csss */ *{ padding:0; margin:0; box-sizing: border-box; } body{ font:14px Vidaloka, OdorMeanChey; } a{ color:#e20000; text-decoration: none; } a:hover{ opacity:.7; } .region{ max-width: 1100px; margin:0 auto; } #header{ background:#e20000; color:white; } #header .top-menu-outer{ padding:5px 0; border-bottom: 5px solid black; } #header .top-menu{ display: grid; grid-template-columns: auto auto; align-items: center; } #header .top-menu .time{ text-align: right; } #header .title-outer{ background: #3d3d3d; padding: 10px 0; } #header .site-title{ display: grid; grid-template-columns:auto auto auto; align-items: center; font:50px/1.75 Anton, Moul; text-shadow:0px 0px 0 rgb(231,231,231), 1px 1px 0 rgb(216,216,216), 2px 2px 0 rgb(202,202,202), 3px 3px 0 rgb(187,187,187), 4px 4px 0 rgb(173,173,173), 5px 5px 0 rgb(158,158,158), 6px 6px 0 rgb(144,144,144), 7px 7px 6px rgba(0,0,0,0.6), 7px 7px 1px rgba(0,0,0,0.5), 0px 0px 6px rgba(0,0,0,.2); } #header .site-title a{ color:white; } #header .site-title img{ width: 150px; } #header .site-title .tvlive{ float: right; } #header .site-title .news{ margin: 0 auto; width:120px; } #header .main-menu-outer{ background: black; } .topnav { background-color:transparent; overflow: hidden; } .topnav a { float: left; display: block; color: #f2f2f2; text-align: center; padding: 12px 16px; text-decoration: none; font: 16px/1.5 Oswald, Bayon; } .topnav #house{ padding-top:0; padding-bottom:10px; } .topnav #house img{ width: 40px; position: relative; top:5px; } .topnav a:hover { background-color:rgb(34, 34, 34); } .topnav a.active { background-color: rgb(46, 46, 46); color: white; } .topnav .icon { display: none; } .panel{ background:lightgrey; margin-top: 30px; border-radius:4px; } .panel #video-screen{ display:grid; grid-template-columns:auto auto auto auto auto auto; grid-gap:15px; padding:15px; } .panel #video-screen div{ position:relative; padding-top:56.25%; } .panel #video-screen div:nth-child(1){ grid-column: 1 / span 3; } .panel #video-screen div:nth-child(2){ grid-column: 4 / span 3; } .panel #video-screen div:nth-child(3){ grid-column: 1 / span 2; } .panel #video-screen div:nth-child(4){ grid-column: 3 / span 2; } .panel #video-screen div:nth-child(5){ grid-column: 5 / span 2; } .panel #video-screen iframe{ position: absolute; top:0; left:0; width:100%; height:100%; border-width:0; } .panel #navigation{ text-align: center; padding-bottom:5px; } .panel #navigation img{ height:25px; } .panel #navigation img:hover{ opacity:.5; cursor:pointer; } .footer{ padding: 30px 0; text-align:center; } @media only screen and (max-width:600px){ #header .top-menu{ padding: 0 10px; grid-template-columns: 100%; } #header .top-menu span, #header .top-menu .time{ text-align:center; } #header .site-title{ grid-template-columns:100%; text-align:center; } #header .site-title .tvlive{ float: none; } #header .site-title .news{ margin: 10px auto; } .panel #video-screen{ grid-template-columns: 100%; } .panel #video-screen div:nth-child(1){ grid-column: 1 / span 1; } .panel #video-screen div:nth-child(2){ grid-column: 1 / span 1; } .panel #video-screen div:nth-child(3){ grid-column: 1 / span 1; } .panel #video-screen div:nth-child(4){ grid-column: 1 / span 1; } .panel #video-screen div:nth-child(5){ grid-column: 1 / span 1; } } @media screen and (max-width: 600px) { .topnav a:not(:first-child) {display: none;} .topnav a.icon { float: right; display: block; } } @media screen and (max-width: 600px) { .topnav.responsive {position: relative;} .topnav.responsive a.icon { position: absolute; right: 0; top: 0; } .topnav.responsive a { float: none; display: block; text-align: left; } }
GitHub: "https://github.com/Sokhavuth/multimedia
Heroku: https://khmerweb-multimedia.herokuapp.com/
Comments
Post a Comment