From 4537613ed7a878ba5485b6514a605afa4d1ea841 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 20 Dec 2025 13:55:06 +0100 Subject: [PATCH] Added manifest and pipelines to allow install via web ui. --- .gitea/workflows/release.yaml | 55 ++++++++++++++++++++++++++++++++++- README.md | 19 ++++++++++++ manifest.json | 12 ++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 manifest.json diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 3b92c3e..270aec1 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -70,7 +70,15 @@ jobs: echo "artifact_name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT echo "Found artifact: ${ARTIFACT}" + - name: Calculate checksum + id: checksum + run: | + CHECKSUM=$(md5sum "${{ steps.jprm.outputs.artifact }}" | awk '{print $1}') + echo "checksum=${CHECKSUM}" >> $GITHUB_OUTPUT + echo "MD5 Checksum: ${CHECKSUM}" + - name: Create Release + id: create_release env: GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -80,7 +88,7 @@ jobs: GITEA_URL="${{ github.server_url }}" # Prepare release body - RELEASE_BODY="Jellypod Jellyfin Plugin ${{ steps.get_version.outputs.version }}\n\nSee attached files for plugin installation." + RELEASE_BODY="Jellypod Jellyfin Plugin ${{ steps.get_version.outputs.version }}\n\nSee attached files for plugin installation.\n\nTo install, add this repository URL to Jellyfin:\n\`${GITEA_URL}/${REPO_OWNER}/${REPO_NAME}/raw/branch/master/manifest.json\`" RELEASE_BODY_JSON=$(echo -n "${RELEASE_BODY}" | jq -Rs .) # Create release using Gitea API @@ -101,6 +109,7 @@ jobs: if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then RELEASE_ID=$(echo "$BODY" | jq -r '.id') + echo "release_id=${RELEASE_ID}" >> $GITHUB_OUTPUT echo "Created release with ID: ${RELEASE_ID}" else echo "Failed to create release. HTTP ${HTTP_CODE}" @@ -126,3 +135,47 @@ jobs: echo "Release created successfully!" echo "View at: ${GITEA_URL}/${REPO_OWNER}/${REPO_NAME}/releases/tag/${{ steps.get_version.outputs.version }}" + + - name: Update manifest.json + env: + GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + REPO_OWNER="${{ github.repository_owner }}" + REPO_NAME="${{ github.event.repository.name }}" + GITEA_URL="${{ github.server_url }}" + VERSION="${{ steps.get_version.outputs.version_number }}" + CHECKSUM="${{ steps.checksum.outputs.checksum }}" + ARTIFACT_NAME="${{ steps.jprm.outputs.artifact_name }}" + TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + DOWNLOAD_URL="${GITEA_URL}/${REPO_OWNER}/${REPO_NAME}/releases/download/${{ steps.get_version.outputs.version }}/${ARTIFACT_NAME}" + + # Configure git + git config user.name "Gitea Actions" + git config user.email "actions@gitea.tourolle.paris" + + # Fetch and checkout master branch + git fetch origin master + git checkout master + + # Create new version entry + NEW_VERSION=$(cat < manifest.tmp && mv manifest.tmp manifest.json + + # Commit and push + git add manifest.json + git commit -m "Update manifest.json for version ${VERSION}" + git push origin master + + echo "Manifest updated successfully!" diff --git a/README.md b/README.md index b8af7c1..2623274 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ 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 @@ -18,6 +26,17 @@ A Jellyfin plugin that adds podcast support to your media server. ## 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) diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..6395da0 --- /dev/null +++ b/manifest.json @@ -0,0 +1,12 @@ +[ + { + "guid": "c713faf4-4e50-4e87-941a-1200178ed605", + "name": "Jellypod", + "description": "Jellypod allows you to subscribe to podcast RSS feeds, automatically download episodes, and manage your podcast library within Jellyfin. Episodes are stored as standard audio files and integrate with Jellyfin's built-in audio player.", + "overview": "Podcast management plugin for Jellyfin", + "owner": "dtourolle", + "category": "General", + "imageUrl": "https://gitea.tourolle.paris/dtourolle/jellypod/raw/branch/master/Jellyfin.Plugin.Jellypod/Images/channel-icon.jpg", + "versions": [] + } +]