1;(function ($) { 2 3 "use strict"; 4 var text = ""; 5 var msnry; 6 7 function msToTime(duration) { 8 var milliseconds = parseInt((duration % 1000) / 100), 9 seconds = Math.floor((duration / 1000) % 60), 10 minutes = Math.floor((duration / (1000 * 60)) % 60), 11 hours = Math.floor((duration / (1000 * 60 * 60)) % 24); 12 13 hours = (hours < 10) ? "0" + hours : hours; 14 minutes = (minutes < 10) ? "0" + minutes : minutes; 15 seconds = (seconds < 10) ? "0" + seconds : seconds; 16 17 return hours + ":" + minutes + ":" + seconds + "." + milliseconds; 18 } 19 20 var calDate = function (date1) { 21 var today = new Date(); 22 date1 = new Date(date1); 23 const diffTime = Math.abs(today - date1); 24 const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); 25 26 var dd = String(date1.getDate()).padStart(2, '0'); 27 var mm = String(date1.getMonth() + 1).padStart(2, '0'); //January is 0! 28 var yyyy = date1.getFullYear(); 29 30 if (diffDays > 30) 31 return yyyy + "-" + mm + "-" + dd; 32 else if (diffDays > 0 && diffDays <= 30) 33 return diffDays + text; 34 else return msToTime(diffTime); 35 } 36 37 String.prototype.toHHMMSS = function () { 38 var sec_num = parseInt(this, 10); // don't forget the second param 39 var hours = Math.floor(sec_num / 3600); 40 var minutes = Math.floor((sec_num - (hours * 3600)) / 60); 41 var seconds = sec_num - (hours * 3600) - (minutes * 60); 42 43 if (hours < 10) { 44 hours = "0" + hours; 45 } 46 if (minutes < 10) { 47 minutes = "0" + minutes; 48 } 49 if (seconds < 10) { 50 seconds = "0" + seconds; 51 } 52 return hours + ':' + minutes + ':' + seconds; 53 } 54 55 /* 56 * using 'video_url' (dynamic information) to get youtube video basic informations (title, duration). 57 */ 58 59 var tfcounter = function () { 60 $('.fel-ytLoadMore').on('click', function () { 61 var token = $('.fel-ytNextpage')[0].innerText; 62 var chanel = $(this).data('chanel'); 63 var max = $(this).data('max'); 64 var order = $(this).data('order'); 65 var key = $(this).data('key'); 66 var logo = $(this).data('logo'); 67 var title = $(this).data('title'); 68 var style = $(this).data('style'); 69 var playlist = $(this).data('playlist'); 70 var layout = $(this).data('layout'); 71 text = $(this).data('text'); 72 $('.fel-ytLoader').addClass('is-active'); 73 74 if (style == "style1") { 75 // run GET request on API 76 $.get( 77 "https://www.googleapis.com/youtube/v3/search", { 78 part: 'snippet, id', 79 channelId: chanel, 80 pageToken: token, 81 type: 'video', 82 key: key, 83 order: order, 84 maxResults: max, 85 }, 86 function (data) { 87 var nextPageToken = data.nextPageToken; 88 var prevPageToken = data.prevPageToken; 89 90 // lod search data 91 var items = data.items; 92 var _html = ""; 93 for (var i = 0; i < items.length; i++) { 94 var video_title = items[i].snippet.title; 95 var video_desc = items[i].snippet.description; 96 97 $.get( 98 "https://www.googleapis.com/youtube/v3/videos", { 99 id: items[i].id.videoId, 100 part: 'contentDetails,statistics', 101 key: key, 102 }, 103 function (data) { 104 setTimeout(function () { 105 var item = data.items[0]; 106 var regExp = /PT(\d+)M(\d+)S/; 107 var match = item.contentDetails.duration.match(regExp); 108 console.log($('#' + item.id)); 109 $('#' + item.id).find('.fel-ytWrap__time').empty().append(match[1] + ':' + match[2]); 110 $('#' + item.id).find('.fel-ytWrap__views span').empty().append(item.statistics.viewCount); 111 $('#' + item.id).find('.fel-ytWrap__like span').empty().append(item.statistics.likeCount); 112 $('#' + item.id).find('.fel-ytWrap__comments span').empty().append(item.statistics.commentCount); 113 114 }, 1000); 115 }); 116 117 _html += " <div class='fel-ytWrap__item' id='" + items[i].id.videoId + "'>" + 118 "<div class='fel-ytWrap__meta'>
118" + 119 "<div class='fel-ytWrap__avarta'>" + 120 "<img src='" + logo + "' alt='" + title + "'>" + 121 "<span>" + title + "</span>" + 122 "</div>" + 123 124 "<div class='fel-ytWrap__date'>" + 125 calDate(items[i].snippet.publishedAt) 126 + "</div>" + 127 "</div>" + 128 129 "<div class='fel-ytWrap__item__info'>" + 130 "<div class='fel-ytWrap__video'>"; 131 132 if (layout == 'videoinline') 133 _html += "<iframe src='https://www.youtube.com/embed/" + items[i].id.videoId + "' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>"; 134 else if (layout == 'newtab') 135 _html += "<a href='https://www.youtube.com/watch?v=" + items[i].id.videoId + "' title='" + video_title + "' target='_blank'>" + 136 "<img src='" + items[i].snippet.thumbnails.high.url + "' alt='" + video_title + "'>" + 137 "<span class='fel-ytWrap__time'>00:00</span>" + 138 "<span class='fel-ytWrap__icon'><i class='eicon-play'></i></span>" + 139 "</a>"; 140 else 141 _html += "<div data-id='" + items[i].id.videoId + "' class='fel-ytShowPopup'>\n" + 142 " <img src='" + items[i].snippet.thumbnails.high.url + "' alt='" + video_title + "'>\n" + 143 " <span class='fel-ytWrap__time'>00:00</span>\n" + 144 " <span class='fel-ytWrap__icon'><i class='eicon-play'></i></span>\n" + 145 " </div>"; 146 _html += "</div>" + 147 "<h3><a href='https://www.youtube.com/watch?v=" + items[i].id.videoId + "' title='" + video_title + "' target='_blank'>" + video_title + "</a></h3>" + 148 "<p>" + video_desc + "</p>" + 149 "<div class='fel-ytWrap__details'>" + 150 "<span class='fel-ytWrap__views'><span>0</span> <i class='eicon-preview-medium'></i></span>" + 151 "<span class='fel-ytWrap__like'><span>0</span> <i class='eicon-facebook-like-box'></i></span>" + 152 "<span class='fel-ytWrap__comments'><span>0</span> <i class='eicon-comments'></i></span>" + 153 "</div>" + 154 "</div>" + 155 "</div>"; 156 } 157 158 var $items = _html; 159 var $grid = $('.fel-ytWrap__content--masory'); 160 $grid.append($items).each(function () { 161 $grid.masonry('reloadItems'); 162 }); 163 setTimeout(function () { 164 $grid.masonry('layout'); 165 $('.fel-ytLoader').removeClass('is-active'); 166 }, 1500); 167 } 168 ); 169 } 170 171 if (style == "style2") { 172 // run GET request on API 173 $.get( 174 "https://www.googleapis.com/youtube/v3/playlistItems", { 175 part: 'snippet,contentDetails', 176 playlistId: playlist, 177 key: key, 178 pageToken: token, 179 order: order, 180 maxResults: max, 181 }, 182 function (data) { 183 var nextPageToken = data.nextPageToken; 184 var prevPageToken = data.prevPageToken; 185 186 // lod search data 187 var items = data.items; 188 var _html = ""; 189 for (var i = 0; i < items.length; i++) { 190 var video_title = items[i].snippet.title; 191 var video_desc = items[i].snippet.description; 192 193 $.get( 194 "https://www.googleapis.com/youtube/v3/videos", { 195 id: items[i].id.videoId, 196 part: 'contentDetails,statistics', 197 key: key, 198 }, 199 function (data) { 200 setTimeout(function () { 201 var item = data.items[0]; 202 var regExp = /PT(\d+)M(\d+)S/; 203 var match = item.contentDetails.duration.match(regExp); 204 console.log($('#' + item.id)); 205 $('#' + item.id).find('.fel-ytWrap__time').empty().append(match[1] + ':' + match[2]); 206 $('#' + item.id).find('.fel-ytWrap__views span').empty().append(item.statistics.viewCount); 207 $('#' + item.id).find('.fel-ytWrap__like span').empty().append(item.statistics.likeCount); 208 $('#' + item.id).find('.fel-ytWrap__comments span').empty().append(item.statistics.commentCount); 209 210 }, 1000); 211 }); 212 213 _html += " <div class='fel-ytWrap__item' id='" + items[i].id.videoId + "'>" + 214 "<div class='fel-ytWrap__meta'>
214" + 215 "<div class='fel-ytWrap__avarta'>" + 216 "<img src='" + logo + "' alt='" + title + "'>" + 217 "<span>" + title + "</span>" + 218 "</div>" + 219 220 "<div class='fel-ytWrap__date'>" + 221 calDate(items[i].snippet.publishedAt) 222 + "</div>" + 223 "</div>" + 224 225 "<div class='fel-ytWrap__item__info'>" + 226 "<div class='fel-ytWrap__video'>" + 227 "<iframe src='https://www.youtube.com/embed/" + items[i].id.videoId + "' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>" + 228 229 "<a href='https://www.youtube.com/watch?v=" + items[i].id.videoId + "' title='" + video_title + "' target='_blank'>" + 230 "<img src='" + items[i].snippet.thumbnails.high.url + "' alt='" + video_title + "'>" + 231 "<span class='fel-ytWrap__time'>00:00</span>" + 232 "<span class='fel-ytWrap__icon'><i class='eicon-play'></i></span>" + 233 "</a>" + 234 "</div>" + 235 "<h3><a href='https://www.youtube.com/watch?v=" + items[i].id.videoId + "' title='" + video_title + "' target='_blank'>" + video_title + "</a></h3>" + 236 "<p>" + video_desc + "</p>" + 237 "<div class='fel-ytWrap__details'>" + 238 "<span class='fel-ytWrap__views'><span>0</span> <i class='eicon-preview-medium'></i></span>" + 239 "<span class='fel-ytWrap__like'><span>0</span> <i class='eicon-facebook-like-box'></i></span>" + 240 "<span class='fel-ytWrap__comments'><span>0</span> <i class='eicon-comments'></i></span>" + 241 "</div>" + 242 "</div>" + 243 "</div>"; 244 } 245 246 247 var $items = _html; 248 var $grid = $('.fel-ytWrap__content--masory'); 249 $grid.append($items).each(function () { 250 $grid.masonry('reloadItems'); 251 }); 252 setTimeout(function () { 253 $grid.masonry('layout'); 254 $('.fel-ytLoader').removeClass('is-active'); 255 }, 1500); 256 257 } 258 ); 259 } 260 }) 261 262 $(document).ready(function () { 263 setTimeout(function () { 264 msnry = $('.fel-ytWrap__content--masory'); 265 msnry.masonry({ 266 itemSelector: '.fel-ytWrap__item', 267 percentPosition: true, 268 columnWidth: '.fel-ytWrap__item', 269 gutter: msnry.data('gutter') 270 }); 271 }, 2000); 272 }); 273 274 $(".fel-ytPopup__content").fitVids(); 275 $('.fel-ytOverlay, .fel-ytClose').on('click', function () { 276 $('.fel-ytPopup').removeClass('is-active'); 277 $('.fel-ytOverlay').removeClass('is-active'); 278 }) 279 280 $('.fel-ytShowPopup').on('click', function () { 281 $('.fel-ytPopup__content').empty().append('<iframe src="https://www.youtube.com/embed/' + $(this).data('id') + '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"></iframe>'); 282 $(".fel-ytPopup__content").fitVids(); 283 $('.fel-ytPopup').addClass('is-active'); 284 $('.fel-ytOverlay').addClass('is-active'); 285 }) 286 287 //slide 288 var nav_prev = $('.fel-ytWrap__content').data('prev'), 289 nav_next = $('.fel-ytWrap__content').data('next'), 290 distant = $('.fel-ytWrap__content').data('distant'), 291 items = $('.fel-ytWrap__content').data('items'); 292 293 if ($('.fel-ytWrap__headTab').length == 0) 294 initialize_owl($('.fel-ytWrap__content.owl-carousel')); 295 296 //tab 297 if ($('.fel-ytWrap__headTab').length) { 298 $('.fel-ytWrap__headTab span').on('click', function () { 299 $(this).addClass('active').siblings().removeClass('active'); 300 var id = $(this).data('id'); 301 $(id).addClass('active').siblings().removeClass('active'); 302 var tabs = $(id).siblings(); 303 for (var i = 0; i < tabs.length; i++) 304 destroy_owl($(tabs[i]).find('.owl-carousel'));
305 initialize_owl($(id).find('.owl-carousel')); 306 }) 307 308 $('.fel-ytWrap__headTab span:first').addClass('active'); 309 $('#content0').addClass('active'); 310 initialize_owl($('#content0 .owl-carousel')); 311 } 312 313 function initialize_owl(el) { 314 var owl = el.owlCarousel({ 315 loop: true, 316 nav: true, 317 responsive: { 318 0: { 319 items: 1, 320 margin: 0 321 }, 322 600: { 323 items: 2, 324 margin: distant 325 }, 326 1023: { 327 items: items, 328 margin: distant 329 } 330 }, 331 navText: ["<i class='" + nav_prev + "'></i>", "<i class='" + nav_next + "'></i>"] 332 }); 333 } 334 335 function destroy_owl(el) { 336 el.owlCarousel('destroy'); 337 } 338 339 $('.fel-ytWrap__tabContent .fel-ytWrap__video').css('height', $('.fel-ytWrap__tabContent .fel-ytWrap__item__info:first').outerWidth() * 0.7) 340 $('.owl-carousel.fel-ytWrap__content .fel-ytWrap__video').css('height', $('.owl-carousel.fel-ytWrap__content .fel-ytWrap__item__info:first').outerWidth() * 0.7) 341 } 342 343 $(window).on('elementor/frontend/init', function () { 344 elementorFrontend.hooks.addAction('frontend/element_ready/tfyoutube.default', tfcounter); 345 }); 346})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.