1document.addEventListener("DOMContentLoaded", function () { 2 3 // ð¥ hae kaikki feed-blokit 4 const feedcontents = document.querySelectorAll("#feedcontent"); 5 6 if (!feedcontents.length) return; 7 8 feedcontents.forEach((feedcontent) => { 9 10 const feedurl = feedcontent.dataset.feedurl; 11 const nop = parseInt(feedcontent.dataset.nop); 12 const fallbackimageurl = feedcontent.dataset.fbackimage; 13 const useProxy = feedcontent.dataset.useproxy === "1"; 14 15 const proxyUrl = `/wp-admin/admin-ajax.php?action=finlandiatalo_rss_proxy&url=${encodeURIComponent(feedurl)}`; 16 17 fetch(useProxy ? proxyUrl : feedurl) 18 .then((response) => response.text()) 19 .then((str) => new window.DOMParser().parseFromString(str, "text/xml")) 20 .then((data) => { 21 22 const items = data.getElementsByTagName("item"); 23 24 console.log("ð° Items in feed:", items.length, feedurl); 25 26 let html = ""; 27 28 for (let i = 0; i < nop; i++) { 29 if (!items[i]) continue; 30 31 const item = items[i]; 32 33 const title = item.getElementsByTagName("title")[0]?.textContent || "No title"; 34 const link = item.getElementsByTagName("link")[0]?.textContent || "#"; 35 36 let source = "STT Info"; 37 let sourceurl = "https://www.sttinfo.fi"; 38 39 const sourceNode = item.getElementsByTagName("source")[0]; 40 if (sourceNode) { 41 source = sourceNode.textContent; 42 sourceurl = sourceNode.getAttribute("url") || "#"; 43 } 44 45 let thumburl = fallbackimageurl; 46 47 const thumbs = item.getElementsByTagName("media:thumbnail"); 48 if (thumbs.length > 0) { 49 thumburl = thumbs[0].getAttribute("url"); 50 } else { 51 const desc = item.getElementsByTagName("description")[0]?.textContent || ""; 52 const match = desc.match(/<img.*?src="(.*?)"/); 53 if (match && match[1]) { 54 thumburl = match[1]; 55 } 56 } 57 58 html += ` 59 <div class="entry-content d-flex justify-content-start"> 60 <div class="entry-img"> 61 <p> 62 <img class="square-img" src="${thumburl}" alt="${title}" 63 onerror="this.src='${fallbackimageurl}'"> 64 </p> 65 </div> 66 <div class="entry-text ms-4"> 67 <div class="entry-meta"> 68 <p class="entry-time mb-1 text-uppercase"> 69 <a href="${sourceurl}" target="_blank">${source}</a> 70 </p> 71 </div> 72 <h3> 73 <a href="${link}" target="_blank">${title}</a> 74 </h3> 75 </div> 76 </div> 77 `; 78 } 79 80 feedcontent.innerHTML = html; 81 }) 82 .catch((err) => { 83 console.error("â RSS error:", err, feedurl); 84 }); 85 86 }); 87 88});
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.