diff --git a/attached_assets/image_1772886839911.png b/attached_assets/image_1772886839911.png new file mode 100644 index 0000000..8dbf373 Binary files /dev/null and b/attached_assets/image_1772886839911.png differ diff --git a/replit.md b/replit.md index 3f6ebde..84f9303 100644 --- a/replit.md +++ b/replit.md @@ -26,6 +26,13 @@ The official website for Folx Music Television (folx.tv). Dark-themed bento grid - `articles`: id (serial), title, slug (unique), excerpt, content (HTML), coverImage, category, author, featured, views, publishedAt - `article_views`: id (serial), articleId, ipHash (sha256 truncated to 16 chars), viewedAt — tracks unique IP views per article +## Seed Behavior +- `server/seed.ts` runs on startup and **always syncs** article content from seedArticles array to the database +- Existing articles (matched by slug) are **fully updated** with latest title, excerpt, content, coverImage, category, author, featured, publishedAt +- New articles are inserted; articles not in seed list are deleted +- HTML entity „/“ in title/excerpt are auto-replaced with „/" after seeding +- Any changes to article content in seed.ts will be reflected on next deployment + ## API Endpoints - `GET /api/articles` - All articles - `GET /api/articles/featured` - Featured articles diff --git a/server/seed.ts b/server/seed.ts index 351bf99..c9231a3 100644 --- a/server/seed.ts +++ b/server/seed.ts @@ -228,8 +228,28 @@ export async function seedDatabase() { } let added = 0; + let updated = 0; for (const article of seedArticles) { - if (existingSlugs.has(article.slug)) continue; + if (existingSlugs.has(article.slug)) { + await db.execute( + sql`UPDATE articles SET + title = ${article.title}, + excerpt = ${article.excerpt}, + content = ${article.content}, + cover_image = ${article.coverImage}, + category = ${article.category}, + author = ${article.author}, + featured = ${article.featured} + WHERE slug = ${article.slug}` + ); + if (article.publishedAt) { + await db.execute( + sql`UPDATE articles SET published_at = ${article.publishedAt} WHERE slug = ${article.slug}` + ); + } + updated++; + continue; + } await storage.createArticle({ title: article.title, @@ -253,71 +273,26 @@ export async function seedDatabase() { if (added > 0) { console.log("Database seeded: added " + added + " new articles."); } - - for (const article of seedArticles) { - if (article.publishedAt && existingSlugs.has(article.slug)) { - await db.execute( - sql`UPDATE articles SET published_at = ${article.publishedAt} WHERE slug = ${article.slug}` - ); - } + if (updated > 0) { + console.log("Database seeded: updated " + updated + " existing articles."); } - await db.execute(sql` - UPDATE articles SET - title = REPLACE(REPLACE(title, '„', '„'), '“', '"'), - excerpt = REPLACE(REPLACE(excerpt, '„', '„'), '“', '"') - WHERE title LIKE '%„%' OR title LIKE '%“%' - OR excerpt LIKE '%„%' OR excerpt LIKE '%“%' - `); - - await db.execute(sql` - UPDATE articles SET - title = ${"Melanie Payer präsentiert den Titel \u201eEndlich wieder Gipfelstammtisch\u201c"}, - excerpt = ${"Melanie Payer stellt ihren Titel \u201eEndlich wieder Gipfelstammtisch\u201c vor \u2013 den offiziellen Titelsong der neuen Staffel der Sendung \u201eGipfelstammtisch\u201c auf Folx TV."}, - content = ${"
Die beliebte S\u00e4ngerin Melanie Payer stellt ihren Titel \u201eEndlich wieder Gipfelstammtisch\u201c vor, der eigens als Titelsong f\u00fcr die neue Staffel der Sendung \u201eGipfelstammtisch\u201c auf Folx TV geschrieben wurde. Im Zuge der Ver\u00f6ffentlichung wurde auch ein offizielles Musikvideo produziert, das die musikalische Idee und die beteiligten K\u00fcnstler in den Mittelpunkt stellt.
\nDie Produktion entstand im renommierten Tonstudio FD-Musics in Gmunden. Komponiert wurde der Titel von Flo Daxner und Hanneliese Krei\u00dfl Wurth, die auch den Text verfasste. Produktion und Arrangement \u00fcbernahm Flo Daxner. Ver\u00f6ffentlicht wurde der Song unter dem Label mymusic.media und ist auf allen g\u00e4ngigen Plattformen als Download und Stream verf\u00fcgbar.
\nSong & Musikvideo:
https://music.imusician.pro/a/K2P_nWeA
Der Titel wurde speziell f\u00fcr die Sendung \u201eGipfelstammtisch\u201c geschrieben, um deren Charakter musikalisch widerzuspiegeln \u2013 Geselligkeit, Tradition und die authentische Volksmusik aus der Region Wilder Kaiser. Im Fokus stehen die Musik und die K\u00fcnstler, die die neue Staffel begleiten.
\nIm Musikvideo wirken mit: Natascha, Meli Stein, Linda Feller, Mark Ed, Da Wadltreiber von Amadeus, Tauern Echo, Melanie Payer, Hansi Berger, Sanny \u2013 Die Stimme der Berge, Julia Raich, Spitzbua Markus, Meissnitzer Band, Brennholz, Charly Kaiser, Franz Nolf, Die Grubertaler, Franz Steiner, Marlena Martinelli, Die 3 Z'widern, SUSAL und Pfundskerle. Wijbrand van der Sande ist im Hintergrund zu sehen, w\u00e4hrend der Fokus klar auf dem Titel und den beteiligten K\u00fcnstlern liegt.
\n\u201eEndlich wieder Gipfelstammtisch\u201c verbindet die neue Staffel der Sendung mit der Klangwelt der alpenl\u00e4ndischen Volksmusik und unterstreicht die musikalische Identit\u00e4t des Formats.
"} - WHERE slug = 'melanie-payer-endlich-wieder-gipfelstammtisch' - `); - - await db.execute(sql` - UPDATE articles SET - title = REPLACE(REPLACE(title, '„', '\u201e'), '“', '\u201c'), - excerpt = REPLACE(REPLACE(excerpt, '„', '\u201e'), '“', '\u201c') - WHERE title LIKE '%„%' OR title LIKE '%“%' - OR excerpt LIKE '%„%' OR excerpt LIKE '%“%' - `); - - await db.execute(sql` - UPDATE articles SET - cover_image = REPLACE(cover_image, '.webp', '.jpg') - WHERE cover_image LIKE '%.webp' - `); - - await db.execute(sql` - UPDATE articles SET - title = ${"John Prisco \u2013 Die Geschichte eines Musikers"}, - slug = 'john-prisco-die-geschichte-eines-musikers', - excerpt = ${"In der Sendung \u201eDie Geschichte des Liedes\u201c auf FOLX Music Television wird der Musiker John Prisco vorgestellt. In dieser Episode lernen die Zuschauer seinen musikalischen Weg und die Geschichten hinter einigen seiner Lieder kennen."}, - content = ${"In der Sendung \u201eDie Geschichte des Liedes\u201c auf FOLX Music Television wird der Musiker John Prisco vorgestellt. In dieser Episode lernen die Zuschauer seinen musikalischen Weg und die Geschichten hinter einigen seiner Lieder kennen.
\nJohn Prisco, mit b\u00fcrgerlichem Namen Albert Koller, wurde am 25. Januar 1956 geboren. Schon fr\u00fch spielte Musik eine wichtige Rolle in seinem Leben. Im Laufe der Jahre entwickelte er seinen eigenen Stil und wurde als K\u00fcnstler bekannt, der gef\u00fchlvolle Melodien mit pers\u00f6nlichen Geschichten verbindet. Mit seinen Auftritten bei verschiedenen Veranstaltungen und in Fernsehsendungen erreichte er ein treues Publikum.
\nViele seiner Lieder basieren auf pers\u00f6nlichen Erfahrungen und Momenten aus seinem Leben. Gerade diese N\u00e4he zu echten Geschichten machte seine Musik f\u00fcr viele Zuh\u00f6rer besonders authentisch.
\n\nIn der Sendung \u201eDie Geschichte des Liedes\u201c spricht John Prisco \u00fcber seine Inspiration, \u00fcber die Entstehung seiner Songs und dar\u00fcber, welche Bedeutung Musik f\u00fcr ihn hatte. Die Sendung gibt damit einen Einblick in seine musikalische Arbeit und seine Gedanken zur Musik.
\nDer Musiker John Prisco verstarb am 28. August 2025 im Alter von 69 Jahren. Seine Musik und seine Auftritte bleiben jedoch f\u00fcr viele Fans in Erinnerung.
\nDie komplette Ausgabe der Sendung \u201eDie Geschichte des Liedes\u201c mit John Prisco k\u00f6nnen Sie in diesem Artikel ansehen.
"}, - cover_image = '/uploads/john-prisco.jpg', - published_at = '2026-03-06T12:00:00.000Z' - WHERE slug = 'john-prisco-die-geschichte-des-liedes' OR slug = 'john-prisco-die-geschichte-eines-musikers' - `); - - const stadl12Seed = seedArticles.find(a => a.slug === 'folx-stadl-sendung-12-musik-humor-und-beste-schlagerunterhaltung'); - if (stadl12Seed) { await db.execute(sql` UPDATE articles SET - title = ${stadl12Seed.title}, - excerpt = ${stadl12Seed.excerpt}, - content = ${stadl12Seed.content}, - cover_image = ${stadl12Seed.coverImage}, - category = ${stadl12Seed.category}, - featured = ${stadl12Seed.featured} - WHERE slug = 'folx-stadl-sendung-12-musik-humor-und-beste-schlagerunterhaltung' + title = REPLACE(REPLACE(title, '„', '„'), '“', '“'), + excerpt = REPLACE(REPLACE(excerpt, '„', '„'), '“', '“') + WHERE title LIKE '%„%' OR title LIKE '%“%' + OR excerpt LIKE '%„%' OR excerpt LIKE '%“%' + `); + + await db.execute(sql` + UPDATE articles SET + slug = 'john-prisco-die-geschichte-eines-musikers' + WHERE slug = 'john-prisco-die-geschichte-des-liedes' + `); + + await db.execute(sql` + DELETE FROM articles WHERE slug = 'folx-stadl-sendung-12' `); } - - await db.execute(sql` - DELETE FROM articles WHERE slug = 'folx-stadl-sendung-12' - `); -} + \ No newline at end of file