No description
- PHP 84.7%
- Python 4.2%
- JavaScript 4.1%
- Shell 3.8%
- CSS 3.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Duplikat-Erkennung: Zeitfenster für den Schlüssel standardmäßig ±6 Tage statt ±300 (alter Standard wird beim Update umgestellt). Reihen mit sich wöchentlich wiederholendem Schlüssel landeten sonst im Konflikt. Bei mehreren Treffern gewinnt der Beitrag mit gleichem Sendetermin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017HEUtYvsMY9Si7fECoZNcD |
||
| assets | ||
| bin | ||
| includes | ||
| languages | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| CLAUDE.md | ||
| gpl-3.0.txt | ||
| mediathek-se-import.php | ||
| readme.txt | ||
=== Mediathek SE Import === Contributors: stefanerbe Tags: mediathek, audio-on-demand, mp3, id3, podcast, audio, spokenword Requires at least: 5.9 Tested up to: 7.1 Requires PHP: 7.4 Stable tag: 3.5.2 License: GPLv3 Erzeugt aus MP3-Dateien anhand ihrer ID3-Tags Beiträge mit Audioplayer – manuell oder automatisch per WP-Cron. == Beschreibung == MP3-Dateien werden per (S)FTP oder über das Upload-Formular in den Ordner wp-content/uploads/mediathek-se-import gelegt. Das Plugin liest die ID3-Tags und legt Beiträge an (Titel, Anmoderation, Sendetermin, Kategorien, Taxonomien, Felder) und hängt die Audiodatei als Player an. * Zuordnung ID3-Frame → WordPress-Feld unter Einstellungen → Mediathek SE Import (nur Administratoren; alle anderen sehen sie auf der Import-Seite schreibgeschützt). * Duplikat-Erkennung: Ein bereits importierter Beitrag wird überschrieben (Stufe 1: Schlüssel, Standard Sendewoche/Nr. = TALB/TRCK; Stufe 2: Sendetermin + Sender + ähnlicher Titel). Mehrdeutige Fälle landen in _konflikt/, fehlerhafte Dateien in _fehler/. * Automatischer Import per WP-Cron mit Sperre gegen parallele Läufe und Mindestalter der Dateien (laufende Uploads werden nicht angefasst). Für verlässliche Zeiten zusätzlich einen System-Cronjob einrichten. * Import-Protokoll der letzten 50 Läufe, optional E-Mail-Bericht. Basiert ursprünglich auf "MP3 to Post" 1.3.0 von Paul Sheldrake. == Installation == 1. Plugin-Ordner nach /wp-content/plugins/ hochladen (bzw. bestehenden Ordner ersetzen). 2. Plugin aktivieren. Beim Update ohne Reaktivierung werden die Einstellungen beim nächsten Seitenaufruf angelegt. 3. Updates erscheinen ab Version 3.2.0 automatisch unter Dashboard → Aktualisierungen (Quelle: Releases auf git.stefan-erbe.com). 4. Unter Einstellungen → Mediathek SE Import Zuordnung, Cron und Duplikat-Erkennung prüfen. 5. Beiträge → Mediathek SE Import: Dateien hochladen, Vorschau prüfen, importieren. == Changelog == = 3.5.2 = * Duplikat-Erkennung: Zeitfenster für den Schlüssel standardmäßig ±6 Tage statt ±300 Tage. Reihen, deren Schlüssel sich jede Woche wiederholt (TALB ohne Kalenderwoche, z. B. „Reihe/1“), landeten sonst als Konflikt in _konflikt, weil die Beiträge der Vorwochen als Duplikate galten. War noch der alte Standard (300) eingestellt, wird er beim Update auf 6 umgestellt. * Passen mehrere Beiträge auf den Schlüssel, wird der mit genau demselben Sendetermin überschrieben statt die Datei als Konflikt beiseitezulegen = 3.5.1 = * Papierkorb-Ordner heißt jetzt „papierkorb“ (statt „_papierkorb“); vorhandene Dateien werden beim Update automatisch verschoben = 3.5.0 = * Vorschau: Jede Datei hat einen Button „löschen“ (mit Sicherheitsabfrage). Die Datei wird in den Unterordner _papierkorb verschoben und lässt sich unter „Zurückgestellte Dateien“ zurücklegen oder endgültig löschen. * Import-Reihenfolge nach Upload-Zeit: die zuerst hochgeladene Datei zuerst, die zuletzt hochgeladene zuletzt. Bei Duplikaten gewinnt so immer der neueste Upload. (Bisher alphabetisch.) „Nur die erste Datei importieren“ nimmt entsprechend die am längsten liegende Datei. * Vorschau zeigt Upload-Zeit jeder Datei = 3.4.0 = * Upload mit Fortschrittsbalken: hochgeladene/gesamte MB, Prozent und geschätzte Restzeit; Upload lässt sich abbrechen. Die Seite bleibt während des Uploads stehen, die Anzeige läuft daher in jedem Browser. * Zu große Dateien (Upload-Limit des Servers) werden vor dem Hochladen gemeldet statt nach dem Upload * Abgelaufene Sitzung beim Upload wird verständlich gemeldet = 3.3.2 = * Getestet mit WordPress 5.9, 6.8 und 7.1 * Update-Hinweis zeigt die Kompatibilität mit der installierten bzw. angebotenen WordPress-Version („Tested up to“ aus der readme.txt des Releases) statt „unbekannt“ = 3.3.1 = * Warteanzeige bei Upload und Import nutzt den Lade-Kreisel von WordPress; loader.gif (272 KB) entfernt – Plugin-ZIP von 330 KB auf rund 60 KB = 3.3.0 = * Eigene Kopie von getID3 (1.9.27, 2,6 MB) entfernt – das Plugin nutzt jetzt das in WordPress enthaltene getID3 (wp-includes/ID3), wie WordPress selbst beim Einlesen von Audiodateien. Plugin-ZIP deutlich kleiner, keine doppelt geladene Bibliothek mehr, getID3-Sicherheitsupdates kommen mit WordPress. * Fehlt getID3 in WordPress, meldet der Import das verständlich statt abzubrechen = 3.2.1 = * Updates und der Schalter „Automatische Aktualisierungen aktivieren“ erscheinen jetzt auch, wenn der Server api.wordpress.org nicht erreicht (WordPress bricht seine Update-Prüfung dann ab, bevor es andere Update-Quellen abfragt) = 3.2.0 = * Updates direkt im WordPress-Backend: Das Plugin fragt die Releases auf git.stefan-erbe.com ab (Update URI) und bietet neue Versionen unter Dashboard → Aktualisierungen an – inkl. „Details ansehen“ mit Changelog und automatischer Updates * Liegt das Plugin in einem anders benannten Ordner, bleibt dieser Ordner beim Update erhalten (Plugin bleibt aktiv) * Ab dieser Version muss das Plugin nicht mehr manuell per ZIP aktualisiert werden = 3.1.1 = * Rückwärtskompatibel zum Word-Makro „Mediathek SE Export“: Import-Buttons haben wieder id/name „create-all-posts“ und „create-first-post“ wie in 2.x (seit 3.0.0 fand das Makro die Buttons nicht und meldete „Keine Beiträge zum importieren gefunden“, ohne zu importieren) * Einzel-/Massen-Import wird am Namen des gedrückten Buttons erkannt, nicht an dessen Wert (ältere Internet-Explorer-Modi senden bei <button> den Beschriftungstext) = 3.1.0 = * Mehrere Autoren in TCOM/TEXT („A, B“, „A; B“ oder null-getrennt): 1. Person → Beitragsautor, 2. Person → mediathek_se_coautor (Benutzer-ID) + mediathek_se_coautor_name; neue Umwandlung „WP-Benutzer suchen (2. Person)“ * Zuordnung: neue Standardzeile „Co-Autor“ (TCOM, Fallback TEXT → mediathek_se_coautor). Wurde die Zuordnung bereits gespeichert, Zeile ergänzen oder auf Standard zurücksetzen. * Kurzprotokoll (#MseExpMsg, .MsgExpMsg) nach manuellem Import wieder offen sichtbar in div#import_log wie in 2.x = 3.0.0 = Sicherheit & Fundament * Upload nur noch für .mp3 mit MIME audio/mpeg und von getID3 als MP3 erkannt; Dateinamen bereinigt, keine stillen Überschreibungen * Import/Upload erfordern publish_posts (vorher edit_posts), Einstellungen manage_options * Alle Ausgaben escaped; Formulare über admin-post.php mit Nonce und Weiterleitung (kein doppelter Import beim Neuladen) * Eigene getID3 nur, wenn noch keine geladen ist (verhindert Fatal Error bei gleichzeitiger Nutzung der WordPress-getID3) * Optionen nicht mehr bei jedem Seitenaufruf geschrieben; Altoption "mediathek-se-import" wird entfernt * Code in Klassen aufgeteilt (includes/), JS/CSS als eigene Dateien (fehlende JS-Funktionen ergänzt), jQuery-Kopie entfernt * Ungenutzter posts_where-Filter (post_title_like) entfernt Daten & Bugfixes * Interviewpartner: Kommas (und Semikolons) innerhalb der Klammern erlaubt, getrennt wird nur außerhalb; verschachtelte Klammern möglich * ID3v2.3 (IPLS): Rohdaten werden gelesen – getID3 hatte an Kommas zerlegt, Funktionen gingen verloren * Fehlender/ungültiger Sendetermin führt nicht mehr zu 01.01.1970 + Sofortveröffentlichung, sondern zu einem Entwurf mit Warnung * Namen von Sprecher/Producer/Autor werden immer zusätzlich als Text gespeichert (…_name, mediathek_se_autor_name) * TEXT als Autor-Fallback, TLAN → mediathek_se_sprache, TCON wird vollständig übernommen ("Bericht/Interview") * Fehlende Taxonomien werden gemeldet statt still ignoriert * Datei wird verschoben statt in den Speicher geladen; Fehler legen die Datei in _fehler/ ab * Absturz in WordPress (wp_read_audio_metadata, PHP 8) bei IPLS-Frames abgefangen * Fehler bei einer Datei brechen den Lauf nicht mehr ab Neu * Zuordnungstabelle (Einstellungen), Standard = bisheriges Verhalten * Duplikat-Erkennung mit Überschreiben, Zeitfenster gegen jährlich wiederkehrende Schlüssel * Automatischer Import per WP-Cron, Protokoll, E-Mail-Bericht * Vorschau zeigt, ob eine Datei neu angelegt, überschrieben oder als Konflikt behandelt wird * Kurzprotokoll für MSE-Export (#MseExpMsg) bleibt im bisherigen Format erhalten = 2.4.0 = * PHP-8-Kompatibilität, getID3 1.9.27, Absicherung fehlender ID3-Frames, TIPL-Paare (ID3v2.4) werden als "Name (Funktion)" übernommen, Nonces für Upload und Import, Altlasten (backup/, Demos, Hilfsprogramme) entfernt = 2.1.4 = * Only Files with ".mp3" at the end of the file name. If ".mp3" is somewhere in the file name, it is ignored, so the import doesn't get unfinshed uploads with ".mp3.filepart" etc. = 2.1.5 = * Dateinamen werden umbenannt unter Verwendung von sanitize_file_name(). = 2.1.6 = * Es werden nun auch Dateien importiert, die denselben Titel haben wie bereits vorhandene Posts. = 2.1.7 = * Import des Datums verbessert. Funktioniert jetzt bei beliebiger Länge durch Umwandeln zunächst in Unixdatum und wieder zurück in Datumsformat. = 2.1.8 = * (Mehrere) Interviewpartner und ihre Funktionen werden nun in Array umgewandelt. Weiterverarbeitung muss noch umgesetzt werden. = 2.1.9 = * Icons hinzugefügt * Buttons neu: <button> statt <input type="submit"> * Funktionen der Interviewpartner werden nun in das Feld "Beschreibung" der Taxonomie "Interviewpartner" geschrieben, sofern das Feld leer ist. Ist das Feld bereits belegt, wird die Funktion, die über den Import hereinkam, verworfen. = 2.2.1 = * Import-Protokoll ausführlich und in richtiger Meldungs-Reihenfolge. = 2.2.2 = * Upload-Animation = 2.2.4 = * Zusätzliches, verkürztes Import-Protokoll für MSE-Export