UNPKG

peertube-plugin-youth-schedule

Version:

PeerTube plugin: youth protection schedule (configurable HH:mm slots and end time)

73 lines (60 loc) 3.97 kB
# PeerTube Plugin: Jugendschutz-Sendezeiten (Youth Schedule) PeerTube-Plugin zur zeitgesteuerten Freigabe von Videos aus Jugendschutzgründen. Videos können ab einer konfigurierbaren Startzeit (HH:mm) bis zu einer konfigurierbaren Endzeit angezeigt werden. ## Zweck - **Jugendschutz-Zeitfenster**: Inhalte sind erst ab einer gewählten Startzeit sichtbar, bis zur definierten Endzeit. - **Einfache Redaktion**: Zusatzfelder beim Video-Upload/-Edit (Checkbox + Zeit-Auswahl). - **Flexible Admin-Konfiguration**: Zeitquelle (Server/Browser), Startzeit-Slots als CSV (HH:mm), Endzeit (HH:mm). ## Funktionsumfang - Video-Formular ergänzt um: - Checkbox: „Jugendschutz: sensibler Inhalt?“ - Select: „Sendezeit (Start, HH:mm)“ mit Optionen aus der Admin-Konfiguration - Auf der Videoseite wird der Player blockiert und ein Hinweis angezeigt, solange die aktuelle Zeit außerhalb des erlaubten Fensters liegt (inkl. Über-Mitternacht-Logik). - Admin-Einstellungen: - Zeitquelle: Serverzeit oder Browserzeit des Nutzers - Sendezeit-Slots (CSV HH:mm oder HH): Liste erlaubter Startzeiten - Endzeit (HH:mm): Ende des sichtbaren Fensters ## Voraussetzungen - PeerTube-Version: ≥ 5.2.0 (`engine.peertube`) ## Installation 1. Abhängigkeiten installieren und bauen: ```bash npm install npm run build ``` 2. Bereitstellung in PeerTube: - Plugin-Ordner `peertube-plugin-youth-schedule` in das Plugins-Verzeichnis der Instanz legen, oder - ZIP erzeugen und in der PeerTube-Administration unter „Plugins/Themes“ hochladen. 3. In der PeerTube-Administration das Plugin aktivieren. Hinweis zu npm: Ein `README.md` muss im Paketwurzelverzeichnis liegen, damit es auf der npm-Seite angezeigt wird. Siehe „About package README files“ in der npm-Dokumentation ([docs.npmjs.com](https://docs.npmjs.com/about-package-readme-files)). ## Konfiguration (Administration) - **Zeitquelle (`timeSource`)** - `Server`: Serverzeit bestimmt die Verfügbarkeit. - `Browser (Benutzer)`: Zeit aus dem Browser des Nutzers wird zur Prüfung verwendet. - **Sendezeit-Slots (`timeSlots`)** - CSV-Liste gültiger Startzeiten im Format `HH:mm` oder `HH`, z. B. `20:00,22:30,23`. - Bestimmt die auswählbaren Optionen im Video-Formular. - **Endzeit (`endTime`)** - Ende des Sichtbarkeitsfensters im Format `HH:mm` (z. B. `06:00`). - Wenn Endzeit kleiner als Startzeit ist, gilt das Fenster über Mitternacht (z. B. 22:30 → 05:30). ## Verwendung (Upload/Bearbeitung) 1. Checkbox „Jugendschutz: sensibler Inhalt?“ aktivieren, wenn zutreffend. 2. Unter „Sendezeit (Start, HH:mm)“ die Startzeit wählen. 3. Die Metadaten werden gespeichert; die Freigabe erfolgt automatisch im zulässigen Fenster. ## Verhalten auf der Videoseite - Logik (Minuten-genau): Verfügbar im Intervall `[Start .. End)`; bei Start > End über Mitternacht: `[Start..24:00) ∪ [00:00..End)`. - Die „aktuelle Zeit“ kommt je nach Konfiguration von der Serverzeit oder der Browserzeit. - Blockier-Hinweis zeigt das Intervall „von Start bis End“. ## Technische Details - Gespeicherte Metadaten pro Video: - `youthSensitive: boolean` - `youthOpenMinutes: number` (Minuten ab 00:00, rückwärtskompatibel zu `youthOpenHour`) - API-Endpunkte: - `GET /plugins/peertube-plugin-youth-schedule/router/config``{ timeSource, slots: string[HH:mm], endTime }` - `GET /plugins/peertube-plugin-youth-schedule/router/video/:uuid/youth-allowed?clientMinutes=INT``{ allowed, openLabel, endLabel }` - Client-Bundles: `dist/video-edit-client-plugin.js` (Formular) und `dist/video-watch-client-plugin.js` (Watch-Seite). - Build: `esbuild` (Skript `npm run build`), `prepare`-Hook baut automatisch. ## Lizenz - AGPL-3.0 ## Support & Issues - Repository: https://github.com/yarkolife/peertube-plugin-youth-schedule - Issues: https://github.com/yarkolife/peertube-plugin-youth-schedule/issues