1/* 2 * æå®æé表示ï¼åç»ï¼ 3 * 4 * æå®æéï¼19æã21æ59åï¼ã«æ¾éãããçªçµã表示ããã 5 * 6 * http://rakuraku.bangumi.org/zone?channelIndex=1&broadCastDateFrom=ã·ã¹ãã æ¥ä»&broadCastDateTo=ã·ã¹ãã æ¥ä»ï¼7æ¥&timeZoneFrom=1900&timeZoneTo=2159&lowerLimit=10 7 * 8 * APIããåå¾ããçªçµã®ä¸ãããåç»ãããçªçµã®ã¿ãæ½åºãæ¾éæéãè¿ãé ã«çªçµã表示ããã 9 * çªçµãç¡ãå ´åã¯ãæ èªä½ãé表示ã 10 * åç»URLï¼Youtubeã®URLï¼ãåãè¾¼ã¿è¡¨ç¤ºãããµã ãã¤ã«ã表示ããã 11 * åç»ãã¯ãªãã¯ãããå ´åã¯ãåç»ãåçããã 12 * ç»åããã³æ¾éæ¥æã»çªçµã¿ã¤ãã«ãã¯ãªãã¯ãããå ´åã¯ãå½åã¯â http://sample.rakuraku.bangumi.org/eventâã®éçãã¼ã¸ã«é·ç§»ããã 13 * çªçµè¡¨ããã³çªçµè©³ç´°ã®JS/CSSã®å®è£ ãå®äºããããçªçµè©³ç´°ãã¼ã¸ã¸ã®ãã¼ã¸é·ç§»ã¸åãæ¿ããããã ãã以ä¸ã®å ´åã¯é¤ãã 14 * ãé¢é£URLãã®ãã«ãã´ãªIDãããKEYSTATIONãã®çªçµã¯ããé¢é£URLãã®ãURLãã«ãã¼ã¸é·ç§»ããã 15 */ 16(function($) { 17 'use strict'; 18 19 // Dom loaded. 20 $(function() { 21 var now = moment(); 22 23 $.getJSON('https://rakuraku2.bangumi.org/zone?callback=?', { 24 // ãã©ã¡ã¼ã¿ç¾¤ 25 channelIndex: 1, 26 broadCastDateFrom: now.format('YYYYMMDD'), 27 broadCastDateTo: now.clone().add(3, 'days').format('YYYYMMDD'), 28 timeZoneFrom: '1900', 29 timeZoneTo: '2500', 30 lowerLimit: 10 31 }, function(response) { 32 // APIããåå¾ããçªçµã®ä¸ãããåç»ãããçªçµã®ã¿ãæ½åºãæ¾éæéãè¿ãé ã«çªçµã表示ããã 33 // çªçµãç¡ãå ´åã¯ãæ èªä½ãé表示ã 34 var programs = []; 35 $.each(response.programs, function(i, program) { 36 if (program.murls.length > 0) { 37 if (program.e > now.format('YYYYMMDDHHmmss')) { 38 programs.push(program); 39 if (programs.length >= 10) { 40 return false; 41 } 42 } 43 } 44 }); 45 if(programs.length==0){ 46 let list_element = document.getElementsByClassName("content1"); 47 for (let i = list_element.length; i > 0; i--) { 48 list_element[i-1].remove(); 49 } 50 let list_element2 = document.getElementsByClassName("content2"); 51 for (let i = list_element2.length; i > 0; i--) { 52 list_element2[i-1].remove(); 53 } 54 }else{ 55 if(programs.length==1){ 56 let list_element = document.getElementsByClassName("content1"); 57 for (let i = list_element.length; i > 0; i--) { 58 list_element[i-1].remove(); 59 } 60 }else{ 61 // DOMæä½ãè¡ãHTMLãåå¾ 62 var $count = 0; 63 // DOMæä½ã§ æå®æé表示ï¼åç»ï¼ ã®çªçµã表示ãã 64 $.each(programs, function(i, program) { 65 // YVP ã® iframe æä½ã®ããã«æåã« append ãã¦ãã 66 //$item.find('[data-title]').text(program.title[0].string); 67 //$item.find('[data-murl]').attr('src', program.murls[0].url); 68 var existUrl = false; 69 $.each(program.murls, function() { 70 if (this.url) { 71 existUrl = true; 72 return false; 73 } 74 }); 75 var $html = ""; 76 $.each(program.murls, function() { 77 if (this.url) { 78 $count++; 79 var urlStr = this.url.split("?"); 80 var $ID = urlStr[0].replace("//www.youtube.com/embed/",""); 81 var $url = '/weekly/?' + 'p=' + program.pid + '&s=' + program.sid + '&e=' + program.eid + '&ed=' + program.edt; 82 var s = moment(program.s, 'YYYYMMDDHHmmss'); 83 var e = moment(program.e, 'YYYYMMDDHHmmss'); 84 85 $html = '<a href="' + $url + '">'; 86 $html += '<img src="https://img.youtube.com/vi/' + $ID + '/maxresdefault.jpg" id="' + $ID + '">'; 87 $html += '</a>'; 88 89 var $block = $('.content' + $count); 90 if($block !== undefined){ 91 $block.html($html); 92 } 93 loadImg($ID); 94 return false;
95 } 96 }); 97 console.log($count); 98 if($count >= 6){ 99 return false; 100 } 101 }); 102 } 103 } 104 }); 105 }); 106 107 // ç»åããã³æ¾éæ¥æã»çªçµã¿ã¤ãã«ãã¯ãªãã¯ãããå ´åã¯ãå½åã¯â http://sample.rakuraku.bangumi.org/eventâã®éçãã¼ã¸ã«é·ç§»ããã 108 // çªçµè¡¨ããã³çªçµè©³ç´°ã®JS/CSSã®å®è£ ãå®äºããããçªçµè©³ç´°ãã¼ã¸ã¸ã®ãã¼ã¸é·ç§»ã¸åãæ¿ããããã ãã以ä¸ã®å ´åã¯é¤ãã 109 // ãé¢é£URLãã®ãã«ãã´ãªIDãããKEYSTATIONãã®çªçµã¯ããé¢é£URLãã®ãURLãã«ãã¼ã¸é·ç§»ããã 110 var eventUrl = function(program) { 111 if (program.rurls) { 112 for (var i in program.rurls) { 113 var url = program.rurls[i]; 114 if (url.cid == 'KEYSTATION') { 115 return url.url; 116 } 117 } 118 } 119 return '/program/epg?' + 'p=' + program.pid + '&s=' + program.sid + '&e=' + program.eid + '&ed=' + program.edt; 120 } 121})(jQuery); 122 123async function loadImg($ID){ 124 if(document.getElementById($ID) != null){ 125 const highQuality = await getYtThumbnail($ID); 126 document.getElementById($ID).src = highQuality; 127 } 128}; 129 130const getYtThumbnail = async (videoId) => { 131 const loadImage = (src) => { 132 return new Promise((resolve, reject) => { 133 const img = new Image(); 134 img.onload = (e) => resolve(img); 135 img.src = src; 136 }); 137 }; 138 139 const THUMB_TYPES = [ 140 'maxresdefault.jpg', 141 'sddefault.jpg', 142 'hqdefault.jpg', 143 'mqdefault.jpg', 144 'default.jpg', 145 ]; 146 for (let i = 0; i < THUMB_TYPES.length; i++) { 147 const fileName = `https://img.youtube.com/vi/${videoId}/${THUMB_TYPES[i]}`; 148 149 const res = await loadImage(fileName); 150 if ( 151 !THUMB_TYPES[i + 1] 152 || (res).width > 120 153 ) { 154 console.log(fileName); 155 return fileName; 156 } 157 } 158};
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.