129 lines
3.3 KiB
Markdown
129 lines
3.3 KiB
Markdown
# Jellypod
|
|
|
|
A Jellyfin plugin that adds podcast support to your media server.
|
|
|
|
## Quick Install
|
|
|
|
Add this repository URL in Jellyfin (Dashboard → Plugins → Repositories):
|
|
|
|
```
|
|
https://gitea.tourolle.paris/dtourolle/jellypod/raw/branch/master/manifest.json
|
|
```
|
|
|
|
## Features
|
|
|
|
- Browse and subscribe to podcasts
|
|
- Automatic episode downloads
|
|
- Integration with Jellyfin's library system
|
|
- Post-download script hook for audio processing
|
|
|
|
## Post-Download Script Hook
|
|
|
|
Jellypod supports running a custom script on each downloaded episode before it's added to your library. This is useful for:
|
|
|
|
- Audio normalization (e.g., using ffmpeg-normalize)
|
|
- Format conversion
|
|
- Metadata enhancement
|
|
- Custom processing workflows
|
|
|
|
### Configuration
|
|
|
|
In the plugin settings (Dashboard → Plugins → Jellypod):
|
|
|
|
1. **Post-Download Script Path**: Full path to your script or executable
|
|
2. **Script Timeout**: Maximum execution time in seconds (default: 60)
|
|
|
|
### Script API
|
|
|
|
Your script will be called with two arguments:
|
|
|
|
```bash
|
|
script <input_file> <output_file>
|
|
```
|
|
|
|
- `input_file`: Path to the downloaded episode (read-only)
|
|
- `output_file`: Path where your script should write the processed file
|
|
|
|
### Example Scripts
|
|
|
|
**Audio normalization (bash + ffmpeg):**
|
|
```bash
|
|
#!/bin/bash
|
|
INPUT="$1"
|
|
OUTPUT="$2"
|
|
ffmpeg-normalize "$INPUT" -o "$OUTPUT" -c:a libmp3lame -b:a 128k
|
|
```
|
|
|
|
**Format conversion (bash + ffmpeg):**
|
|
```bash
|
|
#!/bin/bash
|
|
INPUT="$1"
|
|
OUTPUT="$2"
|
|
ffmpeg -i "$INPUT" -c:a aac -b:a 128k "$OUTPUT"
|
|
```
|
|
|
|
### Behavior
|
|
|
|
- If the script succeeds (exit code 0) and creates the output file, the processed file is added to your library
|
|
- If the script fails, times out, or doesn't create an output file, the original downloaded file is used instead
|
|
- All script output (stdout/stderr) is logged for debugging
|
|
- Leave the script path empty to disable post-processing
|
|
|
|
## Screenshots
|
|
|
|
### Podcast Library
|
|

|
|
|
|
### Plugin Settings
|
|

|
|
|
|
## Installation
|
|
|
|
### From Plugin Repository (Recommended)
|
|
|
|
1. In Jellyfin, go to **Dashboard** → **Plugins** → **Repositories**
|
|
2. Click the **+** button to add a new repository
|
|
3. Enter:
|
|
- **Repository Name**: `Jellypod`
|
|
- **Repository URL**: `https://gitea.tourolle.paris/dtourolle/jellypod/raw/branch/master/manifest.json`
|
|
4. Click **Save**
|
|
5. Go to **Catalog** tab and find **Jellypod**
|
|
6. Click **Install** and restart Jellyfin
|
|
|
|
### Manual Installation
|
|
|
|
1. Download the latest release from [Releases](https://gitea.tourolle.paris/dtourolle/jellypod/releases)
|
|
2. Extract the contents to your Jellyfin plugins directory:
|
|
- **Linux**: `~/.local/share/jellyfin/plugins/Jellypod/`
|
|
- **Windows**: `%LOCALAPPDATA%\jellyfin\plugins\Jellypod\`
|
|
- **Docker**: `/config/plugins/Jellypod/`
|
|
3. Restart Jellyfin
|
|
|
|
### Building from Source
|
|
|
|
#### Requirements
|
|
|
|
- [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
|
|
|
|
#### Build
|
|
|
|
```bash
|
|
dotnet build
|
|
```
|
|
|
|
The plugin DLL will be in `Jellyfin.Plugin.Jellypod/bin/Debug/net8.0/`.
|
|
|
|
## Development
|
|
|
|
This plugin is based on the [Jellyfin Plugin Template](https://github.com/jellyfin/jellyfin-plugin-template).
|
|
|
|
See the `.vscode` folder for VS Code debugging configuration.
|
|
|
|
## License
|
|
|
|
This project is licensed under the GPLv3 - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Links
|
|
|
|
- **Repository**: https://gitea.tourolle.paris/dtourolle/jellypod
|