{"id":7050,"date":"2026-06-05T02:30:28","date_gmt":"2026-06-05T08:30:28","guid":{"rendered":"https:\/\/lynxradionetwork.com\/?page_id=7050"},"modified":"2026-06-05T03:43:15","modified_gmt":"2026-06-05T09:43:15","slug":"network-dashboard","status":"publish","type":"page","link":"https:\/\/lynxradionetwork.com\/index.php\/network-dashboard\/","title":{"rendered":"Network Dashboard"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7050\" class=\"elementor elementor-7050\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a20432f e-flex e-con-boxed e-con e-parent\" data-id=\"a20432f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13b661e elementor-widget elementor-widget-html\" data-id=\"13b661e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"lynxStats\">Loading Lynx Network Statistics...<\/div>\r\n\r\n<script>\r\nconst stations = [\r\n  {name:\"Classic Hits\", url:\"https:\/\/hits-lynxradio.radioca.st\/statistics\"},\r\n  {name:\"Super 70s\", url:\"https:\/\/70s-lynxradio.radioca.st\/statistics\"},\r\n  {name:\"Retro 80s\", url:\"https:\/\/80s-lynxradio.radioca.st\/statistics\"},\r\n  {name:\"Classic Rock\", url:\"https:\/\/rock-lynxradio.radioca.st\/statistics\"},\r\n  {name:\"Disco Classics\", url:\"https:\/\/disco-lynxradio.radioca.st\/statistics\"},\r\n  {name:\"Country Classics\", url:\"https:\/\/country-lynxradio.radioca.st\/statistics\"}\r\n];\r\n\r\nasync function loadStats() {\r\n  let totalListeners = 0;\r\n  let topStation = \"N\/A\";\r\n  let topListeners = 0;\r\n  let cards = \"\";\r\n\r\n  for (const station of stations) {\r\n    try {\r\n      const response = await fetch(station.url);\r\n      const xmlText = await response.text();\r\n      const xml = new DOMParser().parseFromString(xmlText, \"text\/xml\");\r\n\r\n      const current = parseInt(xml.querySelector(\"CURRENTLISTENERS\")?.textContent || \"0\");\r\n      const peak = parseInt(xml.querySelector(\"PEAKLISTENERS\")?.textContent || \"0\");\r\n      const song = xml.querySelector(\"SONGTITLE\")?.textContent || \"Unknown\";\r\n\r\n      totalListeners += current;\r\n\r\n      if (current > topListeners) {\r\n        topListeners = current;\r\n        topStation = station.name;\r\n      }\r\n\r\n      cards += `\r\n        <div class=\"station-card\">\r\n          <div class=\"station-title\">\ud83d\udfe2 ${station.name}<\/div>\r\n          <div class=\"stats-row\">\r\n            <div><span>${current}<\/span><small>Listeners<\/small><\/div>\r\n            <div><span>${peak}<\/span><small>Peak<\/small><\/div>\r\n          <\/div>\r\n          <div class=\"song-title\">${song}<\/div>\r\n        <\/div>\r\n      `;\r\n    } catch (err) {\r\n      cards += `\r\n        <div class=\"station-card\">\r\n          <div class=\"station-title offline\">\ud83d\udd34 ${station.name}<\/div>\r\n          <div class=\"song-title\">Unable to load stats<\/div>\r\n        <\/div>\r\n      `;\r\n    }\r\n  }\r\n\r\n  document.getElementById(\"lynxStats\").innerHTML = `\r\n    <style>\r\n      .lynx-dashboard {\r\n        background:#000;\r\n        color:#fff;\r\n        font-family:Arial,Helvetica,sans-serif;\r\n        width:94%;\r\n        max-width:900px;\r\n        margin:15px auto;\r\n        padding:18px;\r\n        border-radius:18px;\r\n      }\r\n\r\n      .lynx-dashboard h2 {\r\n        color:#FFD700;\r\n        text-align:center;\r\n        font-size:28px;\r\n        margin:0 0 10px;\r\n        line-height:1.2;\r\n      }\r\n\r\n      .subtitle {\r\n        text-align:center;\r\n        color:#FFD700;\r\n        font-size:18px;\r\n        margin-bottom:20px;\r\n        line-height:1.4;\r\n      }\r\n\r\n      .station-card {\r\n        background:#111;\r\n        border:1px solid #222;\r\n        border-radius:14px;\r\n        padding:15px;\r\n        margin-bottom:14px;\r\n      }\r\n\r\n      .station-title {\r\n        color:#FFD700;\r\n        font-size:22px;\r\n        font-weight:bold;\r\n        margin-bottom:12px;\r\n      }\r\n\r\n      .stats-row {\r\n        display:flex;\r\n        gap:12px;\r\n        margin-bottom:12px;\r\n      }\r\n\r\n      .stats-row div {\r\n        flex:1;\r\n        background:#000;\r\n        border-radius:10px;\r\n        padding:10px;\r\n        text-align:center;\r\n      }\r\n\r\n      .stats-row span {\r\n        display:block;\r\n        color:#fff;\r\n        font-size:26px;\r\n        font-weight:bold;\r\n      }\r\n\r\n      .stats-row small {\r\n        color:#FFD700;\r\n        font-size:13px;\r\n      }\r\n\r\n      .song-title {\r\n        color:#fff;\r\n        font-size:18px;\r\n        line-height:1.35;\r\n      }\r\n\r\n      .offline {\r\n        color:#ff6666;\r\n      }\r\n\r\n      .footerbox {\r\n        background:#111;\r\n        margin-top:20px;\r\n        padding:18px;\r\n        border-radius:14px;\r\n        text-align:center;\r\n      }\r\n\r\n      .footerbox .total {\r\n        color:#FFD700;\r\n        font-size:28px;\r\n        font-weight:bold;\r\n      }\r\n\r\n      .footerbox .top {\r\n        margin-top:10px;\r\n        font-size:18px;\r\n      }\r\n\r\n      .footerbox .updated {\r\n        color:#aaa;\r\n        font-size:14px;\r\n        margin-top:12px;\r\n      }\r\n\r\n      @media (max-width:600px) {\r\n        .lynx-dashboard {\r\n          width:92%;\r\n          padding:14px;\r\n        }\r\n\r\n        .lynx-dashboard h2 {\r\n          font-size:25px;\r\n        }\r\n\r\n        .subtitle {\r\n          font-size:17px;\r\n        }\r\n\r\n        .station-title {\r\n          font-size:21px;\r\n        }\r\n\r\n        .song-title {\r\n          font-size:17px;\r\n        }\r\n      }\r\n    <\/style>\r\n\r\n    <div class=\"lynx-dashboard\">\r\n      <h2>\ud83d\udcfb The Lynx Network Live Dashboard<\/h2>\r\n      <div class=\"subtitle\">The Lynx Internet Radio Network Operations Center<\/div>\r\n\r\n      ${cards}\r\n\r\n      <div class=\"footerbox\">\r\n        <div class=\"total\">Total Live Listeners: ${totalListeners}<\/div>\r\n        <div class=\"top\">\ud83c\udfc6 Top Station Right Now:<br>${topStation} \u2014 ${topListeners} listeners<\/div>\r\n        <div class=\"updated\">Last Updated: ${new Date().toLocaleTimeString()}<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  `;\r\n}\r\n\r\nloadStats();\r\nsetInterval(loadStats, 30000);\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Loading Lynx Network Statistics&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-7050","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/pages\/7050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/comments?post=7050"}],"version-history":[{"count":30,"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/pages\/7050\/revisions"}],"predecessor-version":[{"id":7081,"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/pages\/7050\/revisions\/7081"}],"wp:attachment":[{"href":"https:\/\/lynxradionetwork.com\/index.php\/wp-json\/wp\/v2\/media?parent=7050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}