Napoli, ladro di scarpe daI balconi delle case del centro storico. L’allarme degli abitanti. IL VIDEO

SULLO STESSO ARGOMENTO

Ascolta questo articolo ora...
Caricamento in corso...

Napoli. In tempo di crisi anche il furto di un paio di scarpe usate può rappresentare un bottino per i ladri. E’ accaduto qualche sera fa nel centro storico di Napoli e precisamente in via Portanova. Il video allegato a questo pezzo e inviatoci da un lettore ne è la testimonianza. “Vorrei che tutti vedessero quello che mi è accaduto- ci spiega la vittima del furto- per mettere in guardia gli abitati della zona visto che non sono il primo a subire furti del genere di sera e poi perché vorrei che questa persona, probabilmente un cittadino dell’est Europeo, venisse identificato. E’ assurdo che accadano queste cose”. Le immagini della telecamera di video sorveglianza riprende la scena.E’ la sera del 19 aprile scorso, sono le 22,35 , l’uomo, alto e dai capelli scuri e dalla carnagione chiara arriva sotto l’abitazione già armato di una grossa mazza di legno tipo lancia. Si guarda attorno, scruta sul balcone e poi con disinvoltura utilizzando la mazza tira giù dal balcone un paio di scarpe da ginnastica. Poi si allontana per una trentina di secondi, torna si prende le scarpe, una borsa che aveva con se e si allontana lasciando la mazza utilizzata per il furto.

