peertube-plugin-youth-schedule
Version:
PeerTube plugin: youth protection schedule (configurable HH:mm slots and end time)
73 lines (60 loc) • 3.97 kB
Markdown
# 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