55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
// ============================================================
|
|
// formatter.js — Formatiert News-Nachrichten für Matrix
|
|
// ============================================================
|
|
|
|
function formatDailyDigest(grouped) {
|
|
const date = new Date().toLocaleDateString('de-DE', {
|
|
weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
|
|
});
|
|
|
|
// Plain text version
|
|
let plain = `📰 Täglicher News-Digest — ${date}\n`;
|
|
plain += '─'.repeat(50) + '\n\n';
|
|
|
|
// HTML version (für Matrix Clients die Formatting unterstützen)
|
|
let html = `<h3>📰 Täglicher News-Digest</h3>`;
|
|
html += `<p><em>${date}</em></p><hr>`;
|
|
|
|
for (const [category, items] of Object.entries(grouped)) {
|
|
if (items.length === 0) continue;
|
|
|
|
plain += `${category}\n${'─'.repeat(30)}\n`;
|
|
html += `<h4>${category}</h4><ul>`;
|
|
|
|
for (const item of items) {
|
|
const source = item.feedName ? ` [${item.feedName}]` : '';
|
|
plain += `• ${item.title}${source}\n ${item.link}\n\n`;
|
|
html += `<li><a href="${item.link}"><strong>${item.title}</strong></a>`;
|
|
if (item.feedName) html += ` <em>(${item.feedName})</em>`;
|
|
if (item.summary) html += `<br><small>${item.summary}</small>`;
|
|
html += `</li>`;
|
|
}
|
|
|
|
plain += '\n';
|
|
html += `</ul>`;
|
|
}
|
|
|
|
const totalItems = Object.values(grouped).flat().length;
|
|
plain += `\n📊 ${totalItems} Artikel heute · Powered by noctura newsbot`;
|
|
html += `<p><small>📊 ${totalItems} Artikel heute · Powered by noctura newsbot</small></p>`;
|
|
|
|
return { plain, html };
|
|
}
|
|
|
|
function formatNoNews() {
|
|
return {
|
|
plain: '📰 Heute keine neuen Artikel in den konfigurierten Feeds.',
|
|
html: '<p>📰 Heute keine neuen Artikel in den konfigurierten Feeds.</p>'
|
|
};
|
|
}
|
|
|
|
function formatError(feedName, error) {
|
|
return `⚠️ Feed-Fehler [${feedName}]: ${error.message}`;
|
|
}
|
|
|
|
module.exports = { formatDailyDigest, formatNoNews, formatError };
|