mirror of
https://github.com/forkless/Piperless.git
synced 2026-08-17 09:09:49 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
976df843f1 | ||
|
|
3ba494ece6 | ||
|
|
41f451c5d5 | ||
|
|
e361d73af7 |
@@ -5,13 +5,11 @@
|
||||
**Findings:** 1 (fixed). Open: 0
|
||||
**Auditor:** DeepSeek V4 Pro (systematic automated review)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
29 categories reviewed. One logic-level bug found and fixed mid-session (settings data loss on partial form save). Zero outstanding security vulnerabilities — critical, high, medium, or low.
|
||||
|
||||
---
|
||||
|
||||
## Results
|
||||
|
||||
@@ -47,7 +45,6 @@
|
||||
| 28 | File permissions | ✅ Pass | Cache directory created with proper permissions. Log `chmod 0600`. |
|
||||
| 29 | HTTP security headers | ✅ Pass | `Content-Range`, `Accept-Ranges: bytes`, `Cache-Control: public, max-age=86400`. |
|
||||
|
||||
---
|
||||
|
||||
## Legend
|
||||
|
||||
@@ -56,7 +53,6 @@
|
||||
| ✅ Pass | No vulnerability found |
|
||||
| 🔧 Fixed | Bug found and resolved |
|
||||
|
||||
---
|
||||
|
||||
## Defense-in-Depth Layers
|
||||
|
||||
@@ -68,7 +64,6 @@ Piperless shells out to the Piper TTS engine and ffmpeg — both system binaries
|
||||
4. **Output layer:** All HTML output goes through WordPress escaping functions. REST responses use `sanitize_text_field()`. Player attributes use `esc_attr()` and `esc_url()`.
|
||||
5. **Failure safety:** Every execution path has a fallback. Failed MP3 conversion stores WAV. Failed ffprobe reads the WAV header. Failed temp writes clean up. Mutexes release in all branches.
|
||||
|
||||
---
|
||||
|
||||
## Audit Methodology
|
||||
|
||||
|
||||
@@ -15,12 +15,11 @@ Piperless converts every published post into a natural-sounding audio transcript
|
||||
- **Commuting** readers can consume posts as audio
|
||||
- **Non-native speakers** benefit from hearing correct pronunciation
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Automatic generation** — optionally generate audio when a post is published. No per-post action required.
|
||||
- **6 player themes** — Classic, Minimal, Modern Dark, NewsViews, NewsViews Classic, and Custom CSS. Match your brand.
|
||||
- **6 player themes** — Classic, Minimal, Modern Dark, Ron Burgundy, Dan Rather Blue, and Custom CSS. Match your brand.
|
||||
- **Per-post overrides** — customize voice, language, quality, player style, and placement for individual posts via the Gutenberg sidebar.
|
||||
- **Content-addressed caching** — identical text + voice + language always produces the same audio file. Never regenerate the same content twice.
|
||||
- **Multi-language** — Piper supports 20+ languages. Install the voice models you need and Piperless auto-discovers them.
|
||||
@@ -31,7 +30,6 @@ Piperless converts every published post into a natural-sounding audio transcript
|
||||
- **Production-hardened** — 29/29 security audit clearance. Rate limiting, authorization layering, process timeout guards, open_basedir aware.
|
||||
- **8 admin languages** — Dutch, German, French, Spanish, Chinese (Simplified), Japanese, Brazilian Portuguese, and Italian translations included.
|
||||
|
||||
---
|
||||
|
||||
## Why the Excerpt Matters
|
||||
|
||||
@@ -45,7 +43,6 @@ Piperless solves this by **using the WordPress excerpt field first**. Write a cl
|
||||
|
||||
**Pro tip:** Think of the excerpt as your "audio script." It doesn't replace the post — it's the version that sounds natural when read aloud.
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -60,7 +57,6 @@ Piperless solves this by **using the WordPress excerpt field first**. Write a cl
|
||||
|
||||
**Piperless will not work on shared hosting.** It requires shell access to install Piper and the ability to run system binaries via `proc_open`.
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
@@ -107,7 +103,6 @@ Go to **Settings → Piperless** and set:
|
||||
|
||||
Open any post in the block editor. In the Piperless sidebar panel, click **Generate Audio**. The audio player will appear in your post automatically based on your placement settings.
|
||||
|
||||
---
|
||||
|
||||
## Admin Panel
|
||||
|
||||
@@ -124,7 +119,6 @@ Piperless adds a settings page under **Settings → Piperless** with 8 tabs:
|
||||
| **Help** | Usage instructions and ffmpeg notes |
|
||||
| **About** | Version and contact information |
|
||||
|
||||
---
|
||||
|
||||
## Player Themes
|
||||
|
||||
@@ -133,15 +127,14 @@ Six built-in themes plus unlimited custom CSS:
|
||||
| Theme | Description |
|
||||
|-------|-------------|
|
||||
| **Classic** | Blue accent, clean borders |
|
||||
| **Minimal** | Dark text, no border decoration |
|
||||
| **Modern Dark** | Blue accent on dark background |
|
||||
| **NewsViews** | Burgundy accent (#B31942) |
|
||||
| **NewsViews Classic** | Navy accent (#233452) |
|
||||
| **Minimal** | Clean, understated |
|
||||
| **Modern Dark** | Dark background |
|
||||
| **Ron Burgundy** | Bold burgundy |
|
||||
| **Dan Rather Blue** | Classic navy |
|
||||
| **Custom CSS** | Full control — base theme with your own styles |
|
||||
|
||||
Each theme is a standalone CSS file. Switch themes instantly from the Styling tab.
|
||||
|
||||
---
|
||||
|
||||
## Accessibility
|
||||
|
||||
@@ -152,7 +145,6 @@ Piperless was built with accessibility in mind:
|
||||
- **Keyboard navigation** — player is a navigable region
|
||||
- **Content-as-transcript** — since the audio is generated from the post text, the text itself serves as the transcript for WCAG compliance
|
||||
|
||||
---
|
||||
|
||||
## Security
|
||||
|
||||
@@ -169,7 +161,6 @@ Piperless shells out to system binaries. It was built with defense-in-depth from
|
||||
|
||||
Comprehensive review: **29/29 categories cleared. 1 logic bug found and fixed. Zero open findings.** [See full audit →](AUDIT.md)
|
||||
|
||||
---
|
||||
|
||||
## Translation
|
||||
|
||||
@@ -188,7 +179,6 @@ Piperless ships with complete translations for:
|
||||
|
||||
The admin panel, Gutenberg sidebar, and frontend player are fully translated. See `languages/` for `.po` and `.mo` files.
|
||||
|
||||
---
|
||||
|
||||
## Filters & Hooks
|
||||
|
||||
@@ -204,7 +194,6 @@ The admin panel, Gutenberg sidebar, and frontend player are fully translated. Se
|
||||
- `[piperless_player]` — render the audio player for the current post
|
||||
- `[piperless_player post_id="123"]` — render the player for a specific post
|
||||
|
||||
---
|
||||
|
||||
## Development
|
||||
|
||||
@@ -224,13 +213,11 @@ includes/
|
||||
|
||||
See `doc/index.html` for full developer documentation with architecture diagram, method tables, and security model.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
MIT-licensed. Piperless is free and open-source. Piper TTS is also MIT-licensed. Voice models vary — check individual model licenses.
|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Piperless Player — NewsViews Classic Theme
|
||||
* Piperless Player — Dan Rather Blue Theme
|
||||
*
|
||||
* Based on the NewsViews style with #233452 replacing the burgundy accent.
|
||||
* Based on the Ron Burgundy style with #233452 replacing the burgundy accent.
|
||||
*/
|
||||
|
||||
.piperless-player--newsviews-classic {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Piperless Player — NewsViews Theme
|
||||
* Piperless Player — Ron Burgundy Theme
|
||||
*
|
||||
* Based on the Classic style with #B31942 replacing the blue accent.
|
||||
*/
|
||||
|
||||
@@ -260,8 +260,8 @@
|
||||
{ value: 'classic', label: 'Classic' },
|
||||
{ value: 'minimal', label: 'Minimal' },
|
||||
{ value: 'dark', label: 'Modern Dark' },
|
||||
{ value: 'newsviews', label: 'NewsViews' },
|
||||
{ value: 'newsviews-classic', label: 'NewsViews Classic' },
|
||||
{ value: 'newsviews', label: 'Ron Burgundy' },
|
||||
{ value: 'newsviews-classic', label: 'Dan Rather Blue' },
|
||||
],
|
||||
onChange: function ( val ) { updateMeta( '_piperless_style', val ); },
|
||||
} ),
|
||||
|
||||
+5
-5
@@ -324,11 +324,11 @@ based on the <code>?tab=</code> query parameter. Custom field types (<code>mode
|
||||
<h4>Themes</h4>
|
||||
<table>
|
||||
<tr><th>CSS Class</th><th>Name</th><th>Accent</th></tr>
|
||||
<tr><td>piperless-player--classic</td><td>Classic</td><td>#2271b1 (blue)</td></tr>
|
||||
<tr><td>piperless-player--minimal</td><td>Minimal</td><td>#333333 (dark gray), no border</td></tr>
|
||||
<tr><td>piperless-player--dark</td><td>Modern Dark</td><td>#2271b1 on dark bg</td></tr>
|
||||
<tr><td>piperless-player--newsviews</td><td>NewsViews</td><td>#B31942 (burgundy)</td></tr>
|
||||
<tr><td>piperless-player--newsviews-classic</td><td>NewsViews Classic</td><td>#233452 (navy)</td></tr>
|
||||
<tr><td>piperless-player--classic</td><td>Classic</td><td>Blue accent, clean borders</td></tr>
|
||||
<tr><td>piperless-player--minimal</td><td>Minimal</td><td>Clean, understated</td></tr>
|
||||
<tr><td>piperless-player--dark</td><td>Modern Dark</td><td>Dark background</td></tr>
|
||||
<tr><td>piperless-player--newsviews</td><td>Ron Burgundy</td><td>Bold burgundy</td></tr>
|
||||
<tr><td>piperless-player--newsviews-classic</td><td>Dan Rather Blue</td><td>Classic navy</td></tr>
|
||||
<tr><td>—</td><td>Custom CSS</td><td>User-defined via textarea (sanitized)</td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||
*
|
||||
* ## Player style
|
||||
*
|
||||
* Six themes are available (Classic, Minimal, Modern Dark, NewsViews,
|
||||
* NewsViews Classic, Custom CSS). The theme class is applied as
|
||||
* Six themes are available (Classic, Minimal, Modern Dark, Ron Burgundy,
|
||||
* Dan Rather Blue, Custom CSS). The theme class is applied as
|
||||
* piperless-player--<style> on the container div. Per-post override
|
||||
* via _piperless_style meta.
|
||||
*
|
||||
|
||||
@@ -282,8 +282,8 @@ class Settings {
|
||||
'classic' => __( 'Classic', 'piperless' ),
|
||||
'minimal' => __( 'Minimal', 'piperless' ),
|
||||
'dark' => __( 'Modern Dark', 'piperless' ),
|
||||
'newsviews' => __( 'NewsViews', 'piperless' ),
|
||||
'newsviews-classic' => __( 'NewsViews Classic', 'piperless' ),
|
||||
'newsviews' => __( 'Ron Burgundy', 'piperless' ),
|
||||
'newsviews-classic' => __( 'Dan Rather Blue', 'piperless' ),
|
||||
'---' => '──────────',
|
||||
'custom' => __( 'Custom CSS', 'piperless' ),
|
||||
],
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Minimaler Schweregrad für die Protokollierung.",
|
||||
"Models Directory": "Modelle-Verzeichnis",
|
||||
"Modern Dark": "Modern Dunkel",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "Kein passendes Piper-Stimmenmodell gefunden. Überprüfe dein Modelle-Verzeichnis.",
|
||||
"No text content available for this post.": "Kein Textinhalt für diesen Beitrag verfügbar.",
|
||||
"Orphaned files cleared.": "Verwaiste Dateien gelöscht.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (Minimal)",
|
||||
"FFprobe Binary Path": "FFprobe-Binärpfad",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluter Pfad zur ffprobe-Binärdatei für die Erkennung der Audiodauer. Automatische Erkennung aus dem ffmpeg-Verzeichnis, wenn leer.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: German <LL@li.org>\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Modelle-Verzeichnis"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Modern Dunkel"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "Kein passendes Piper-Stimmenmodell gefunden. Überprüfe dein Modelle-Verzeichnis."
|
||||
@@ -478,3 +474,7 @@ msgstr "Absoluter Pfad zur ffprobe-Binärdatei für die Erkennung der Audiodauer
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Gravedad mínima para registrar en el log.",
|
||||
"Models Directory": "Directorio de modelos",
|
||||
"Modern Dark": "Oscuro moderno",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "No se encontró un modelo de voz Piper adecuado. Revisa tu directorio de modelos.",
|
||||
"No text content available for this post.": "No hay contenido de texto disponible para esta entrada.",
|
||||
"Orphaned files cleared.": "Archivos huérfanos eliminados.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (mínimo)",
|
||||
"FFprobe Binary Path": "Ruta del binario FFprobe",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Ruta absoluta al binario ffprobe para la detección de la duración del audio. Se detecta automáticamente desde el directorio ffmpeg si se deja vacío.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Spanish <LL@li.org>\n"
|
||||
"Language: es_ES\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Directorio de modelos"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Oscuro moderno"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "No se encontró un modelo de voz Piper adecuado. Revisa tu directorio de modelos."
|
||||
@@ -478,3 +474,7 @@ msgstr "Ruta absoluta al binario ffprobe para la detección de la duración del
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Sévérité minimale à enregistrer dans le journal.",
|
||||
"Models Directory": "Répertoire des modèles",
|
||||
"Modern Dark": "Sombre moderne",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "Aucun modèle de voix Piper approprié trouvé. Vérifiez votre répertoire de modèles.",
|
||||
"No text content available for this post.": "Aucun contenu texte disponible pour cet article.",
|
||||
"Orphaned files cleared.": "Fichiers orphelins supprimés.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (minimal)",
|
||||
"FFprobe Binary Path": "Chemin du binaire FFprobe",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Chemin absolu vers le binaire ffprobe pour la détection de la durée audio. Auto-détecté depuis le répertoire ffmpeg si laissé vide.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: French <LL@li.org>\n"
|
||||
"Language: fr_FR\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Répertoire des modèles"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Sombre moderne"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "Aucun modèle de voix Piper approprié trouvé. Vérifiez votre répertoire de modèles."
|
||||
@@ -478,3 +474,7 @@ msgstr "Chemin absolu vers le binaire ffprobe pour la détection de la durée au
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Livello di gravità minimo da registrare nel log.",
|
||||
"Models Directory": "Directory dei modelli",
|
||||
"Modern Dark": "Modern Dark",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "Nessun modello vocale Piper adatto trovato. Controlla la directory dei modelli.",
|
||||
"No text content available for this post.": "Nessun contenuto testuale disponibile per questo post.",
|
||||
"Orphaned files cleared.": "File orfani eliminati.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (minimo)",
|
||||
"FFprobe Binary Path": "Percorso binario FFprobe",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Percorso assoluto al binario ffprobe per il rilevamento della durata audio. Rilevato automaticamente dalla directory ffmpeg se lasciato vuoto.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: it <LL@li.org>\n"
|
||||
"Language: it_IT\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Directory dei modelli"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Modern Dark"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "Nessun modello vocale Piper adatto trovato. Controlla la directory dei modelli."
|
||||
@@ -478,3 +474,7 @@ msgstr "Percorso assoluto al binario ffprobe per il rilevamento della durata aud
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "ログに記録する最小の重要度。",
|
||||
"Models Directory": "モデルディレクトリ",
|
||||
"Modern Dark": "モダンダーク",
|
||||
"NewsViews Classic": "ニュースビュークラシック",
|
||||
"No suitable Piper voice model found. Check your models directory.": "適切なPiper音声モデルが見つかりません。モデルディレクトリを確認してください。",
|
||||
"No text content available for this post.": "この投稿にはテキストコンテンツがありません。",
|
||||
"Orphaned files cleared.": "孤立ファイルをクリアしました。",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps(最小)",
|
||||
"FFprobe Binary Path": "FFprobeバイナリパス",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "音声の長さ検出用ffprobeバイナリへの絶対パス。空の場合はffmpegディレクトリから自動検出されます。",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。"
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。",
|
||||
"Dan Rather Blue": "ダン・ラザー・ブルー"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Japanese <LL@li.org>\n"
|
||||
"Language: ja\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "モデルディレクトリ"
|
||||
msgid "Modern Dark"
|
||||
msgstr "モダンダーク"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "ニュースビュークラシック"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "適切なPiper音声モデルが見つかりません。モデルディレクトリを確認してください。"
|
||||
@@ -478,3 +474,7 @@ msgstr "音声の長さ検出用ffprobeバイナリへの絶対パス。空の
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "ダン・ラザー・ブルー"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Minimale ernst om in het log vast te leggen.",
|
||||
"Models Directory": "Modellenmap",
|
||||
"Modern Dark": "Modern Donker",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "Geen geschikt Piper stemmodel gevonden. Controleer je modellenmap.",
|
||||
"No text content available for this post.": "Geen tekstinhoud beschikbaar voor dit bericht.",
|
||||
"Orphaned files cleared.": "Verweesde bestanden gewist.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (minimaal)",
|
||||
"FFprobe Binary Path": "FFprobe-binair pad",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch gedetecteerd vanuit de ffmpeg-directory, indien leeg gelaten.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Dutch <LL@li.org>\n"
|
||||
"Language: nl_NL\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Modellenmap"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Modern Donker"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "Geen geschikt Piper stemmodel gevonden. Controleer je modellenmap."
|
||||
@@ -478,3 +474,7 @@ msgstr "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "Severidade mínima para registrar no log.",
|
||||
"Models Directory": "Diretório de Modelos",
|
||||
"Modern Dark": "Modern Dark",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "Nenhum modelo de voz Piper adequado encontrado. Verifique seu diretório de modelos.",
|
||||
"No text content available for this post.": "Nenhum conteúdo de texto disponível para esta publicação.",
|
||||
"Orphaned files cleared.": "Arquivos órfãos limpos.",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps (mínimo)",
|
||||
"FFprobe Binary Path": "Caminho do binário FFprobe",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Caminho absoluto para o binário ffprobe para detecção de duração do áudio. Detectado automaticamente do diretório ffmpeg se deixado vazio.",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio."
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio.",
|
||||
"Dan Rather Blue": "Dan Rather Blue"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: pt <LL@li.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "Diretório de Modelos"
|
||||
msgid "Modern Dark"
|
||||
msgstr "Modern Dark"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "Nenhum modelo de voz Piper adequado encontrado. Verifique seu diretório de modelos."
|
||||
@@ -478,3 +474,7 @@ msgstr "Caminho absoluto para o binário ffprobe para detecção de duração do
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio."
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "Dan Rather Blue"
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
"Minimum severity to record in the log.": "记录到日志的最低严重程度。",
|
||||
"Models Directory": "模型目录",
|
||||
"Modern Dark": "现代深色",
|
||||
"NewsViews Classic": "NewsViews Classic",
|
||||
"No suitable Piper voice model found. Check your models directory.": "未找到合适的 Piper 声音模型。请检查您的模型目录。",
|
||||
"No text content available for this post.": "此文章没有可用的文本内容。",
|
||||
"Orphaned files cleared.": "孤立文件已清除。",
|
||||
@@ -125,6 +124,7 @@
|
||||
"12 kbps (minimal)": "12 kbps(最小)",
|
||||
"FFprobe Binary Path": "FFprobe 二进制文件路径",
|
||||
"Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "ffprobe 二进制文件的绝对路径,用于音频时长检测。留空则从 ffmpeg 目录自动检测。",
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。"
|
||||
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。",
|
||||
"Dan Rather Blue": "丹·拉瑟蓝"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: Piperless 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/example/piperless/issues\n"
|
||||
"POT-Creation-Date: 2024-01-01 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-10 00:00+0000\n"
|
||||
"PO-Revision-Date: 2026-05-11 00:00+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: zh <LL@li.org>\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -236,10 +236,6 @@ msgstr "模型目录"
|
||||
msgid "Modern Dark"
|
||||
msgstr "现代深色"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgstr "NewsViews Classic"
|
||||
|
||||
#: includes/class-transcriber.php:83
|
||||
msgid "No suitable Piper voice model found. Check your models directory."
|
||||
msgstr "未找到合适的 Piper 声音模型。请检查您的模型目录。"
|
||||
@@ -478,3 +474,7 @@ msgstr "ffprobe 二进制文件的绝对路径,用于音频时长检测。留
|
||||
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
|
||||
msgstr "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。"
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr "丹·拉瑟蓝"
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ msgid "Above & below content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-settings.php:now
|
||||
msgid "NewsViews Classic"
|
||||
msgid "Dan Rather Blue"
|
||||
msgstr ""
|
||||
|
||||
#: assets/js/gutenberg.js
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
* Plugin Name: Piperless — Audio Transcripts
|
||||
* Plugin URI: https://forkless.com
|
||||
* Description: Generate audio transcripts of WordPress posts using Piper TTS. Customizable players, caching, and full Gutenberg integration.
|
||||
* Version: 1.1.1
|
||||
* Version: 1.1.2
|
||||
* Requires at least: 6.0
|
||||
* Requires PHP: 8.0
|
||||
* Author: Forkless
|
||||
@@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||
}
|
||||
|
||||
// ── Constants ────────────────────────────────────────────────────────────────
|
||||
define( 'PIPERLESS_VERSION', '1.1.1' );
|
||||
define( 'PIPERLESS_VERSION', '1.1.2' );
|
||||
define( 'PIPERLESS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||||
define( 'PIPERLESS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'PIPERLESS_PLUGIN_FILE', __FILE__ );
|
||||
|
||||
Reference in New Issue
Block a user