Duncan Tourolle d890c11a9b
All checks were successful
🏗️ Build Plugin / build (push) Successful in 2m1s
🧪 Test Plugin / test (push) Successful in 1m0s
🚀 Release Plugin / build-and-release (push) Successful in 2m1s
Add a retention timer for podcast
2025-12-30 16:20:26 +01:00
2022-05-15 23:24:15 +02:00
2025-12-13 23:57:58 +01:00
2025-12-14 14:25:43 +01:00
2021-12-13 16:58:05 -07:00
2025-12-14 00:09:18 +01:00
2022-05-15 23:24:15 +02:00
2025-12-13 23:57:58 +01:00
2020-06-16 12:17:18 -04:00

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:

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):

#!/bin/bash
INPUT="$1"
OUTPUT="$2"
ffmpeg-normalize "$INPUT" -o "$OUTPUT" -c:a libmp3lame -b:a 128k

Format conversion (bash + ffmpeg):

#!/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

Podcast Library

Plugin Settings

Plugin Settings

Installation

  1. In Jellyfin, go to DashboardPluginsRepositories
  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
  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

Build

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.

See the .vscode folder for VS Code debugging configuration.

License

This project is licensed under the GPLv3 - see the LICENSE file for details.

Description
No description provided
Readme GPL-3.0 619 KiB
2025-12-30 16:20:26 +01:00
Languages
C# 61.9%
HTML 38.1%