'; } else if (liveInfo.type === 'live_fb') { if (liveInfo.embed_html) html = liveInfo.embed_html; else if (liveInfo.src) html = ''; } liveWrap.innerHTML = html; liveWrap.style.display = 'block'; video.style.visibility = 'hidden'; if (bgVideo) bgVideo.style.visibility = 'hidden'; const t = liveInfo.title || 'Live'; if (title) title.textContent = 'LIVE • ' + t; if (infoTitle) infoTitle.textContent = 'LIVE • ' + t; if (counter) counter.textContent = 'Diretta live'; updateArrows(); } function switchToVideoMode(){ if (currentMode === 'video') return; currentMode = 'video'; clearLiveIframe(); startContentForIndex(idx); updateArrows(); } function switchToLiveMode(type, info){ liveInfo = info || null; if (!liveInfo) return; currentMode = type; log('Switch to live mode:', type, liveInfo); showLiveIframe(); } function updateArrows(){ const arrows = wrap.querySelectorAll('.svlb-vh-arrow-btn'); arrows.forEach(btn=>{ btn.style.display = (currentMode === 'video') ? '' : 'none'; }); } function normalizeUrlKey(u){ if (!u) return ''; try{ const x = new URL(String(u), location.href); x.hash = ''; x.search = ''; // normalizza togliendo query (include correlator, ecc.) const host = (x.host || '').toLowerCase(); let path = x.pathname || ''; // normalizza slash finale if (path.length > 1) path = path.replace(/\/+$/,''); return host + path; }catch(e){ return String(u).split('#')[0].split('?')[0].trim(); } } function extractCloudflareId(u){ if (!u) return ''; const s = String(u); let m = s.match(/cloudflarestream\.com\/([a-f0-9]{32})/i); if (m && m[1]) return m[1].toLowerCase(); m = s.match(/videodelivery\.net\/([a-f0-9]{32})/i); if (m && m[1]) return m[1].toLowerCase(); return ''; } function identityKeyFromUrl(u){ const cf = extractCloudflareId(u); if (cf) return 'cf:' + cf; const n = normalizeUrlKey(u); return n ? ('url:' + n) : ''; } let EXCLUDED_SET = null; function collectExcludedUrls(){ const set = new Set(); if (!EXCLUDE_CURRENT) return set; try { // 1) Video + Source (src, currentSrc, data-src) const vids = document.querySelectorAll('video'); vids.forEach(v=>{ if (v === video || v === bgVideo) return; const candidates = []; if (v.currentSrc) candidates.push(v.currentSrc); if (v.src) candidates.push(v.src); if (v.getAttribute('data-src')) candidates.push(v.getAttribute('data-src')); const sources = v.querySelectorAll('source'); sources.forEach(s=>{ if (s.src) candidates.push(s.src); if (s.getAttribute('data-src')) candidates.push(s.getAttribute('data-src')); }); candidates.forEach(u=>{ const k = identityKeyFromUrl(u); if (k) set.add(k); }); }); // 2) Iframe embed (Cloudflare/YT ecc.) document.querySelectorAll('iframe').forEach(fr=>{ const src = fr.getAttribute('src') || ''; const k = identityKeyFromUrl(src); if (k) set.add(k); }); // 3) Data attributes “id stream” (se il tema li usa) const attrSels = ['[data-cloudflare-stream-id]','[data-cf-stream-id]','[data-stream-id]','[data-cloudflare-id]']; attrSels.forEach(sel=>{ document.querySelectorAll(sel).forEach(el=>{ const id = el.getAttribute('data-cloudflare-stream-id') || el.getAttribute('data-cf-stream-id') || el.getAttribute('data-stream-id') || el.getAttribute('data-cloudflare-id') || ''; if (id && /^[a-f0-9]{32}$/i.test(id)) set.add('cf:' + id.toLowerCase()); }); }); if (DEBUG_EN) log('EXCLUDE_CURRENT keys:', Array.from(set)); } catch(e){ log('Errore collectExcludedUrls', e); } return set; } function isItemExcluded(it){ if (!EXCLUDE_CURRENT || !EXCLUDED_SET) return false; if (!it || !it.url) return false; const key = identityKeyFromUrl(it.url); return key ? EXCLUDED_SET.has(key) : false; } function startContentForIndex(newIndex){ if (currentMode !== 'video') return; let attempts = 0; let selectedIndex = null; let selectedItem = null; let tIndex = newIndex; while (attempts < ITEMS.length) { const i = (tIndex + ITEMS.length) % ITEMS.length; const candidate = ITEMS[i]; if (candidate && !isItemExcluded(candidate)) { selectedIndex = i; selectedItem = candidate; break; } tIndex++; attempts++; } if (selectedItem == null) { log('Nessun video disponibile (tutti esclusi o lista vuota).'); return; } idx = selectedIndex; const it = selectedItem; if (prerollTimer) { clearTimeout(prerollTimer); prerollTimer = null; } adRequestedCycle = false; adsStartedFlag = false; pauseRequestedByIMA = false; showAdLoading(false); stopAdTimer(); clearLiveIframe(); unloadContent(); try { video.muted = (!userInteracted) ? true : desiredMuted; if (!video.muted) video.volume = 1; setVideoSource(video, it.url, 'main'); video.currentTime = 0; video.load(); } catch(e){ log('Errore impostazione nuovo video', e); } if (bgVideo) { try { bgVideo.muted = (!userInteracted) ? true : desiredMuted; if (!bgVideo.muted) bgVideo.volume = 1; // se SINGLE_ONLY è true non dovresti avere bgVideo, ma check extra: setVideoSource(bgVideo, it.url, 'bg'); bgVideo.currentTime = 0; bgVideo.load(); } catch(e){ log('Errore impostazione nuovo bgVideo', e); } } updateUIForIndex(idx); log('startContentForIndex indice', idx, 'URL', it.url); const p = video.play(); if (p && p.catch) p.catch(err => log('Autoplay bloccato o richiede gesto utente', err)); if (bgVideo) { const pb = bgVideo.play(); if (pb && pb.catch) pb.catch(()=>{}); } if (btnWatch) { const link = it.post_url || ''; btnWatch.disabled = !link; btnWatch.dataset.href = link; } if (infoReadBtn) { const link = it.post_url || ''; infoReadBtn.disabled = !link; infoReadBtn.dataset.href = link; } currentProviderIndex = 0; currentProvider = rotationList[0] || 'google'; } video.addEventListener('play', ()=>{ if (currentMode !== 'video') return; if (adRequestedCycle) return; // sospensione dinamica VAST: non richiedere preroll if (adsSuspended) { adsSkippedDueToSuspend = true; log('VAST sospeso: skip preroll su questo playback'); return; } ensureAdDisplayInit(); if (VAST_BETA) { adRequestedCycle = true; requestAdsForCurrent(); log('VAST Beta: richiesta preroll immediata all\'avvio del video'); } else { if (prerollTimer) clearTimeout(prerollTimer); prerollTimer = setTimeout(()=>{ if (adsSuspended) { adsSkippedDueToSuspend = true; log('VAST sospeso (delay): skip preroll'); return; } if (adRequestedCycle || currentMode !== 'video') return; adRequestedCycle = true; requestAdsForCurrent(); }, 3000); } }); prevB.addEventListener('click', ()=>{ startContentForIndex(idx - 1); }); nextB.addEventListener('click', ()=>{ startContentForIndex(idx + 1); }); if (btnPlay) { btnPlay.addEventListener('click', ()=>{ if (video.paused) { video.play().catch(e=>log('Errore play', e)); if (bgVideo) { try { bgVideo.play(); } catch(e){} } } else { video.pause(); if (bgVideo) { try { bgVideo.pause(); } catch(e){} } } }); } if (btnMute) { // icona iniziale try { btnMute.textContent = (video && video.muted) ? '🔇' : '🔊'; } catch(e){} btnMute.addEventListener('click', ()=>{ // User interaction: allow audio policies to unlock userInteracted = true; // toggle mute/unmute setMuted(!video.muted); // bgVideo is synced inside setMuted, but keep safety if (bgVideo) bgVideo.muted = video.muted; }); } if (btnFs) { btnFs.addEventListener('click', function(e){ e.preventDefault(); e.stopPropagation(); toggleFullscreen(); }); } // Default: muted setMuted(true, false); if (btnWatch) { btnWatch.addEventListener('click', ()=>{ const href = btnWatch.dataset.href || ''; if (href) window.location.href = href; }); } if (infoReadBtn) { infoReadBtn.addEventListener('click', ()=>{ const href = infoReadBtn.dataset.href || ''; if (href) window.location.href = href; }); } /* ========= LIVE POLL ========= */ function checkYouTubeLive(){ if (!LIVE_CONF.yt_enabled || !LIVE_CONF.yt_channel_id || !LIVE_CONF.yt_api_key) return Promise.resolve(null); const url = 'https://www.googleapis.com/youtube/v3/search' + '?part=snippet' + '&channelId='+encodeURIComponent(LIVE_CONF.yt_channel_id) + '&eventType=live&type=video' + '&key='+encodeURIComponent(LIVE_CONF.yt_api_key); return fetch(url).then(r=>{ if (!r.ok) throw new Error('YT HTTP '+r.status); return r.json(); }).then(j=>{ if (j.items && j.items.length) { const v = j.items[0]; const vid = v.id && v.id.videoId ? v.id.videoId : null; const title = v.snippet && v.snippet.title ? v.snippet.title : 'Live YouTube'; if (!vid) return null; return { type:'live_yt', src:'https://www.youtube.com/embed/'+vid, title:title, embed_html:'' }; } return null; }).catch(err=>{ log('YT live check error', err); return null; }); } function checkFacebookLive(){ if (!LIVE_CONF.fb_enabled || !LIVE_CONF.fb_page_id || !LIVE_CONF.fb_token) return Promise.resolve(null); const url = 'https://graph.facebook.com/' + encodeURIComponent(LIVE_CONF.fb_page_id) + '/live_videos?access_token='+encodeURIComponent(LIVE_CONF.fb_token) + '&fields=status,embed_html,permalink_url,title'; return fetch(url).then(r=>{ if (!r.ok) throw new Error('FB HTTP '+r.status); return r.json(); }).then(j=>{ if (j.data && j.data.length) { const live = j.data.find(it=>it.status && (it.status === 'LIVE' || it.status === 'LIVE_NOW')) || j.data[0]; if (!live) return null; const title = live.title || 'Live Facebook'; const src = live.permalink_url || ''; return { type:'live_fb', src:src, title:title, embed_html: live.embed_html || '' }; } return null; }).catch(err=>{ log('FB live check error', err); return null; }); } function checkLiveStatus(){ if (closed) return; const jobs = []; if (LIVE_CONF.yt_enabled) jobs.push(checkYouTubeLive()); if (LIVE_CONF.fb_enabled) jobs.push(checkFacebookLive()); if (!jobs.length) return; Promise.all(jobs).then(res=>{ const yt = res[0] && res[0].type === 'live_yt' ? res[0] : null; const fb = res.length > 1 && res[1] && res[1].type === 'live_fb' ? res[1] : null; const chosen = fb || yt || null; if (chosen) { if (currentMode === 'video') switchToLiveMode(chosen.type, chosen); else if (currentMode === chosen.type) { liveInfo = chosen; showLiveIframe(); } } else { if (currentMode !== 'video') switchToVideoMode(); } }); } /* ========= Modalità header/content Newspaper ========= */ function injectHeaderContentNewspaper(){ try { const header = document.querySelector('#td-outer-wrap .td-header-wrap, .td-header-wrap'); const main = document.querySelector('#td-outer-wrap .td-main-content-wrap, #td-outer-wrap .td-container.td-pb-row, .td-main-content-wrap, .td-container.td-pb-row'); if (HEADER_BEFORE) { const body = document.body || document.documentElement; if (body && body.firstChild) body.insertBefore(wrap, body.firstChild); else if (body) body.appendChild(wrap); log('Header/content: inserita come PRIMO elemento del '); updateHeaderWidth(); return HEADER_WMODE === 'content' ? 'content' : 'outer'; } if (header && header.parentNode) { const parent = header.parentNode; if (header.nextSibling) parent.insertBefore(wrap, header.nextSibling); else parent.appendChild(wrap); log('Header/content: inserita DOPO .td-header-wrap'); updateHeaderWidth(); return HEADER_WMODE === 'content' ? 'content' : 'outer'; } if (main && main.parentNode) { main.parentNode.insertBefore(wrap, main); log('Header/content: fallback prima del main content'); updateHeaderWidth(); return HEADER_WMODE === 'content' ? 'content' : 'outer'; } const body = document.body || document.documentElement; if (body) { body.appendChild(wrap); log('Header/content: fallback appended to '); updateHeaderWidth(); return HEADER_WMODE === 'content' ? 'content' : 'outer'; } } catch(e){ log('Errore injection header/content', e); } return null; } function updateHeaderWidth(){ if (INJECT_MODE !== 'header') return; let ref = null; try { if (HEADER_WMODE === 'content') { ref = document.querySelector('#td-outer-wrap .td-main-content-wrap, #td-outer-wrap .td-container.td-pb-row') || document.querySelector('.td-main-content-wrap, .td-container.td-pb-row'); } if (!ref) ref = document.getElementById('td-outer-wrap') || document.body; if (!ref) return; const rect = ref.getBoundingClientRect(); if (!rect.width) return; wrap.style.setProperty('--svlb-header-width', rect.width + 'px'); log('Header width aggiornata ', rect.width + 'px'); } catch(e){ log('Errore updateHeaderWidth', e); } } /* ========= Avvio IMA + primo video ========= */ let imaRetry = 0; const IMA_RETRY_MAX = 40; function ensureIMAOnce(){ if (adDisplayContainer || adsLoader) { if (currentMode === 'video') startContentForIndex(0); return; } if (!window.google || !google.ima) { imaRetry++; if (imaRetry > IMA_RETRY_MAX) { log('IMA non disponibile dopo molti tentativi, continuo senza ads'); if (currentMode === 'video') startContentForIndex(0); return; } log('IMA non ancora caricato, retry...', imaRetry); setTimeout(ensureIMAOnce, 500); return; } if (!adDisplayContainer) createIMA(); if (currentMode === 'video') startContentForIndex(0); } function activateBar(){ if (started) return; if (HARD_HIDE && blockedBySelectors) { log('Livebar non avviata: selettori di hide presenti (hard hide attivo).'); return; } started = true; if (INJECT_MODE === 'manual') { wrap.classList.add('svlb-manual'); if (MANUAL_SEL) { try { const cont = document.querySelector(MANUAL_SEL); if (cont) { cont.appendChild(wrap); log('Livebar spostata nel container manuale:', MANUAL_SEL); } else { log('Container manuale non trovato: modalità manuale attiva, livebar NON mostrata finché non aggiungi il div:', MANUAL_SEL); // In modalità manuale non facciamo fallback su auto: nascondiamo e abortiamo wrap.classList.add('svlb-vh-hidden-by-dom'); wrap.style.display = 'none'; closed = true; return; } } catch(e){ log('Errore container manuale: livebar non mostrata', e); wrap.classList.add('svlb-vh-hidden-by-dom'); wrap.style.display = 'none'; closed = true; return; } } else { log('Selector manuale vuoto: livebar non mostrata (modalità manuale).'); wrap.classList.add('svlb-vh-hidden-by-dom'); wrap.style.display = 'none'; closed = true; return; } } else if (INJECT_MODE === 'header') { wrap.classList.add('svlb-header-mode'); injectHeaderContentNewspaper(); updateHeaderWidth(); window.addEventListener('resize', updateHeaderWidth); } // Dopo l'iniezione (wrap ha cambiato parent), prepara placeholder e stato sticky if (mobStickyEnabled) { ensureMobPlaceholder(); updateMobileStickyState(); } if (closed) return; wrap.classList.add('svlb-vh-active'); updateBodyOffset(); updateMobileStickyState(); if (!EXCLUDED_SET) EXCLUDED_SET = collectExcludedUrls(); // aggiorna subito sospensione VAST updateVastSuspension(); ensureIMAOnce(); updateArrows(); log('Livebar VAST HTML5 avviata. ITEMS:', ITEMS.length); if (LIVE_CONF && (LIVE_CONF.fb_enabled || LIVE_CONF.yt_enabled)) { const pollSec = LIVE_CONF.poll_interval && LIVE_CONF.poll_interval >= 10 ? LIVE_CONF.poll_interval : 30; setTimeout(checkLiveStatus, 2000); liveTimer = setInterval(checkLiveStatus, pollSec*1000); } } updateDevice(); applyAnchorSafeTop(); // Anchor often appears after load: poll briefly let __svlb_anchorPoll = 0; const __svlb_anchorIv = setInterval(function(){ applyAnchorSafeTop(); __svlb_anchorPoll++; if (__svlb_anchorPoll >= 6) clearInterval(__svlb_anchorIv); }, 1500); if (INJECT_MODE === 'header') { activateBar(); } else if (START_MODE === 'interaction') { const once = ()=>{ activateBar(); window.removeEventListener('click', once); window.removeEventListener('scroll', once); window.removeEventListener('keydown', once); window.removeEventListener('touchstart', once); }; window.addEventListener('click', once, {once:true}); window.addEventListener('scroll', once, {once:true}); window.addEventListener('keydown', once, {once:true}); window.addEventListener('touchstart', once, {once:true}); } else { setTimeout(activateBar, START_DELAY*1000); } })();