commit 937bbd392df050ba479a320269bc982c3c34721e
parent c9efff5250a62c87f5fed3183958674d67203a97
Author: JayVii <jayvii[AT]posteo[DOT]de>
Date: Sat, 14 Jun 2025 17:31:05 +0200
feat: add remaining features for initial version
Diffstat:
6 files changed, 206 insertions(+), 133 deletions(-)
diff --git a/assets/css/custom.css b/assets/css/custom.css
@@ -2,7 +2,8 @@
* REVERSED for better highlighting
*/
:root {
- --accent: #e93700;
+ --accent: #ef5d2f;
+ --imagetaint: #a22600bb;
--accent-hover: #ff9999;
--marked: #ff6733;
}
@@ -28,6 +29,9 @@
#searchform {
flex-direction: column;
}
+ .nomobile {
+ display: none;
+ }
}
/* Buttons */
@@ -104,3 +108,24 @@ mark {
img, video {
opacity: 1 !important;
}
+
+.description {
+ padding: 1em;
+ border-radius: 10px;
+ margin-bottom: 2em;
+ background-color: var(--imagetaint);
+ background-image: url("/assets/img/background.jpg");
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-blend-mode: darken;
+}
+
+.submit-container {
+ width: 100%;
+ background-color: var(--bg);
+ padding: 0.5em;
+ border-radius: 10px;
+ position: sticky;
+ top: 0px;
+ z-index: 99;
+}
diff --git a/assets/img/background.jpg b/assets/img/background.jpg
Binary files differ.
diff --git a/assets/img/background_cut.jpg b/assets/img/background_cut.jpg
Binary files differ.
diff --git a/assets/img/background_orig.jpg b/assets/img/background_orig.jpg
Binary files differ.
diff --git a/index.php b/index.php
@@ -115,19 +115,19 @@
</header>
<!-- Description -->
- <div class="fullheight description">
- <strong style="font-size: 133%;">
- <em>Kontra</em> gibt Nutzer:innen die Möglichkeit,
- unterschiedliche Nachrichtenquellen zu einem persönlichen
- Nachrichten-Feed zusammen zu stellen. Ganz ohne Tracking,
- Big-Tech und algorithmischem Framing.
- </strong>
- <p>
- Auf dieser Seite befinden sich viele seriöse Medienquellen aus
- dem <em>linken Spektrum¹</em> von Zeitungen, Magazinen und
- sonstigen journalistischen Veröffentlichungen, aus denen sich
- persönliche Nachrichten-Feeds erstellt werden lassen.
- </p>
+ <div class="fullheight">
+ <div class="description">
+ <strong style="font-size: 133%;">
+ Nachrichten von Links! Ohne Tracking, ohne Tech-Konzerne und
+ ohne algorithmisches Framing.
+ </strong>
+ <p>
+ Auf dieser Seite befinden sich viele seriöse Medienquellen
+ aus dem <em>linken Spektrum</em> von Zeitungen, Magazinen
+ und sonstigen journalistischen Veröffentlichungen, aus denen
+ sich persönliche Nachrichten-Feeds erstellt werden lassen.
+ </p>
+ </div>
<div class="buttonrow">
<a href="#usage" class="button c2">
Wie funktioniert das?
@@ -157,16 +157,7 @@
<strong>ohne Konto-Zwang</strong>
<strong>ohne <a href="https://de.wikipedia.org/wiki/Soziales_Netzwerk_(Internet)#Kritik" target="_blank">Algorithmen</a></strong> und
<strong>ohne <a href="https://de.wikipedia.org/wiki/Lock-in-Effekt" target="_blank">Lock-In Effekte</a></strong>.
- </p>
- <p>
- Hierfür nutzt Kontra die offene Schnittstelle
- <a href="https://de.wikipedia.org/wiki/RSS_(Web-Feed)" target="_blank">
- RSS
- </a> (zu deutsch: <em>sehr einfache Verbreitung</em>), welche
- von Millionen Webseiten und Online-Zeitungen weltweit zur
- Verfügung gestellt wird, um Nachrichten auf direktem Weg an
- interessierte zu verteilen. RSS ist das <em>schwarze Brett</em>
- von Zeitungen, Blogs und digitalen Veröffentlichungen.
+ Wie das funktioniert, erfährst du <a href="#faqs">hier</a>!
</p>
<p>
Kontra ist ein Archiv mit aktuell
@@ -271,7 +262,15 @@
<form id="sources-selection" method="post">
<!-- Submit button -->
- <input type="submit" value="Nachrichten-Feed erzeugen!">
+ <div class="submit-container">
+ <input type="submit" value="Nachrichten-Feed erzeugen!">
+ <a href="#sources" class="button" title="Nach oben">
+ 👆 <stretch class="nomobile">Nach oben</stretch>
+ </a>
+ <a href="#faqs" class="button" title="Nach unten">
+ 👇 <stretch class="nomobile">Nach unten</stretch>
+ </a>
+ </div>
<input type="hidden" name="action" value="gen_opml">
<?php
$cnt = 0;
@@ -327,148 +326,197 @@
<h3>Was ist <em>Kontra</em>?</h3>
- <!-- meaning of name -->
<details>
- <summary>Sammelt Kontra meine Daten?</summary>
+ <summary>Welche Technik nutzt Kontra?</summary>
<p>
- Nein! Kontra sammelt keinerlei Datein über Personen und
- Geräte, die diese Seite besuchen und Kontra nutzen.
- Technisch bedingt, wird bei jedem Aufruf <em>jeder</em>
- Webseite im Internet mindestens die eigene IP-Adresse und
- oft noch weitere Informationen über das Betriebssystem, den
- Webbrowser, bzw. das verwendete Gerät übermittelt. Kontra
- speichert <strong>keine</strong> dieser Informationen.
+ Millionen Webseiten und Online-Zeitungen weltweit bieten die
+ offene Schnittstelle
+ <a href="https://de.wikipedia.org/wiki/RSS_(Web-Feed)" target="_blank">
+ RSS
+ </a> (zu deutsch: <em>sehr einfache Verbreitung</em>) an.
+ Nahezu jeder Blog, jede Nachrichtenseite und
+ Online-Veröffentlichungen nutzen einen <em>RSS</em> Feed.
+ Das ist eine maschinenlesbare Datei, welche alle dort
+ veröffentlichte Nachrichten und einige Zusatzinformationen
+ (Veröffentlichungszeitpunkt, Autor:in, Kurzzusammenfassung,
+ usw.) enthält. RSS kann als <em>schwarzes Brett</em>
+ digitaler Medien verstanden werden.
</p>
<p>
- Zudem stellt Kontra lediglich das Archiv von RSS-Feeds zur
- Verfügung. Kontra speichert außerdem keine Informationen
- darüber, welche Nachrichtenquellen von Nutzer:innen
- ausgewählt werden.
+ Kontra stellt eben diese RSS-Feeds für alle von Nutzer:innen
+ ausgewählte Medien in einer herunterladbaren Datei zusammen,
+ die in üblichen Feedreadern (siehe:
+ <em><strong>Was sind Feedreader?</strong></em>) importiert
+ werden kann. Diese Datei basiert auf dem offenen
+ <a href="https://de.wikipedia.org/wiki/Outline_Processor_Markup_Language", target="_blank">
+ OPML
+ </a> Format und wird von nahezu allen RSS/Feed-Readern
+ verstanden. Damit gewährleistet Kontra, dass es keinen
+ sogenannten <em>Lock-In</em> Effekt gibt, der Nutzer:innen
+ an eine einzige App binden und der Wechsel zu Alternativen
+ erschwert.
</p>
<p>
- Mit dem Herunterladen der Feed-Datei endet der
- Datenaustausch zwischen den Nutzer:innen und Kontra. Kontra
- hat technisch bedingt keinen Einblick darin, ob und welche
- Nachrichten Nutzende in welche Feedreader einlesen oder
- welche Nachrichten tatsächlich von Nutzer:innen gelesen
- werden. Das liegt daran, dass die Nachrichten
- <strong>direkt</strong> und ohne Umwege von den jeweiligen
- Nachrichtenseiten kommen und zu keinem Zeitpunkt über Kontra
- laufen.
+ Die angesprochenen OPML-Dateien enthalten nicht nur die
+ RSS-Feeds selbst, sondern auch alle Kategorien, die man
+ ihnen innerhalb des eigenen Feed-Readers zugewiesen hat. Die
+ OPML-Dateien aus Kontra enthalten alle Kategorie-Label, die
+ auch in der Liste sichtbar sind.
+ </p>
+ <p>
+ <strong>Kurzum:</strong> RSS und OPML sind die grundlegende
+ Technik, auf die <em>Kontra</em> setzt. Nachrichten können
+ darüber direkt von Blogs und Zeitungen bezogen werden, ohne
+ dass Dritte Einsicht darin haben. Feeds können in nahezu
+ allen Feedreadern importiert und exportiert werden. Ein
+ Wechsel von einer App zu einer anderen ist also innerhalb
+ von Sekunden möglich.
</p>
</details>
- <!-- what are keywords -->
<details>
- <summary>What are keywords?</summary>
+ <summary>Was sind Feed-Reader / RSS-Reader?</summary>
<p>
- An idea lent from the search Engine
- <a href="https://duckduckgo.com/bangs" target="_blank">
- DuckDuckGo
- </a>, which has been utilized by many others since. They
- call their keywords bangs, but it is the same concept and
- usability. In essence, keywords are shortcuts for searching
- on other websites.
+ Feed- oder RSS-Reader erlauben es, so genannte RSS-Feeds zu
+ <em>abonnieren</em>, um regelmäßig Nachrichten von diesen zu
+ erhalten. Das Konzept ist vergleichbar mit einem E-Mail
+ Newsletter.
</p>
<p>
- For example, you can conduct a search on the website
- <a
- href="<?php echo $searches[$rsi]["website"]; ?>"
- target="_blank"
- >
- <?php echo $searches[$rsi]["name"]; ?>
- </a>
- directly from <?php echo $_SERVER["SERVER_NAME"]; ?> by
- adding the keyword
- <code>!<?php echo $searches[$rsi]["keywords"][0]; ?></code>
- to your search query.
+ Der Unterschied besteht darin, dass man, um einen Newsletter
+ erhalten zu können, den Versender:innen eine E-Mail Adresse
+ hinterlegen muss. Newsletter werden dann aktiv von den
+ Versender:innen an bekannte Empfänger:innen verschickt.
</p>
<p>
- You can find all keywords associated with each search engine
- in the <a href="#engines">list above</a>.
+ Bei RSS-Feeds ist es umgekehrt. Empfänger:innen (bzw. von
+ ihnen genutzt Feed-Reader) ziehen sich die Nachrichten von
+ den Nachrichten-Seiten oder Blogs selbst. Letztere wissen
+ dabei gar nicht, wer die Empfänger:innen sind oder wie viele
+ es letztendlich sind.
+ </p>
+ <p>
+ Der RSS-Reader ist lediglich die Software, welche die
+ Nachrichten empfängt und diese oft in einem Listen-Format
+ zum Lesen anzeigt. Es gibt eine Vielzahl wirklich guter
+ und zeitgemäßer RSS-Reader für alle möglichen Endgeräte,
+ ganz egal ob am PC, Smartphone, Tablet, E-Book-Reader oder
+ per Webbrowser.
+ </p>
+ <p>
+ Folgende RSS-Reader sind kostenlos und darüber hinaus noch
+ <a href="https://fsfe.org/freesoftware/freesoftware.de.html" target="_blank">
+ Freie, Open Source Software
+ </a>:
+ <ul>
+ <li><a href="https://apps.apple.com/us/app/netnewswire-rss-reader/id1480640210" target="_blank">NetNewsWire (iOS)</a></li>
+ <li><a href="https://apps.apple.com/us/app/twine-rss-reader/id6465694958" target="_blank">Twine (iOS)</a></li>
+ <li><a href="https://play.google.com/store/apps/details?id=com.nononsenseapps.feeder.play" target="_blank">Feeder (Android)</a></li>
+ <li><a href="https://play.google.com/store/apps/details?id=dev.sasikanth.rss.reader" target="_blank">Twine (Android)</a></li>
+ <li><a href="https://freshrss.org/" target="_blank">FreshRSS (Web)</a></li>
+ <li><a href="https://www.thunderbird.net/de/" target="_blank">Thunderbird (Windows, MacOS, Linux)</a></li>
+ <li><a href="https://gfeeds.gabmus.org/" target="_blank">Feeds (Linux)</a></li>
+ <li><a href="https://alternativeto.net/browse/search/?q=rss%20reader" target="_blank">und viele weitere</a>...</li>
+ </ul>
</p>
</details>
- <!-- how to use -->
<details>
- <summary>How can I use serĉi?</summary>
+ <summary>Kann ich weitere Nachrichten-Feeds abonnieren?</summary>
<p>
- You can try serĉi directly
- <a href="#searchbar">on this site</a> or
- <a
- href="https://src.jayvii.de/pub/serci/#hosting"
- target="_blank"
- >
- host it yourself
- </a>!
- It barely needs any server resources, no database or lots of
- RAM. serĉi has minimal footprint (also on user data: there
- are <strong>none</strong>).
+ Ja! Gibt es Nachrichtenquellen, die nicht in Kontra
+ enthalten sind, kann man diese auch einzeln im eigenen
+ Feed-Reader abonnieren. Auch das ist sehr einfach und dauert
+ in der Regel nur wenige Sekunden.
</p>
<p>
- Either type your search directly into the
- <a href="#searchbar">search bar at the very top</a>
- or add the search to your browser by rightclicking in the
- URL-bar of your web browser and choose
- <emph>add serĉi - Search with !keywords</emph>.
+ Fast alle Online-Medien haben eine Unterseite, auf der sie
+ ihre RSS-Feeds auflisten. Folgende Medien sind
+ beispielsweise wegen des Fokus auf dediziert Linke Medien
+ nicht in Kontra enthalten, lassen sich aber sehr einfach
+ über einen RSS-Reader abonnieren:
+ <ul>
+ <li><a href="https://www.tagesschau.de/infoservices/rssfeeds" target="_blank">Tagesschau (ÖRR)</a></li>
+ <li><a href="https://www.deutschlandfunk.de/rss-angebot-102.html" target="_blank">Deutschlandfunk (ÖRR)</a></li>
+ <li><a href="https://www.sueddeutsche.de/service/updates-mit-rss-uebersicht-aller-rss-feeds-fuer-sz-de-sz-magazin-und-jetzt-de-1.393950" target="_blank">Süddeutsche Zeitung</a></li>
+ </ul>
</p>
+ </details>
+
+ <details>
+ <summary>Ist Kontra kostenlos?</summary>
<p>
- Some browsers (for example Firefox on Android / Fennec)
- allow to configure custom search engines via a so-called
- search URL. Simply list following URL as
- <emph>search-URL</emph> there and choose it as your fallback
- search option:
+ Ja! Kontra ist und bleibt kostenlos. Es ist lediglich ein
+ kleines privates Software-Projekt einer Einzelperson.
</p>
- <pre>https://<?php echo $_SERVER["SERVER_NAME"]; ?>/?q=%s</pre>
<p>
- You can also choose the fallback search engine, used by
- serĉi as fallback, when no keyword is given, through the URL
- instead of choosing it from the
- <a href="#engines">list above</a>, in case you do not want
- serĉi to store any cookie on your device. For example, if
- you wanted to use
- <a
- href="<?php echo $searches[$rsi]["website"]; ?>"
- target="_blank"
- >
- <?php echo $searches[$rsi]["name"]; ?>
+ Zudem wird Kontra
+ <a href="https://fsfe.org/freesoftware/freesoftware.de.html" target="_blank">
+ Freie, Open Source Software
</a>
- as your fallback search, you could use following search-URL:
+ entwickelt. Der Programm-Code kann also von allen jederzeit
+ eingesehen werden. Verbesserungsvorschläge oder eigene
+ Code-Beiträge sind stets willkommen. Es ist auch erlaubt,
+ eigene Projekte auf Kontra aufzubauen. Diese müssen jedoch
+ ebenfalls unter einer Freien Software-Lizenz stehen.
+ </p>
+ <p>
+ Du möchtest helfen?
+ <a href="https://src.jayvii.de/pub/kontra/" target="_blank">
+ Hier
+ </a> findest du mehr Informationen dazu.
</p>
- <pre><?php
- echo "https://" . $_SERVER["SERVER_NAME"] .
- "/?fallback=" . $rsi . "&q=%s";
- ?></pre>
</details>
- <!-- no js or cookies -->
<details>
- <summary>
- Choosing a fallback search without cookies or Javascript
- </summary>
+ <summary>Ist das <em>Abonnieren</em> eines RSS-Feed kostenlos?</summary>
<p>
- You can simply choose a fallback search by adding the
- <code>fallback</code> URL parameter. For example, if you
- wanted to use
- <a
- href="<?php echo $searches[$rsi]["website"]; ?>"
- target="_blank"
- >
- <?php echo $searches[$rsi]["name"]; ?>
- </a>
- as your fallback search, you can simply add
- <code>/?fallback=<?php echo $rsi; ?></code> to the serĉi
- URL:
- <br>
- <a href="/?fallback=<?php echo $rsi; ?>">
- <?php
- echo "https://" . $_SERVER["SERVER_NAME"] .
- "/?fallback=" . $rsi;
- ?>
- </a>
+ Ja! Allerdings kann es sein, dass einige der in den
+ Nachrichten-Feeds angebotenen Artikel hinter einer
+ Bezahlschranke liegen, also oft nicht in voller Länge
+ gelesen werden können, ohne ein Abonnement bei der
+ jeweiligen Online-Publikation, bzw. ein Zeitungsabonnement
+ abzuschließen.
+ </p>
+ <p>
+ Kontra kennzeichnet Nachrichtenquellen, bei denen einige
+ Artikel hinter einer Bezahlschranke liegen können.
+ Nachrichtenquellen, die niemals eine Bezahlschranke nutzen
+ sind ebenfalls in einer eigenen Kategorie.
+ </p>
+ </details>
+
+ <details>
+ <summary>Sammelt Kontra meine Daten?</summary>
+ <p>
+ Nein! Kontra sammelt keinerlei Datein über Personen und
+ Geräte, die diese Seite besuchen und Kontra nutzen.
+ Technisch bedingt, wird bei jedem Aufruf <em>jeder</em>
+ Webseite im Internet mindestens die eigene IP-Adresse und
+ oft noch weitere Informationen über das Betriebssystem, den
+ Webbrowser, bzw. das verwendete Gerät übermittelt. Kontra
+ speichert <strong>keine</strong> dieser Informationen.
+ </p>
+ <p>
+ Zudem stellt Kontra lediglich das Archiv von RSS-Feeds zur
+ Verfügung. Kontra speichert außerdem keine Informationen
+ darüber, welche Nachrichtenquellen von Nutzer:innen
+ ausgewählt werden.
+ </p>
+ <p>
+ Mit dem Herunterladen der Feed-Datei endet der
+ Datenaustausch zwischen den Nutzer:innen und Kontra. Kontra
+ hat technisch bedingt keinen Einblick darin, ob und welche
+ Nachrichten Nutzende in einen Feedreader einlesen oder
+ welche Nachrichten tatsächlich von Nutzer:innen gelesen
+ werden. Das liegt daran, dass die Nachrichten
+ <strong>direkt</strong> und ohne Umwege von den jeweiligen
+ Nachrichtenseiten kommen und zu keinem Zeitpunkt über Kontra
+ laufen.
</p>
</details>
+
</section>
</body>
diff --git a/news-sources.json b/news-sources.json
@@ -400,7 +400,7 @@
]
},
"nd-loc-brandenburg": {
- "title": "nd: Berlin",
+ "title": "nd: Brandenburg",
"desc": "Überregionale Tageszeitung mit Leserschwerpunkt in Ostdeutschland und Selbstverständnis als sozialistisch. Lokales und Nachrichten aus Brandenburg.",
"web": "https://www.nd-aktuell.de/rubrik/Brandenburg/",
"rss": "https://www.nd-aktuell.de/rss/brandenburg.xml",