From a38a6e19309d709b595fa4099f405b55fcdf7cbc Mon Sep 17 00:00:00 2001 From: Claude Code Date: Sun, 19 Apr 2026 01:19:07 +0200 Subject: [PATCH] Latest-Developments: Pipe-Parser fuer Name|URL-Bullet-Format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Analog Monitor-Aenderung: Pills parsen {Name|URL, Name|URL} direkt und nutzen die URL aus dem Bullet, statt ueber sources_json-Namen nachzuschlagen. Damit verweist jeder Pill-Klick eindeutig auf den belegenden Post — keine Name-Kollisionen mehr (insbesondere bei Telegram-Kanaelen mit mehreren gleichnamigen sources_json-Eintraegen). Legacy-Kompat: Items ohne Pipe gehen weiter per lookupByName durch. --- lagen/iran-konflikt/lagebild.js | 16 +++++++++++----- vorschau/js/app.js | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lagen/iran-konflikt/lagebild.js b/lagen/iran-konflikt/lagebild.js index 65707ca..2ac6441 100644 --- a/lagen/iran-konflikt/lagebild.js +++ b/lagen/iran-konflikt/lagebild.js @@ -229,12 +229,18 @@ var Lagebild = { var t = trailingRe.exec(body); if (t) { body = body.replace(trailingRe, '').trim(); - var names = t[1].split(',').map(function(n){return n.trim();}).filter(Boolean); + var items = t[1].split(',').map(function(n){return n.trim();}).filter(Boolean); var seen = {}; - pills = names.map(function(n){ - if (junkRe.test(n)) return ''; - var k = normName(n); if (seen[k]) return ''; seen[k] = true; - return buildPill(lookupByName(n), n); + pills = items.map(function(item){ + var pipeIdx = item.indexOf('|'); + var itemName = pipeIdx >= 0 ? item.slice(0, pipeIdx).trim() : item.trim(); + var itemUrl = pipeIdx >= 0 ? item.slice(pipeIdx + 1).trim() : ''; + if (!itemName || junkRe.test(itemName)) return ''; + var k = normName(itemName); if (seen[k]) return ''; seen[k] = true; + if (itemUrl) { + return buildPill({ name: itemName, url: itemUrl }, itemName); + } + return buildPill(lookupByName(itemName), itemName); }).filter(Boolean).join(''); } if (!pills) { diff --git a/vorschau/js/app.js b/vorschau/js/app.js index 0f28f1d..4f15281 100644 --- a/vorschau/js/app.js +++ b/vorschau/js/app.js @@ -278,14 +278,20 @@ var t = trailingRe.exec(body); if (t) { body = body.replace(trailingRe, '').trim(); - var names = t[1].split(',').map(function (n) { return n.trim(); }).filter(Boolean); + var items = t[1].split(',').map(function (n) { return n.trim(); }).filter(Boolean); var seen = {}; - pills = names.map(function (n) { - if (junkRe.test(n)) return ''; - var key = normalizeSourceName(n); + pills = items.map(function (item) { + var pipeIdx = item.indexOf('|'); + var itemName = pipeIdx >= 0 ? item.slice(0, pipeIdx).trim() : item.trim(); + var itemUrl = pipeIdx >= 0 ? item.slice(pipeIdx + 1).trim() : ''; + if (!itemName || junkRe.test(itemName)) return ''; + var key = normalizeSourceName(itemName); if (seen[key]) return ''; seen[key] = true; - return buildPill(lookupByName(n), n); + if (itemUrl) { + return buildPill({ name: itemName, url: itemUrl }, itemName); + } + return buildPill(lookupByName(itemName), itemName); }).filter(Boolean).join(''); } if (!pills) {