%
Metalwar Radio
🔴 LIVE ON AIR
24/7 Web Radio
...
Volume: 70%
Metalwar Radio
(function () { const POSITION_KEY = "mwPlayerPosition_v12"; const MINIMIZED_KEY = "mwPlayerMinimized_v1"; let mwTrackWatcherReady = false; let mwNudgeTimer = null; let mwMiniPopupTimer = null; let mwScrollTimeoutTimer = null; let mobileOffsetX = 0; let mobileOffsetY = 0; function isMobile() { return window.matchMedia("(max-width: 767px)").matches; } function isDesktopFrontPage() { return document.body.classList.contains("home") && !isMobile(); } function shouldShowPlayerByBody() { const body = document.body; if (body.classList.contains("home")) return true; return ( body.classList.contains("single") || body.classList.contains("blog") || body.classList.contains("archive") || body.classList.contains("category") ); } function clamp(value, min, max) { return Math.min(Math.max(value, min), max); } function getShell() { return document.getElementById("mw-persistent-player-shell"); } function updateHeightVariable() { if (isMobile()) return; const shell = getShell(); if (shell && isDesktopFrontPage()) { shell.style.setProperty('--mw-player-height', shell.offsetHeight + 'px'); } } function getDefaultPosition(shell) { if (isDesktopFrontPage()) return null; const playerWidth = 340; return { left: Math.max(8, window.innerWidth - playerWidth - 24), top: 140 }; } function savePosition(left, top, isDetached = false) { if (isDesktopFrontPage() && !isDetached) { localStorage.setItem(POSITION_KEY, JSON.stringify({ isDetached, mobX: mobileOffsetX, mobY: mobileOffsetY })); } else { localStorage.setItem(POSITION_KEY, JSON.stringify({ left, top, isDetached, mobX: mobileOffsetX, mobY: mobileOffsetY })); } } function loadPosition() { try { return JSON.parse(localStorage.getItem(POSITION_KEY)); } catch (e) { return null; } } function applyPosition(shell, left, top, forceDetached = false) { const minimized = shell.classList.contains("is-minimized"); if (isMobile()) { shell.style.removeProperty('left'); shell.style.removeProperty('right'); shell.style.removeProperty('top'); const initialTop = 100; const currentHeight = minimized ? 100 : 330; const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0, 400); let currentTopAbs = initialTop + mobileOffsetY; const maxAllowedTopAbs = Math.max(10, vh - currentHeight - 16); if (currentTopAbs > maxAllowedTopAbs) { mobileOffsetY = maxAllowedTopAbs - initialTop; currentTopAbs = initialTop + mobileOffsetY; } if (currentTopAbs < 10) { mobileOffsetY = 10 - initialTop; } const currentWidth = minimized ? 100 : (window.innerWidth - 16); if (minimized) { const initialLeft = window.innerWidth - currentWidth - 8; let currentLeftAbs = initialLeft + mobileOffsetX; const maxAllowedLeftAbs = window.innerWidth - currentWidth - 8; const minAllowedLeftAbs = 8; if (currentLeftAbs > maxAllowedLeftAbs) { mobileOffsetX = maxAllowedLeftAbs - initialLeft; } if (currentLeftAbs < minAllowedLeftAbs) { mobileOffsetX = minAllowedLeftAbs - initialLeft; } } else { mobileOffsetX = 0; } shell.style.transform = `translate(${mobileOffsetX}px, ${mobileOffsetY}px)`; shell.classList.add('mw-ready'); return; } if (isDesktopFrontPage() && !shell.classList.contains('mw-detached') && !forceDetached) { shell.style.removeProperty('left'); shell.style.removeProperty('top'); shell.style.removeProperty('right'); shell.classList.add('mw-ready'); return; } shell.style.transform = "none"; const playerHeight = minimized ? 42 : 330; const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0, 400); const minTop = 40; const maxTop = Math.max(minTop, vh - playerHeight - 16); const safeTop = clamp(top, minTop, maxTop); const computedWidth = shell.classList.contains('mw-detached') ? 340 : 280; const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0, 320); const minLeft = 8; const maxLeft = Math.max(minLeft, vw - computedWidth - 8); const safeLeft = clamp(left, minLeft, maxLeft); if (isDesktopFrontPage()) { if (forceDetached || shell.classList.contains('mw-detached')) { shell.classList.add('mw-detached'); shell.style.setProperty('--mw-custom-left', safeLeft + 'px'); shell.style.setProperty('--mw-custom-top', safeTop + 'px'); } } else { shell.style.left = safeLeft + "px"; shell.style.right = "auto"; shell.style.top = safeTop + "px"; } shell.classList.add('mw-ready'); } function applySavedOrDefaultPosition() { const shell = getShell(); if (!shell) return; const saved = loadPosition(); if (isDesktopFrontPage() && (!saved || !saved.isDetached)) { localStorage.setItem(MINIMIZED_KEY, "0"); shell.classList.remove("is-minimized"); } if (isMobile()) { shell.classList.remove('mw-detached'); if (saved && typeof saved.mobX === "number" && typeof saved.mobY === "number") { mobileOffsetX = saved.mobX; mobileOffsetY = saved.mobY; } else { mobileOffsetX = 0; mobileOffsetY = 0; } applyPosition(shell); return; } updateHeightVariable(); if (saved && typeof saved.left === "number" && typeof saved.top === "number") { applyPosition(shell, saved.left, saved.top, saved.isDetached); applyMinimizedState(); return; } if (isDesktopFrontPage()) { applyMinimizedState(); } const defaults = getDefaultPosition(shell); if (defaults) { applyPosition(shell, defaults.left, defaults.top); } else { shell.classList.remove('mw-detached'); shell.style.removeProperty('--mw-custom-left'); shell.style.removeProperty('--mw-custom-top'); applyPosition(shell); } } function resetPlayerPosition() { const shell = getShell(); if (!shell) return; shell.classList.remove('mw-ready'); localStorage.removeItem(POSITION_KEY); mobileOffsetX = 0; mobileOffsetY = 0; if (isMobile()) { if (shell.classList.contains("is-minimized")) { const currentWidth = 100; const targetLeft = Math.max(8, window.innerWidth - currentWidth - 8); const initialLeft = window.innerWidth - currentWidth - 8; mobileOffsetX = targetLeft - initialLeft; } applyPosition(shell); return; } if (isDesktopFrontPage()) { localStorage.setItem(MINIMIZED_KEY, "0"); applyMinimizedState(); shell.classList.remove('mw-detached'); shell.style.removeProperty('left'); shell.style.removeProperty('top'); shell.style.removeProperty('right'); shell.style.removeProperty('--mw-custom-left'); shell.style.removeProperty('--mw-custom-top'); setTimeout(() => { updateHeightVariable(); applyPosition(shell); }, 50); } else { shell.style.removeProperty('--mw-custom-left'); shell.style.removeProperty('--mw-custom-top'); const defaults = getDefaultPosition(shell); if (defaults) applyPosition(shell, defaults.left, defaults.top); } } function showNudge(text) { const shell = getShell(); const nudge = document.getElementById("mw-player-nudge"); const title = document.getElementById("mw-nudge-title"); if (!shell || !nudge || !title || !isMobile() || !shell.classList.contains("is-minimized")) return; title.textContent = text; nudge.classList.add("show"); clearTimeout(mwNudgeTimer); mwNudgeTimer = setTimeout(() => nudge.classList.remove("show"), 1000); } function watchTrackChange() { if (mwTrackWatcherReady) return; const titleEl = document.getElementById("rbcloud_np_t13673"); const artistEl = document.getElementById("rbcloud_np_a13673"); if (!titleEl || !artistEl) return; let lastTitle = titleEl.textContent.trim(); let firstValidTitleSeen = false; function checkAndTriggerTicker(element) { // Καθαρίζουμε εντελώς για να μετρήσουμε το "αληθινό" inline μέγεθος element.classList.remove("mw-run-ticker", "mw-has-ticker"); setTimeout(() => { const parentWidth = element.parentElement?.getBoundingClientRect().width || 0; const elementWidth = element.scrollWidth; // Μαρκάρουμε ότι το στοιχείο υποστηρίζει hover-scroll element.classList.add("mw-has-ticker"); // Αν ξεπερνάει τα όρια του container, ενεργοποιούμε το αυτόματο marquee if (elementWidth > parentWidth && parentWidth > 0) { element.classList.add("mw-run-ticker"); } }, 300); } // Σωστό Hover trigger δεμένο με pointer events const textContainer = document.querySelector(".mw-nowplaying-text"); if (textContainer && !textContainer.dataset.mwHoverReady) { textContainer.addEventListener("pointerenter", () => { titleEl.classList.add("mw-run-ticker"); artistEl.classList.add("mw-run-ticker"); }); textContainer.addEventListener("pointerleave", () => { checkAndTriggerTicker(titleEl); checkAndTriggerTicker(artistEl); }); textContainer.dataset.mwHoverReady = "1"; } const observer = new MutationObserver(() => { const currentTitle = titleEl.textContent.trim(); if (!currentTitle || currentTitle === "...") return; setTimeout(() => { checkAndTriggerTicker(titleEl); checkAndTriggerTicker(artistEl); }, 1500); if (!firstValidTitleSeen) { firstValidTitleSeen = true; lastTitle = currentTitle; return; } if (currentTitle !== lastTitle) { lastTitle = currentTitle; showNudge("New track playing"); } }); observer.observe(titleEl, { childList: true, characterData: true, subtree: true }); observer.observe(artistEl, { childList: true, characterData: true, subtree: true }); setTimeout(() => { updateHeightVariable(); checkAndTriggerTicker(titleEl); checkAndTriggerTicker(artistEl); }, 2000); window.addEventListener("resize", () => { checkAndTriggerTicker(titleEl); checkAndTriggerTicker(artistEl); }); mwTrackWatcherReady = true; } function applyMinimizedState() { const shell = getShell(); const btn = document.getElementById("mw-player-minimize"); if (!shell || !btn) return; const isDetached = shell.classList.contains('mw-detached'); const minimized = (isDesktopFrontPage() && !isDetached) ? false : (localStorage.getItem(MINIMIZED_KEY) === "1"); shell.classList.toggle("is-minimized", minimized); btn.textContent = minimized ? "+" : "—"; setTimeout(() => { updateHeightVariable(); const rect = shell.getBoundingClientRect(); applyPosition(shell, rect.left, rect.top); }, 50); } function toggleMinimizedState() { const shell = getShell(); if (shell) shell.classList.remove('mw-ready'); const minimized = localStorage.getItem(MINIMIZED_KEY) === "1"; localStorage.setItem(MINIMIZED_KEY, minimized ? "0" : "1"); applyMinimizedState(); setTimeout(() => { if (!shell) return; const isDetached = shell.classList.contains('mw-detached'); const rect = shell.getBoundingClientRect(); savePosition(rect.left, rect.top, isDetached); }, 60); } function initMobileScrollBehavior() { const shell = getShell(); if (!shell) return; window.addEventListener("scroll", function () { if (!isMobile()) return; shell.classList.add("mw-scroll-hidden"); clearTimeout(mwScrollTimeoutTimer); mwScrollTimeoutTimer = setTimeout(() => { shell.classList.remove("mw-scroll-hidden"); }, 1500); }, { passive: true }); } function updateOnAirStatus() { const onAir = document.getElementById("onair"); const autoDj = document.getElementById("mw-autodj-label"); if (!onAir || !autoDj) return; autoDj.style.display = window.getComputedStyle(onAir).display !== "none" ? "none" : "inline-block"; } function initOnAirObserver() { const onAir = document.getElementById("onair"); if (!onAir || onAir.dataset.mwObserverReady) return; const observer = new MutationObserver(updateOnAirStatus); observer.observe(onAir, { attributes: true, attributeFilter: ["style", "class", "hidden"] }); if (onAir.parentElement) observer.observe(onAir.parentElement, { attributes: true, childList: true, subtree: true }); onAir.dataset.mwObserverReady = "1"; updateOnAirStatus(); } function initDragTooltip() { const shell = getShell(); if (!shell || isMobile()) return; let tooltip = document.getElementById("mw-drag-tooltip"); if (!tooltip) { tooltip = document.createElement("div"); tooltip.id = "mw-drag-tooltip"; tooltip.textContent = "Drag it out!"; document.body.appendChild(tooltip); } shell.addEventListener("pointermove", (e) => { if (isDesktopFrontPage() && !shell.classList.contains("mw-detached") && !shell.classList.contains("mw-is-dragging")) { const excludedTags = e.target.closest('audio, input, button, a, img'); if (!excludedTags) { tooltip.classList.add("show"); tooltip.style.left = e.clientX + "px"; tooltip.style.top = e.clientY + "px"; return; } } tooltip.classList.remove("show"); }); shell.addEventListener("pointerleave", () => tooltip.classList.remove("show")); shell.addEventListener("pointerdown", () => tooltip.classList.remove("show")); } function initPlayerCore() { const shell = getShell(); const audio = document.getElementById("player-post-page"); const volumeText = document.getElementById("volumePercentage2"); const resetBtn = document.getElementById("mw-player-reset"); const minimizeBtn = document.getElementById("mw-player-minimize"); const mobileVolume = document.getElementById("mw-mobile-volume"); const miniPlayBtn = document.getElementById("mw-mobile-mini-play"); const miniVolSlider = document.getElementById("mw-mobile-mini-vol"); const miniVolPopup = document.getElementById("mw-mobile-mini-vol-popup"); if (!shell || !audio || !volumeText || !resetBtn || !minimizeBtn) return; if (!shouldShowPlayerByBody()) { shell.style.display = "none"; return; } shell.style.display = "block"; const volumeKey = "audioVolume_" + audio.id; const savedVolume = localStorage.getItem(volumeKey); if (!audio.dataset.mwInitialized) { audio.volume = savedVolume !== null ? parseFloat(savedVolume) : 0.7; const updateVolumeText = () => { const volPercent = Math.round(audio.volume * 100); volumeText.textContent = "Volume: " + volPercent + "%"; if (mobileVolume) mobileVolume.value = volPercent; if (miniVolSlider) miniVolSlider.value = volPercent; if (miniVolPopup) miniVolPopup.textContent = volPercent + "%"; }; updateVolumeText(); applyMinimizedState(); if (mobileVolume) mobileVolume.addEventListener("input", function() { audio.volume = parseInt(this.value, 10) / 100; }); if (miniVolSlider) { miniVolSlider.addEventListener("input", function() { audio.volume = parseInt(this.value, 10) / 100; if (miniVolPopup) miniVolPopup.classList.add("mw-popup-visible"); clearTimeout(mwMiniPopupTimer); mwMiniPopupTimer = setTimeout(() => { if (miniVolPopup) miniVolPopup.classList.remove("mw-popup-visible"); }, 2000); }); miniVolSlider.addEventListener("pointerdown", (e) => e.stopPropagation()); } if (miniPlayBtn) { miniPlayBtn.addEventListener("click", function(e) { e.stopPropagation(); if (audio.paused) { audio.play(); } else { audio.pause(); } }); miniPlayBtn.addEventListener("pointerdown", (e) => e.stopPropagation()); } audio.addEventListener("play", () => { if (miniPlayBtn) miniPlayBtn.classList.add("is-playing"); }); audio.addEventListener("pause", () => { if (miniPlayBtn) miniPlayBtn.classList.remove("is-playing"); }); audio.addEventListener("volumechange", () => { localStorage.setItem(volumeKey, String(audio.volume)); updateVolumeText(); }); resetBtn.addEventListener("click", resetPlayerPosition); minimizeBtn.addEventListener("click", toggleMinimizedState); audio.dataset.mwInitialized = "1"; } else { applyMinimizedState(); } applySavedOrDefaultPosition(); initOnAirObserver(); watchTrackChange(); initMobileScrollBehavior(); } function initDrag() { const shell = getShell(); if (!shell || shell.dataset.mwDragReady) return; let isDragging = false; let startX = 0, startY = 0, startLeft = 0, startTop = 0; let startMobX = 0, startMobY = 0; function onPointerMove(e) { if (!isDragging) return; if (e.cancelable) { e.preventDefault(); } if (isMobile()) { mobileOffsetX = startMobX + (e.clientX - startX); mobileOffsetY = startMobY + (e.clientY - startY); applyPosition(shell); return; } if (isDesktopFrontPage() && !shell.classList.contains('mw-detached')) { shell.classList.add('mw-detached'); } applyPosition(shell, startLeft + (e.clientX - startX), startTop + (e.clientY - startY)); } function onPointerUp(e) { if (!isDragging) return; if (shell.releasePointerCapture && e?.pointerId) { try { shell.releasePointerCapture(e.pointerId); } catch (err) {} } isDragging = false; shell.classList.remove("mw-is-dragging"); const rect = shell.getBoundingClientRect(); if (!isMobile() && isDesktopFrontPage()) { if (rect.left <= 8) { resetPlayerPosition(); document.removeEventListener("pointermove", onPointerMove); document.removeEventListener("pointerup", onPointerUp); document.removeEventListener("pointercancel", onPointerUp); return; } } const isDetached = shell.classList.contains('mw-detached'); savePosition(rect.left, rect.top, isDetached); document.removeEventListener("pointermove", onPointerMove); document.removeEventListener("pointerup", onPointerUp); document.removeEventListener("pointercancel", onPointerUp); applyMinimizedState(); } shell.addEventListener("pointerdown", function (e) { if (e.button !== undefined && e.button !== 0) return; const excludedTags = e.target.closest('audio, input, button, a, img, #mw-mobile-mini-vol-wrap'); if (excludedTags) return; if (e.cancelable) { e.preventDefault(); } if (shell.setPointerCapture) shell.setPointerCapture(e.pointerId); isDragging = true; shell.classList.add("mw-is-dragging"); updateHeightVariable(); const rect = shell.getBoundingClientRect(); startX = e.clientX; startY = e.clientY; if (isMobile()) { startMobX = mobileOffsetX; startMobY = mobileOffsetY; applyPosition(shell); } else { startLeft = rect.left; startTop = rect.top; applyPosition(shell, startLeft, startTop); } document.addEventListener("pointermove", onPointerMove, { passive: false }); document.addEventListener("pointerup", onPointerUp); document.addEventListener("pointercancel", onPointerUp); }); shell.dataset.mwDragReady = "1"; } function keepInsideViewport() { const shell = getShell(); if (!shell || shell.style.display === "none") return; if (isMobile()) { applyPosition(shell); return; } const rect = shell.getBoundingClientRect(); if (isDesktopFrontPage() && !shell.classList.contains('mw-detached')) { return; } applyPosition(shell, rect.left, rect.top); } function runPlayer() { initPlayerCore(); initDrag(); initDragTooltip(); } document.getElementById("mw-player-minimize").addEventListener("click", toggleMinimizedState); document.mw_init_scroll = initMobileScrollBehavior; document.addEventListener("DOMContentLoaded", runPlayer); window.addEventListener("resize", keepInsideViewport); window.MW_ReInit_Player = runPlayer; })();
Skip to content
  • Home
  • Latest News
  • Live Radio
  • Live Events
    • Upcoming Events
    • Live Report
  • Home
  • Latest News
  • Live Radio
  • Live Events
    • Upcoming Events
    • Live Report
metalwar.gr website Logo
  • Reviews
  • interviews
  • Weekly WarSword Crossed
  • Contact Us
  • Reviews
  • interviews
  • Weekly WarSword Crossed
  • Contact Us
metalwar.gr website Logo

Reaper Entertainment

  1. Home>
  2. News>
  3. Reaper Entertainment
Logo for Weekly War by MetalWar.gr featuring a silver metal horns hand sign on a black background
Weekly War

Weekly War: New releases 24/4/2026

Friday, April 24, 2026 — let’s take a look at this week’s most important releases!At…

Comments Off on Weekly War: New releases 24/4/2026
April 24, 2026
Read more about the article Weekly War: New releases 3/4/2026
Weekly War

Weekly War: New releases 3/4/2026

Friday, April 3, 2026 — and together we take a look at the most important…

Comments Off on Weekly War: New releases 3/4/2026
April 3, 2026
Read more about the article Weekly War: New releases 6-3-2026
Weekly War

Weekly War: New releases 6-3-2026

Friday, March 6, 2026, and together we’ll look at the most important releases of the…

Comments Off on Weekly War: New releases 6-3-2026
March 6, 2026
Read more about the article PARASITE INC. drop new single “Homeland”
Latest News

PARASITE INC. drop new single “Homeland”

Germans PARASITE INC. reveal their cover of "Homeland", the first single from the Reaper Entertainment's upcoming tribute sampler "A…

Comments Off on PARASITE INC. drop new single “Homeland”
September 29, 2025
Read more about the article BEFORE THE DAWN release new album “Cold Flare Eternal” & music video for “Stronghold”
Latest News

BEFORE THE DAWN release new album “Cold Flare Eternal” & music video for “Stronghold”

"Cold Flare Eternal", the new full-length from Finnish Melodic Death Metal veterans BEFORE THE DAWN,…

Comments Off on BEFORE THE DAWN release new album “Cold Flare Eternal” & music video for “Stronghold”
September 6, 2025
Read more about the article Weekly War – new releases 15/8/2025
Weekly War

Weekly War – new releases 15/8/2025

Friday, August 15, 2025, and together through this emotion, we will see the most important…

Comments Off on Weekly War – new releases 15/8/2025
August 15, 2025
Read more about the article BEFORE THE DAWN drop new single “Shockwave”
Latest News

BEFORE THE DAWN drop new single “Shockwave”

Finnish Melodic Death Metal powerhouse BEFORE THE DAWN are pleased to unveil their newest single,…

Comments Off on BEFORE THE DAWN drop new single “Shockwave”
August 2, 2025
Read more about the article SUOTANA unveil new single “The Crowned King of Ancient Forest”
Latest News

SUOTANA unveil new single “The Crowned King of Ancient Forest”

As the path of "OUNAS II" unfolds, Finnish Melodic Death Metal visionaries SUOTANA unveil the…

Comments Off on SUOTANA unveil new single “The Crowned King of Ancient Forest”
July 28, 2025
Read more about the article Weekly War: New releases 18/7/2025
Weekly War

Weekly War: New releases 18/7/2025

Friday, July 18, 2025 and together we will see the most important releases of the…

Comments Off on Weekly War: New releases 18/7/2025
July 18, 2025
Read more about the article WARMEN drop official video for new single “Nine Lives”
Latest News

WARMEN drop official video for new single “Nine Lives”

Following their acclaimed comeback "Here For None" (2023), WARMEN turns the page with "Band Of…

Comments Off on WARMEN drop official video for new single “Nine Lives”
July 4, 2025
🔴 LIVE ON AIR

Quotes by Legendary Musicians

"We’re all born naked, and the rest is drag."

- Freddie Mercury (Queen) -


Follow Us

  • Bluesky
  • Facebook
  • TikTok
  • YouTube
  • Instagram
  • X

Internet Radio

Metalwar.gr

New Shows available on Spotify

Listen again and again on Mixcloud


Vinylstore.gr only deals with one genre of music: Real music!
sirens records vinyls


Recent Posts

  • Bring Me The Horizon: New Single “Dehumanized” Sets the Stage for Count Your Blessings |…
  • I PREVAIL Partner With Amira Elfeky For Explosive Collab Track “Paradise”
  • LOST RELICS release new single, “Saint Catharines”
  • GOD UNKNOWN unveil their debut single “Embraced By The Moonlight” from upcoming album
  • Weekly War: New metal releases 26/6/2026

</Metal_Priest>

</Spyros m.A.d>

METALWAR.GR © 2025

metalwar.gr website Logo
🔴 LIVE ON AIR
Facebook Instagram X-twitter Youtube Mixcloud Spotify

METALWAR.GR © 2025

We value your privacy

We use cookies to improve your experience. Manage your preferences below.

Cookie Settings