1function getProjectConfigValue(key, fallback) { 2 function normalize(value, defaultValue) { 3 if (value === undefined || value === null) { 4 return String(defaultValue); 5 } 6 if (value === true || value === "true" || value === 1 || value === "1") { 7 return "1"; 8 } 9 if (value === false || value === "false" || value === 0 || value === "0") { 10 return "0"; 11 } 12 return String(value); 13 } 14 if (typeof window.getProjectSettings === "function") { 15 try { 16 var settings = window.getProjectSettings(); 17 if (settings && settings[key] !== undefined) { 18 return normalize(settings[key], fallback); 19 } 20 } catch (error) {} 21 } 22 try { 23 var localRaw = localStorage.getItem("project_settings"); 24 if (localRaw) { 25 var localConfig = JSON.parse(localRaw); 26 if (localConfig && localConfig[key] !== undefined) { 27 return normalize(localConfig[key], fallback); 28 } 29 } 30 } catch (error) {} 31 try { 32 var cookieMatch = document.cookie.match(new RegExp('(?:^|; )' + encodeURIComponent("project_settings") + '=([^;]*)')); 33 if (cookieMatch) { 34 var cookieConfig = JSON.parse(decodeURIComponent(cookieMatch[1])); 35 if (cookieConfig && cookieConfig[key] !== undefined) { 36 return normalize(cookieConfig[key], fallback); 37 } 38 } 39 } catch (error) {} 40 return normalize(fallback, fallback); 41} 42 43var pageRevealed = false; 44var aplayerLoaded = false; 45var aplayerReady = false; 46var aplayerLoading = false; 47var aplayerInstance = null; 48var playlistApiFallbacks = [ 49 "https://api.injahow.cn/meting/?server=netease&type=playlist&id=", 50 "https://api.i-meto.com/meting/api?server=netease&type=playlist&id=" 51]; 52 53function normalizePlaylistId(value) { 54 var parsed = String(value === undefined || value === null ? "" : value).trim(); 55 if (!/^\d+$/.test(parsed)) { 56 return "2141128031"; 57 } 58 return parsed; 59} 60 61function fetchPlaylistTracksWithFallback(playlistId) { 62 var index = 0; 63 function tryNext() { 64 if (index >= playlistApiFallbacks.length) { 65 return Promise.reject(new Error("all playlist api failed")); 66 } 67 var requestUrl = playlistApiFallbacks[index] + encodeURIComponent(playlistId) + "&r=" + Date.now(); 68 return fetch(requestUrl) 69 .then(function (response) { 70 if (!response.ok) { 71 throw new Error("playlist request failed"); 72 } 73 return response.json(); 74 }) 75 .then(function (list) { 76 if (!Array.isArray(list) || list.length === 0) { 77 throw new Error("playlist empty"); 78 } 79 var tracks = list.map(function (item) { 80 var artist = item && item.artist !== undefined ? item.artist : ""; 81 if (Array.isArray(artist)) { 82 artist = artist.join(" / "); 83 } 84 return { 85 name: item && item.name ? String(item.name) : "æªç¥ææ²", 86 artist: artist ? String(artist) : "æªç¥ææ", 87 url: item && item.url ? String(item.url) : "", 88 cover: item && item.pic ? String(item.pic) : "", 89 lrc: item && item.lrc ? String(item.lrc) : "" 90 }; 91 }).filter(function (track) { 92 return !!track.url; 93 }); 94 if (!tracks.length) { 95 throw new Error("playlist has no playable urls"); 96 } 97 return tracks; 98 }) 99 .catch(function () { 100 index += 1; 101 return tryNext(); 102 }); 103 } 104 return tryNext(); 105} 106 107function initAPlayerWithTracks(playlistId, tracks) { 108 var wrap = document.getElementById("aplayer-wrap"); 109 if (!wrap) { 110 throw new Error("aplayer wrap missing"); 111 } 112 if (aplayerInstance && typeof aplayerInstance.destroy === "function") { 113 try { 114 aplayerInstance.destroy(); 115 } catch (error) {} 116 } 117 wrap.innerHTML = ""; 118 var container = document.createElement("div"); 119 wrap.appendChild(container); 120 aplayerInstance = new APlayer({ 121 container: container, 122 fixed: true, 123 mini: true, 124 autoplay: false, 125 volume: 0.8, 126 order: "random", 127 listFolded: true, 128 lrcType: 3, 129 audio: tracks 130 });
131 wrap.setAttribute("data-playlist-id", playlistId); 132} 133 134function revealPage() { 135 if (pageRevealed) { 136 return; 137 } 138 pageRevealed = true; 139 $('#loading-box').attr('class', 'loaded'); 140 $('#bg').css("cssText", "transform: scale(1);filter: blur(0px);transition: ease 0.55s;"); 141 $('#section').css("cssText", "opacity: 1;transition: ease 0.45s;"); 142 $('.cover').css("cssText", "opacity: 1;transition: ease 0.45s;"); 143} 144 145function loadScript(src) { 146 return new Promise(function (resolve, reject) { 147 var script = document.createElement("script"); 148 script.src = src; 149 script.defer = true; 150 script.onload = resolve; 151 script.onerror = reject; 152 document.body.appendChild(script); 153 }); 154} 155 156function loadScriptWithFallback(urlList) { 157 return new Promise(function (resolve, reject) { 158 var index = 0; 159 function tryLoad() { 160 if (index >= urlList.length) { 161 reject(new Error("all script sources failed")); 162 return; 163 } 164 loadScript(urlList[index]).then(resolve).catch(function () { 165 index += 1; 166 tryLoad(); 167 }); 168 } 169 tryLoad(); 170 }); 171} 172 173function ensureAPlayerVisibleFallback() { 174 var wrap = document.getElementById("aplayer-wrap"); 175 if (!wrap || aplayerReady) { 176 return; 177 } 178 if (wrap.querySelector(".aplayer")) { 179 aplayerReady = true; 180 return; 181 } 182 if (!window.APlayer) { 183 return; 184 } 185 wrap.innerHTML = ""; 186 var container = document.createElement("div"); 187 wrap.appendChild(container); 188 try { 189 if (aplayerInstance && typeof aplayerInstance.destroy === "function") { 190 aplayerInstance.destroy(); 191 } 192 new APlayer({ 193 container: container, 194 fixed: true, 195 mini: true, 196 autoplay: false, 197 volume: 0.6, 198 listFolded: true, 199 audio: [{ 200 name: "NOISE Radio", 201 artist: "NOISE", 202 url: "https://moeplayer.b0.upaiyun.com/aplayer/dario.mp3", 203 cover: "https://picsum.photos/300/300?random=18" 204 }] 205 }); 206 aplayerReady = true; 207 if (window.iziToast) { 208 iziToast.show({ 209 timeout: 2500, 210 message: 'æåå 载失败ï¼å·²å¯ç¨ææ¾å¨å åºé³æº' 211 }); 212 } 213 } catch (error) {} 214} 215 216window.loadAPlayerAssets = function (force) { 217 if ((aplayerLoaded || aplayerLoading) && !force) { 218 return; 219 } 220 221 var playlistId = normalizePlaylistId(getProjectConfigValue("music_playlist_id", "2141128031")); 222 var wrap = document.getElementById("aplayer-wrap"); 223 if (!wrap) { 224 return; 225 } 226 227 aplayerLoading = true; 228 aplayerReady = false; 229 loadScriptWithFallback([ 230 "https://cdn.jsdelivr.net/npm/[email protected]/dist/APlayer.min.js", 231 "../assets/js/APlayer.min.js" 232 ]) 233 .then(function () { 234 return fetchPlaylistTracksWithFallback(playlistId); 235 }) 236 .then(function (tracks) { 237 initAPlayerWithTracks(playlistId, tracks); 238 }) 239 .then(function () { 240 aplayerLoading = false; 241 aplayerLoaded = true; 242 aplayerReady = true; 243 }) 244 .catch(function () { 245 aplayerLoading = false; 246 aplayerLoaded = false; 247 aplayerReady = false; 248 ensureAPlayerVisibleFallback(); 249 if (window.iziToast) { 250 iziToast.show({ 251 timeout: 3500, 252 message: 'ç½æäºæåå 载失败ï¼è¯·æ£æ¥ç½ç»åéè¯' 253 }); 254 } 255 }); 256}; 257 258//å è½½å®æåæ§è¡ 259window.addEventListener('DOMContentLoaded', function () { 260 // å 让页é¢å¯ç¨ï¼åçå¾ å ¶ä½èµæº 261 revealPage(); 262 263 //ç¨æ·æ¬¢è¿ 264 if (window.iziToast) { 265 iziToast.settings({ 266 timeout: 3000, 267 backgroundColor: '#ffffff40', 268 titleColor: '#efefef', 269 messageColor: '#efefef', 270 progressBar: false, 271 close: false, 272 closeOnEscape: true, 273 position: 'topCenter', 274 transitionIn: 'bounceInDown', 275 transitionOut: 'flipOutX', 276 displayMode: 'replace', 277 layout: '1' 278 }); 279 } 280 if (window.iziToast && getProjectConfigValue("show_welcome", "1") === "1") { 281 setTimeout(function () { 282 iziToast.show({ 283 title: hello, 284 message: 'æ¬¢è¿æ¥å° NOISE导èª' 285 }); 286 }, 800); 287 } 288 289 //䏿åä½ç¼å è½½-æ¤å¤åå ¥å使ºæä»¶ 290 //å è¡å è½½ç®ä½ä¸æåéï¼åç»è¡¥å ¨åé 291 //ç±äºå缩è¿åç䏿åä½ä»æ§è¿å¤§ï¼å¯è½¬ç§»è³å¯¹è±¡å卿 CDN å è½½ 292 if ("requestIdleCallback" in window) { 293 requestIdleCallback(function () { 294 const font = new FontFace( 295 "MiSans", 296 "url(" + "./font/MiSans-Regular.woff2" + ")" 297 ); 298 font.load().then(function (loadedFont) { 299 document.fonts.add(loadedFont); 300 }).catch(function () {}); 301 }); 302 } 303 if (getProjectConfigValue("show_aplayer", "1") === "1") { 304 setTimeout(function () { 305 window.loadAPlayerAssets(); 306 }, 600); 307 setTimeout(function () { 308 window.loadAPlayerAssets(); 309 }, 1800);
310 } 311}, false) 312 313window.addEventListener('load', revealPage, false); 314setTimeout(revealPage, 1200); 315 316//è¿å ¥é®å 317now = new Date(), hour = now.getHours() 318if (hour < 6) { 319 var hello = "忍好"; 320} else if (hour < 9) { 321 var hello = "æ©ä¸å¥½"; 322} else if (hour < 12) { 323 var hello = "ä¸å好"; 324} else if (hour < 14) { 325 var hello = "ä¸å好"; 326} else if (hour < 17) { 327 var hello = "ä¸å好"; 328} else if (hour < 19) { 329 var hello = "åæå¥½"; 330} else if (hour < 22) { 331 var hello = "æä¸å¥½"; 332} else { 333 var hello = "夿·±äº"; 334} 335 336//è·åæ¶é´ 337var t = null; 338t = setTimeout(time, 1000); 339 340function time() { 341 clearTimeout(t); 342 dt = new Date(); 343 var mm = dt.getMonth() + 1; 344 var d = dt.getDate(); 345 var weekday = ["卿¥", "å¨ä¸", "å¨äº", "å¨ä¸", "å¨å", "å¨äº", "å¨å "]; 346 var day = dt.getDay(); 347 var h = dt.getHours(); 348 var m = dt.getMinutes(); 349 if (h < 10) { 350 h = "0" + h; 351 } 352 if (m < 10) { 353 m = "0" + m; 354 } 355 $("#time_text").html(h + '<span id="point">:</span>' + m); 356 $("#day").html(mm + " æ " + d + " æ¥ " + weekday[day]); 357 t = setTimeout(time, 1000); 358} 359 360function setWeatherDisplay(weatherText, minTemp, maxTemp) { 361 $('#wea_text').text(weatherText); 362 $('#tem1').text(maxTemp); 363 $('#tem2').text(minTemp); 364} 365 366function loadWeatherFromYike() { 367 return fetch('https://yiketianqi.com/api?unescape=1&version=v6&appid=43986679&appsecret=TksqGZT7') 368 .then(function (response) { 369 if (!response.ok) { 370 throw new Error("yike api error"); 371 } 372 return response.json(); 373 }) 374 .then(function (data) { 375 if (!data || data.wea === undefined || data.tem1 === undefined || data.tem2 === undefined) { 376 throw new Error("yike api invalid data"); 377 } 378 setWeatherDisplay(data.wea, data.tem2, data.tem1); 379 }); 380} 381 382function weatherCodeToText(code) { 383 var map = { 384 0: "æ´", 385 1: "æ´", 386 2: "å¤äº", 387 3: "é´", 388 45: "é¾", 389 48: "é¾å", 390 51: "å°é¨", 391 53: "ä¸é¨", 392 55: "大é¨", 393 56: "å»é¨", 394 57: "å»é¨", 395 61: "å°é¨", 396 63: "ä¸é¨", 397 65: "大é¨", 398 66: "é¨å¤¹éª", 399 67: "é¨å¤¹éª", 400 71: "å°éª", 401 73: "ä¸éª", 402 75: "大éª", 403 80: "éµé¨", 404 81: "éµé¨", 405 82: "æ´é¨", 406 95: "é·éµé¨", 407 96: "é·é¨å°é¹", 408 99: "é·é¨å°é¹" 409 }; 410 return map[code] || "æªç¥"; 411} 412 413function loadWeatherFromOpenMeteo() { 414 var weatherUrl = "https://api.open-meteo.com/v1/forecast?latitude=31.23&longitude=121.47¤t=weather_code&daily=temperature_2m_max,temperature_2m_min&timezone=Asia%2FShanghai"; 415 return fetch(weatherUrl) 416 .then(function (response) { 417 if (!response.ok) { 418 throw new Error("open-meteo api error"); 419 } 420 return response.json(); 421 }) 422 .then(function (data) { 423 var weatherCode = data && data.current && data.current.weather_code; 424 var maxTemp = data && data.daily && data.daily.temperature_2m_max && data.daily.temperature_2m_max[0]; 425 var minTemp = data && data.daily && data.daily.temperature_2m_min && data.daily.temperature_2m_min[0]; 426 if (weatherCode === undefined || maxTemp === undefined || minTemp === undefined) {
427 throw new Error("open-meteo api invalid data"); 428 } 429 setWeatherDisplay(weatherCodeToText(weatherCode), Math.round(minTemp), Math.round(maxTemp)); 430 }); 431} 432 433//è·åå¤©æ° 434if (getProjectConfigValue("show_weather", "1") === "1") { 435 loadWeatherFromYike() 436 .catch(function () { 437 return loadWeatherFromOpenMeteo(); 438 }) 439 .catch(function () { 440 setWeatherDisplay("天æ°ä¸å¯ç¨", "--", "--"); 441 }); 442} else { 443 $(".weather").hide(); 444} 445 446//ç«çæµè§å¨ç¬ç«æ ·å¼ 447if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) { 448 var head = document.getElementsByTagName('head')[0]; 449 var link = document.createElement('link'); 450 link.href = './css/firefox.css'; 451 link.rel = 'stylesheet'; 452 link.type = 'text/css'; 453 head.appendChild(link); 454 window.addEventListener('load', function () { 455 if (window.iziToast) { 456 setTimeout(function () { 457 iziToast.show({ 458 timeout: 8000, 459 message: 'æ¨æ£å¨ä½¿ç¨ç«çæµè§å¨ï¼é¨ååè½å¯è½ä¸æ¯æ' 460 }); 461 }, 3800); 462 } 463 }, false) 464} 465 466//Tab书ç¾é¡µ 467$(function () { 468 $(".mark .tab .tab-item").click(function () { 469 $(this).addClass("active").siblings().removeClass("active"); 470 $(".products .mainCont").eq($(this).index()).css("display", "flex").siblings().css("display", "none"); 471 }) 472}) 473 474//设置 475$(function () { 476 $(".set .tabs .tab-items").click(function () { 477 $(this).addClass("actives").siblings().removeClass("actives"); 478 $(".productss .mainConts").eq($(this).index()).css("display", "flex").siblings().css("display", "none"); 479 }) 480}) 481 482//è¾å ¥æ¡ä¸ºç©ºæ¶é»æ¢è·³è½¬ 483$(window).keydown(function (e) { 484 var key = e.which || e.keyCode; 485 if (key.toString() == "13") { 486 if ($(".wd").val() == "") { 487 return false; 488 } 489 } 490}); 491 492//ç¹å»æç´¢æé® 493$(".sou-button").click(function () { 494 if ($("body").attr("class") === "onsearch") { 495 if ($(".wd").val() != "") { 496 $("#search-submit").click(); 497 } 498 } 499}); 500 501$(window).mousedown(function (event) { 502 if (event.button == 1) { 503 $("#time_text").click(); 504 } 505}); 506 507//æ§å¶å°è¾åº 508var styleTitle1 = ` 509font-size: 20px; 510font-weight: 600; 511color: rgb(244,167,89); 512` 513var styleTitle2 = ` 514font-size:12px; 515color: rgb(244,167,89); 516` 517var styleContent = ` 518color: rgb(30,152,255); 519` 520var title1 = 'NOISE导èª' 521var title2 = ` 522 _____ __ __ _______ ____ __ 523|_ _| \\/ |/ ____\\ \\ / /\\ \\ / / 524 | | | \\ / | (___ \\ \\_/ / \\ \\_/ / 525 | | | |\\/| |\\___ \\ \\ / \\ / 526 _| |_| | | |____) | | | | | 527|_____|_| |_|_____/ |_| |_| 528` 529var content = ` 530ç æ¬ å·ï¼NOISE导èª-轻快ç 531æ´æ°æ¥æï¼2026-04-28 532 533Github: https://github.com/imsyy/Snavigation 534` 535console.log(`%c${title1} %c${title2} 536%c${content}`, styleTitle1, styleTitle2, styleContent)
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.