{"id":947,"date":"2025-07-02T09:12:26","date_gmt":"2025-07-02T07:12:26","guid":{"rendered":"https:\/\/kusch-baiersdorf.de\/?page_id=947"},"modified":"2026-09-30T09:17:11","modified_gmt":"2026-09-30T07:17:11","slug":"radio","status":"publish","type":"page","link":"https:\/\/kusch-baiersdorf.de\/en\/radio\/","title":{"rendered":"KuschFunk"},"content":{"rendered":"<p class=\"wp-block-paragraph\">We will also offer individual events as radio streams. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here you have the opportunity to listen to our KuschFunk.<\/p>\n\n\n\n<div id=\"kuschfunk-player\">\n\n  <div class=\"kf-info\">\n\n    <img decoding=\"async\" id=\"kf-cover\" src=\"\" alt=\"Aktuelles Albumcover\" class=\"kf-cover\">\n\n    <div class=\"kf-text\">\n      <div id=\"kf-status\" class=\"kf-status\">KuSchFunk<\/div>\n      <div id=\"kf-title\" class=\"kf-title\">Status wird geladen \u2026<\/div>\n      <div id=\"kf-artist\" class=\"kf-artist\"><\/div>\n    <\/div>\n\n  <\/div>\n\n  <audio id=\"kf-audio\" controls=\"\" preload=\"none\" src=\"https:\/\/radio.kusch-baiersdorf.de\/listen\/kuschfunk\/radio.mp3\">\n  <\/audio>\n\n<\/div>\n\n\n<style>\n\n\/* ================================\n   KuSchFunk Player\n   ================================ *\/\n\n#kuschfunk-player {\n  box-sizing: border-box;\n  width: 100%;\n  max-width: 100%;\n  padding: 16px;\n\n  background: #20232d;\n  border-radius: 5px;\n\n  color: #ffffff;\n  font-family: inherit;\n}\n\n\n\/* ================================\n   Titel \/ Cover Bereich\n   ================================ *\/\n\n#kuschfunk-player .kf-info {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n\n  min-width: 0;\n  margin-bottom: 14px;\n}\n\n\n#kuschfunk-player .kf-cover {\n  display: none;\n\n  width: 90px;\n  height: 90px;\n  flex: 0 0 90px;\n\n  object-fit: contain;\n  object-position: center;\n\n  background: #171920;\n  border-radius: 4px;\n}\n\n\n#kuschfunk-player .kf-text {\n  min-width: 0;\n  flex: 1;\n}\n\n\n\/* ================================\n   Status\n   ================================ *\/\n\n#kuschfunk-player .kf-status {\n  margin-bottom: 5px;\n\n  font-size: 0.8rem;\n  opacity: 0.7;\n}\n\n\n\/* LIVE Badge *\/\n\n#kuschfunk-player .kf-status.is-live {\n  display: inline-flex;\n  align-items: center;\n  gap: 7px;\n\n  width: fit-content;\n\n  margin-bottom: 7px;\n  padding: 4px 9px;\n\n  border-radius: 5px;\n\n  background: #e53935;\n  color: #ffffff;\n\n  opacity: 1;\n\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 0.04em;\n}\n\n\n\/* Pulsierender Punkt *\/\n\n#kuschfunk-player .kf-status.is-live::before {\n  content: \"\";\n\n  width: 8px;\n  height: 8px;\n\n  border-radius: 50%;\n  background: #ffffff;\n\n  animation: kf-live-pulse 1.5s ease-in-out infinite;\n}\n\n\n@keyframes kf-live-pulse {\n\n  0%,\n  100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n\n  50% {\n    opacity: 0.35;\n    transform: scale(0.75);\n  }\n\n}\n\n\n\/* Animation f\u00fcr Nutzer deaktivieren,\n   die reduzierte Bewegung eingestellt haben *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  #kuschfunk-player .kf-status.is-live::before {\n    animation: none;\n  }\n\n}\n\n\n\/* ================================\n   Titel \/ Interpret\n   ================================ *\/\n\n#kuschfunk-player .kf-title {\n  font-size: 1.1rem;\n  font-weight: 600;\n  line-height: 1.25;\n\n  overflow-wrap: anywhere;\n}\n\n\n#kuschfunk-player .kf-artist {\n  margin-top: 4px;\n\n  font-size: 0.95rem;\n  line-height: 1.25;\n\n  opacity: 0.8;\n\n  overflow-wrap: anywhere;\n}\n\n\n\/* ================================\n   Audio Player\n   ================================ *\/\n\n#kuschfunk-player audio {\n  display: block;\n\n  width: 100%;\n  max-width: 100%;\n}\n\n\n\/* ================================\n   Smartphone\n   ================================ *\/\n\n@media (max-width: 480px) {\n\n  #kuschfunk-player {\n    padding: 12px;\n  }\n\n  #kuschfunk-player .kf-info {\n    gap: 10px;\n  }\n\n  #kuschfunk-player .kf-cover {\n    width: 70px;\n    height: 70px;\n    flex-basis: 70px;\n  }\n\n  #kuschfunk-player .kf-title {\n    font-size: 1rem;\n  }\n\n  #kuschfunk-player .kf-artist {\n    font-size: 0.9rem;\n  }\n\n}\n\n<\/style>\n\n\n<script>\n\n(function () {\n\n  \/* ================================\n     Einstellungen\n     ================================ *\/\n\n  const apiUrl =\n    'https:\/\/radio.kusch-baiersdorf.de\/api\/nowplaying\/kuschfunk';\n\n\n  \/* ================================\n     Elemente\n     ================================ *\/\n\n  const cover =\n    document.getElementById('kf-cover');\n\n  const status =\n    document.getElementById('kf-status');\n\n  const title =\n    document.getElementById('kf-title');\n\n  const artist =\n    document.getElementById('kf-artist');\n\n\n  \/* ================================\n     Status aktualisieren\n     ================================ *\/\n\n  async function updateKuSchFunk() {\n\n    try {\n\n      const response = await fetch(\n        apiUrl,\n        {\n          cache: 'no-store'\n        }\n      );\n\n\n      if (!response.ok) {\n        throw new Error(\n          'HTTP ' + response.status\n        );\n      }\n\n\n      const data =\n        await response.json();\n\n\n      const isLive =\n        data.live &&\n        data.live.is_live === true;\n\n\n      \/* ============================\n         LIVE\n         ============================ *\/\n\n      if (isLive) {\n\n        const song =\n          data.now_playing &&\n          data.now_playing.song\n            ? data.now_playing.song\n            : {};\n\n\n        \/* Live Badge *\/\n\n        status.textContent = 'LIVE';\n\n        status.classList.add(\n          'is-live'\n        );\n\n\n        \/* Titel *\/\n\n        title.textContent =\n          song.title ||\n          'KuSchFunk';\n\n\n        \/* Interpret *\/\n\n        artist.textContent =\n          song.artist ||\n          '';\n\n\n        \/* Cover *\/\n\n        if (song.art) {\n\n          cover.src =\n            song.art;\n\n          cover.style.display =\n            'block';\n\n        } else {\n\n          cover.removeAttribute(\n            'src'\n          );\n\n          cover.style.display =\n            'none';\n\n        }\n\n\n      \/* ============================\n         OFFLINE\n         ============================ *\/\n\n      } else {\n\n        status.textContent =\n          'KuSchFunk';\n\n        status.classList.remove(\n          'is-live'\n        );\n\n\n        title.textContent =\n          'Derzeit nicht auf Sendung';\n\n\n        artist.textContent =\n          '';\n\n\n        cover.removeAttribute(\n          'src'\n        );\n\n        cover.style.display =\n          'none';\n\n      }\n\n\n    \/* ==============================\n       API nicht erreichbar\n       ============================== *\/\n\n    } catch (error) {\n\n      status.textContent =\n        'KuSchFunk';\n\n      status.classList.remove(\n        'is-live'\n      );\n\n\n      title.textContent =\n        'Status derzeit nicht verf\u00fcgbar';\n\n\n      artist.textContent =\n        '';\n\n\n      cover.removeAttribute(\n        'src'\n      );\n\n      cover.style.display =\n        'none';\n\n\n      console.error(\n        'KuSchFunk:',\n        error\n      );\n\n    }\n\n  }\n\n\n  \/* ================================\n     Initial laden\n     ================================ *\/\n\n  updateKuSchFunk();\n\n\n  \/* ================================\n     Alle 10 Sekunden aktualisieren\n     ================================ *\/\n\n  setInterval(\n    updateKuSchFunk,\n    10000\n  );\n\n})();\n\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Einzelne Veranstaltungen werden wir auch als Radio-Stream anbieten. Hier habt ihr die M\u00f6glichkeit, in unseren KuschFunk reinzuh\u00f6ren. KuSchFunk Status wird [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":946,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false,"footnotes":""},"class_list":["post-947","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/pages\/947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/comments?post=947"}],"version-history":[{"count":17,"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/pages\/947\/revisions"}],"predecessor-version":[{"id":1591,"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/pages\/947\/revisions\/1591"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/media\/946"}],"wp:attachment":[{"href":"https:\/\/kusch-baiersdorf.de\/en\/wp-json\/wp\/v2\/media?parent=947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}