Django internet radio player
Find a file
mrwnslz bbe5f6c5c2 Podcasts: Feeds bedingt abrufen, Fehler speichern, Umzüge folgen, Backoff
- Bedingter Abruf: ETag/Last-Modified werden nach einer 200 gespeichert und
  als If-None-Match/If-Modified-Since mitgeschickt. Bei 304 wird nichts
  geparst und keine Folge geschrieben, nur last_refreshed_at aktualisiert und
  der Fehler gelöscht. Teilen sich mehrere Abos eine URL, gehen die Validatoren
  nur mit, wenn alle schon einmal abgerufen wurden und dieselben haben.
- Fehler (Netz, HTTP >= 400, kein Feed) landen in last_error, last_error_at
  und error_count; ein erfolgreicher Abruf setzt sie zurück. Feed-Liste und
  /podcasts/state/ liefern die drei Felder mit.
- Dauerhafte Weiterleitungen (301/308 am Anfang der Kette) ändern rss_url,
  außer der Nutzer hat die neue URL schon abonniert; 302/307 ändern nichts.
- Backoff im stündlichen Job: ab 3 Fehlern in Folge nur alle 2, 4, 8, 16,
  höchstens 24 Stunden. „Alle aktualisieren“ und --feed-id versuchen es
  trotzdem (max_age gilt weiter).
- _fetch_feed liefert jetzt ein FeedFetch-Objekt bzw. wirft FeedFetchError.
- Migration 0007_feed_http_cache.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:45:38 +02:00
.forgejo/workflows CI: auf Python 3.12 heben, damit gegen das getestet wird, was ausgeliefert wird 2026-08-28 08:56:37 +00:00
accounts API-Token: Anfragen mit Bearer-Token brauchen kein CSRF-Token 2026-09-29 19:33:18 +02:00
books Bücher: Cloud-Import aus WebDAV/Nextcloud (SW v41) 2026-08-28 08:26:22 +00:00
diora Default-Lautstärke auf 40% senken 2026-09-04 12:30:58 +02:00
e2e Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
gpodder Podcasts: Inbox und Gehört wie in AntennaPod 2026-10-02 08:26:28 +02:00
podcasts Podcasts: Feeds bedingt abrufen, Fehler speichern, Umzüge folgen, Backoff 2026-10-02 09:45:38 +02:00
radio Add thumbs up/down for creamfresh radio, hardcoded to that station 2026-09-04 11:38:34 +02:00
static Podcasts: Position in der Warteschlange einstellbar; Feeds nur noch auf dem Server holen (SW v51) 2026-10-02 07:26:16 +02:00
templates Radio: Stream-Adresse ins Suchfeld einfügen; Favoriten-Stern reparieren (SW v50) 2026-09-29 20:33:34 +02:00
tts Vorlesen: Sprachauswahl DE/EN mit englischer Piper-Stimme (SW v43) 2026-09-01 07:04:27 +02:00
.env.example Bücher: Cloud-Import aus WebDAV/Nextcloud (SW v41) 2026-08-28 08:26:22 +00:00
.gitignore Vorlesen-Funktion im Reader: Piper/Thorsten-TTS (SW v42) 2026-08-31 22:29:13 +02:00
docker-compose.yml Add podcast feature with feed management, Docker cron, and ebook reader assets 2026-03-19 13:39:59 +01:00
Dockerfile Vorlesen: Sprachauswahl DE/EN mit englischer Piper-Stimme (SW v43) 2026-09-01 07:04:27 +02:00
Dockerfile.cron Fix cron container: switch dcron→cron, export env vars for cron jobs 2026-03-20 09:16:29 +01:00
manage.py Initial commit 2026-03-16 19:19:22 +01:00
package-lock.json Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
package.json Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
playwright.config.js Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
requirements.txt Vorlesen-Funktion im Reader: Piper/Thorsten-TTS (SW v42) 2026-08-31 22:29:13 +02:00