Compare commits
14 Commits
854aeb0038
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f9bf27756 | ||
|
|
6ba477f215 | ||
|
|
1a8a5d14c1 | ||
|
|
9773fc7b4a | ||
|
|
583239deb2 | ||
|
|
b9c76fbdff | ||
|
|
725a39b3f1 | ||
|
|
ab403c0441 | ||
|
|
c69d919784 | ||
|
|
6ed3988fe6 | ||
|
|
fbf2563f26 | ||
|
|
8e31ad54c5 | ||
|
|
f036459d3f | ||
|
|
94a918a787 |
106
.gitea/workflows/build.yml
Normal file
106
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
name: Build Prowlarr Container
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- develop
|
||||||
|
schedule:
|
||||||
|
- cron: '0 4 * * *' # Daily at 4:00 UTC
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
# On schedule/dispatch, build both branches; otherwise only the pushed branch
|
||||||
|
branch: ${{ github.event_name == 'schedule' && fromJson('["main", "develop"]') || fromJson(format('["{0}"]', github.ref_name)) }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ matrix.branch }}
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Set build variables
|
||||||
|
id: vars
|
||||||
|
run: |
|
||||||
|
# Date ISO 8601
|
||||||
|
echo "build_date=$(date -u +%Y-%m-%dT%H:%M:%S%z)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Short SHA of docker-prowlarr repo
|
||||||
|
echo "sha_short=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Corresponding upstream Prowlarr branch
|
||||||
|
PROWLARR_BRANCH="develop"
|
||||||
|
if [ "${{ matrix.branch }}" = "main" ]; then
|
||||||
|
PROWLARR_BRANCH="master"
|
||||||
|
fi
|
||||||
|
echo "prowlarr_branch=${PROWLARR_BRANCH}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Latest commit SHA on the upstream Prowlarr repo
|
||||||
|
UPSTREAM_SHA=$(git ls-remote https://github.com/Prowlarr/Prowlarr.git "refs/heads/${PROWLARR_BRANCH}" | awk '{print $1}')
|
||||||
|
UPSTREAM_SHA_SHORT=$(echo "${UPSTREAM_SHA}" | cut -c1-7)
|
||||||
|
echo "upstream_sha=${UPSTREAM_SHA}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "upstream_sha_short=${UPSTREAM_SHA_SHORT}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Prowlarr upstream ${PROWLARR_BRANCH} is at ${UPSTREAM_SHA_SHORT}"
|
||||||
|
|
||||||
|
# Prowlarr version from upstream API
|
||||||
|
PROWLARR_VERSION=$(curl -sL "https://prowlarr.servarr.com/v1/update/${PROWLARR_BRANCH}/changes?runtime=netcore&os=linuxmusl" | jq -r '.[0].version')
|
||||||
|
echo "prowlarr_version=${PROWLARR_VERSION}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Image name
|
||||||
|
REGISTRY="${{ vars.OCI_REGISTRY }}"
|
||||||
|
REGISTRY="${REGISTRY%/}"
|
||||||
|
echo "image_name=${REGISTRY}/prowlarr" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Channel tag: latest for main, develop for develop
|
||||||
|
if [ "${{ matrix.branch }}" = "main" ]; then
|
||||||
|
echo "channel_tag=latest" >> "$GITHUB_OUTPUT"
|
||||||
|
else
|
||||||
|
echo "channel_tag=develop" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Login to OCI Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.OCI_REGISTRY }}
|
||||||
|
username: ${{ vars.OCI_USERNAME }}
|
||||||
|
password: ${{ vars.OCI_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Check if upstream version already built
|
||||||
|
id: check
|
||||||
|
if: github.event_name == 'schedule'
|
||||||
|
run: |
|
||||||
|
# Check if an image tagged with the upstream SHA already exists
|
||||||
|
IMAGE="${{ steps.vars.outputs.image_name }}:${{ steps.vars.outputs.prowlarr_branch }}-${{ steps.vars.outputs.upstream_sha_short }}"
|
||||||
|
echo "Checking if ${IMAGE} already exists..."
|
||||||
|
if docker manifest inspect "${IMAGE}" > /dev/null 2>&1; then
|
||||||
|
echo "Image ${IMAGE} already exists — no upstream changes, skipping build."
|
||||||
|
echo "skip=true" >> "$GITHUB_OUTPUT"
|
||||||
|
else
|
||||||
|
echo "Image ${IMAGE} not found — upstream has changed, proceeding with build."
|
||||||
|
echo "skip=false" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
if: steps.check.outputs.skip != 'true'
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
BUILD_DATE=${{ steps.vars.outputs.build_date }}
|
||||||
|
VERSION=${{ steps.vars.outputs.prowlarr_version }}-custom
|
||||||
|
PROWLARR_BRANCH=${{ steps.vars.outputs.prowlarr_branch }}
|
||||||
|
tags: |
|
||||||
|
${{ steps.vars.outputs.image_name }}:${{ steps.vars.outputs.channel_tag }}
|
||||||
|
${{ steps.vars.outputs.image_name }}:${{ steps.vars.outputs.sha_short }}
|
||||||
|
${{ steps.vars.outputs.image_name }}:${{ steps.vars.outputs.prowlarr_version }}-custom
|
||||||
|
${{ steps.vars.outputs.image_name }}:${{ steps.vars.outputs.prowlarr_branch }}-${{ steps.vars.outputs.upstream_sha_short }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
37
Dockerfile
37
Dockerfile
@@ -1,6 +1,25 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.22
|
# Build Prowlarr from source with patches applied
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
|
||||||
|
|
||||||
|
RUN apk add --no-cache bash git curl icu-libs nodejs npm yarn
|
||||||
|
|
||||||
|
ARG PROWLARR_BRANCH="develop"
|
||||||
|
WORKDIR /src
|
||||||
|
RUN git clone --depth 1 --branch "${PROWLARR_BRANCH}" https://github.com/Prowlarr/Prowlarr.git .
|
||||||
|
|
||||||
|
COPY patches/ /tmp/patches/
|
||||||
|
RUN git config user.email "build@local" && \
|
||||||
|
git config user.name "Build" && \
|
||||||
|
git am /tmp/patches/*.patch
|
||||||
|
|
||||||
|
RUN bash build.sh --backend -r linux-musl-x64 -f net8.0
|
||||||
|
RUN yarn install --frozen-lockfile --network-timeout 120000
|
||||||
|
RUN yarn run build --env production
|
||||||
|
RUN bash build.sh --packages -r linux-musl-x64 -f net8.0
|
||||||
|
|
||||||
|
FROM ghcr.io/linuxserver/baseimage-alpine:3.23
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@@ -22,17 +41,11 @@ RUN \
|
|||||||
sqlite-libs \
|
sqlite-libs \
|
||||||
xmlstarlet && \
|
xmlstarlet && \
|
||||||
echo "**** install prowlarr ****" && \
|
echo "**** install prowlarr ****" && \
|
||||||
mkdir -p /app/prowlarr/bin && \
|
mkdir -p /app/prowlarr/bin
|
||||||
if [ -z ${PROWLARR_RELEASE+x} ]; then \
|
|
||||||
PROWLARR_RELEASE=$(curl -sL "https://prowlarr.servarr.com/v1/update/${PROWLARR_BRANCH}/changes?runtime=netcore&os=linuxmusl" \
|
COPY --from=build /src/_artifacts/linux-musl-x64/net8.0/Prowlarr/ /app/prowlarr/bin/
|
||||||
| jq -r '.[0].version'); \
|
|
||||||
fi && \
|
RUN \
|
||||||
curl -o \
|
|
||||||
/tmp/prowlarr.tar.gz -L \
|
|
||||||
"https://prowlarr.servarr.com/v1/update/${PROWLARR_BRANCH}/updatefile?version=${PROWLARR_RELEASE}&os=linuxmusl&runtime=netcore&arch=x64" && \
|
|
||||||
tar xzf \
|
|
||||||
/tmp/prowlarr.tar.gz -C \
|
|
||||||
/app/prowlarr/bin --strip-components=1 && \
|
|
||||||
echo -e "UpdateMethod=docker\nBranch=${PROWLARR_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://www.linuxserver.io/)" > /app/prowlarr/package_info && \
|
echo -e "UpdateMethod=docker\nBranch=${PROWLARR_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://www.linuxserver.io/)" > /app/prowlarr/package_info && \
|
||||||
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
|
||||||
echo "**** cleanup ****" && \
|
echo "**** cleanup ****" && \
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22
|
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.23
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
|
|||||||
2
Jenkinsfile
vendored
2
Jenkinsfile
vendored
@@ -283,7 +283,7 @@ pipeline {
|
|||||||
-v ${WORKSPACE}:/mnt \
|
-v ${WORKSPACE}:/mnt \
|
||||||
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
||||||
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
||||||
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
||||||
apk add --no-cache python3 && \
|
apk add --no-cache python3 && \
|
||||||
python3 -m venv /lsiopy && \
|
python3 -m venv /lsiopy && \
|
||||||
pip install --no-cache-dir -U pip && \
|
pip install --no-cache-dir -U pip && \
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ This image can be run with a non-root user. For details please [read the docs](h
|
|||||||
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
|
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
|
||||||
|
|
||||||
>[!NOTE]
|
>[!NOTE]
|
||||||
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
|
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
|
||||||
|
|
||||||
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
|
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
|
||||||
|
|
||||||
@@ -294,6 +294,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **15.01.26:** - Rebase to Alpine 3.23.
|
||||||
* **05.07.25:** - Rebase Alpine 3.22.
|
* **05.07.25:** - Rebase Alpine 3.22.
|
||||||
* **23.12.24:** - Rebase Alpine 3.21.
|
* **23.12.24:** - Rebase Alpine 3.21.
|
||||||
* **31.05.24:** - Rebase Alpine 3.20.
|
* **31.05.24:** - Rebase Alpine 3.20.
|
||||||
|
|||||||
@@ -141,54 +141,55 @@ System.Threading.Tasks 4.3.0
|
|||||||
System.Windows.Extensions 4.7.0 dotnet (+5 duplicates)
|
System.Windows.Extensions 4.7.0 dotnet (+5 duplicates)
|
||||||
YamlDotNet 16.3.0 dotnet (+5 duplicates)
|
YamlDotNet 16.3.0 dotnet (+5 duplicates)
|
||||||
acl-libs 2.3.2-r1 apk
|
acl-libs 2.3.2-r1 apk
|
||||||
alpine-baselayout 3.7.0-r0 apk
|
alpine-baselayout 3.7.1-r8 apk
|
||||||
alpine-baselayout-data 3.7.0-r0 apk
|
alpine-baselayout-data 3.7.1-r8 apk
|
||||||
alpine-keys 2.5-r0 apk
|
alpine-keys 2.6-r0 apk
|
||||||
alpine-release 3.22.2-r0 apk
|
alpine-release 3.23.3-r0 apk
|
||||||
apk-tools 2.14.9-r3 apk
|
apk-tools 3.0.4-r0 apk
|
||||||
bash 5.2.37-r0 apk
|
bash 5.3.3-r1 apk
|
||||||
brotli-libs 1.1.0-r2 apk
|
brotli-libs 1.2.0-r0 apk
|
||||||
busybox 1.37.0-r20 apk
|
busybox 1.37.0-r30 apk
|
||||||
busybox-binsh 1.37.0-r20 apk
|
busybox-binsh 1.37.0-r30 apk
|
||||||
c-ares 1.34.5-r0 apk
|
c-ares 1.34.6-r0 apk
|
||||||
ca-certificates 20250911-r0 apk
|
ca-certificates 20251003-r0 apk
|
||||||
ca-certificates-bundle 20250911-r0 apk
|
ca-certificates-bundle 20251003-r0 apk
|
||||||
catatonit 0.2.1-r0 apk
|
catatonit 0.2.1-r0 apk
|
||||||
coreutils 9.7-r1 apk
|
coreutils 9.8-r1 apk
|
||||||
coreutils-env 9.7-r1 apk
|
coreutils-env 9.8-r1 apk
|
||||||
coreutils-fmt 9.7-r1 apk
|
coreutils-fmt 9.8-r1 apk
|
||||||
coreutils-sha512sum 9.7-r1 apk
|
coreutils-sha512sum 9.8-r1 apk
|
||||||
curl 8.14.1-r2 apk
|
curl 8.17.0-r1 apk
|
||||||
findutils 4.10.0-r0 apk
|
findutils 4.10.0-r0 apk
|
||||||
icu-data-en 76.1-r1 apk
|
icu-data-en 76.1-r1 apk
|
||||||
icu-libs 76.1-r1 apk
|
icu-libs 76.1-r1 apk
|
||||||
jq 1.8.1-r0 apk
|
jq 1.8.1-r0 apk
|
||||||
libapk2 2.14.9-r3 apk
|
libapk 3.0.4-r0 apk
|
||||||
libattr 2.5.2-r2 apk
|
libattr 2.5.2-r2 apk
|
||||||
libbsd 0.12.2-r0 apk
|
libbsd 0.12.2-r0 apk
|
||||||
libcrypto3 3.5.4-r0 apk
|
libcrypto3 3.5.5-r0 apk
|
||||||
libcurl 8.14.1-r2 apk
|
libcurl 8.17.0-r1 apk
|
||||||
libgcc 14.2.0-r6 apk
|
libgcc 15.2.0-r2 apk
|
||||||
libidn2 2.3.7-r0 apk
|
libidn2 2.3.8-r0 apk
|
||||||
libintl 0.24.1-r0 apk
|
libintl 0.24.1-r1 apk
|
||||||
libmd 1.1.0-r0 apk
|
libmd 1.1.0-r0 apk
|
||||||
libncursesw 6.5_p20250503-r0 apk
|
libncursesw 6.5_p20251123-r0 apk
|
||||||
libproc2 4.0.4-r3 apk
|
libproc2 4.0.5-r0 apk
|
||||||
libpsl 0.21.5-r3 apk
|
libpsl 0.21.5-r3 apk
|
||||||
libssl3 3.5.4-r0 apk
|
libssl3 3.5.5-r0 apk
|
||||||
libstdc++ 14.2.0-r6 apk
|
libstdc++ 15.2.0-r2 apk
|
||||||
libunistring 1.3-r0 apk
|
libunistring 1.4.1-r0 apk
|
||||||
libxml2 2.13.9-r0 apk
|
libxml2 2.13.9-r0 apk
|
||||||
libxslt 1.1.43-r3 apk
|
libxslt 1.1.43-r3 apk
|
||||||
linux-pam 1.7.0-r4 apk
|
linux-pam 1.7.1-r2 apk
|
||||||
musl 1.2.5-r10 apk
|
musl 1.2.5-r21 apk
|
||||||
musl-utils 1.2.5-r10 apk
|
musl-utils 1.2.5-r21 apk
|
||||||
ncurses-terminfo-base 6.5_p20250503-r0 apk
|
ncurses-terminfo-base 6.5_p20251123-r0 apk
|
||||||
netcat-openbsd 1.229.1-r0 apk
|
netcat-openbsd 1.234.1-r0 apk
|
||||||
nghttp2-libs 1.65.0-r0 apk
|
nghttp2-libs 1.68.0-r0 apk
|
||||||
|
nghttp3 1.13.1-r0 apk
|
||||||
oniguruma 6.9.10-r0 apk
|
oniguruma 6.9.10-r0 apk
|
||||||
procps-ng 4.0.4-r3 apk
|
procps-ng 4.0.5-r0 apk
|
||||||
readline 8.2.13-r1 apk
|
readline 8.3.1-r0 apk
|
||||||
runtime.any.System.IO 4.3.0 dotnet (+5 duplicates)
|
runtime.any.System.IO 4.3.0 dotnet (+5 duplicates)
|
||||||
runtime.any.System.Reflection 4.3.0 dotnet (+5 duplicates)
|
runtime.any.System.Reflection 4.3.0 dotnet (+5 duplicates)
|
||||||
runtime.any.System.Reflection.Primitives 4.3.0 dotnet (+5 duplicates)
|
runtime.any.System.Reflection.Primitives 4.3.0 dotnet (+5 duplicates)
|
||||||
@@ -198,14 +199,14 @@ runtime.any.System.Threading.Tasks 4.3.0
|
|||||||
runtime.unix.System.Private.Uri 4.3.0 dotnet (+5 duplicates)
|
runtime.unix.System.Private.Uri 4.3.0 dotnet (+5 duplicates)
|
||||||
runtimepack.Microsoft.AspNetCore.App.Runtime.linux-musl-x64 8.0.12 dotnet (+4 duplicates)
|
runtimepack.Microsoft.AspNetCore.App.Runtime.linux-musl-x64 8.0.12 dotnet (+4 duplicates)
|
||||||
runtimepack.Microsoft.NETCore.App.Runtime.linux-musl-x64 8.0.12 dotnet (+7 duplicates)
|
runtimepack.Microsoft.NETCore.App.Runtime.linux-musl-x64 8.0.12 dotnet (+7 duplicates)
|
||||||
scanelf 1.3.8-r1 apk
|
scanelf 1.3.8-r2 apk
|
||||||
shadow 4.17.3-r0 apk
|
shadow 4.18.0-r0 apk
|
||||||
skalibs-libs 2.14.4.0-r0 apk
|
skalibs-libs 2.14.4.0-r0 apk
|
||||||
sqlite-libs 3.49.2-r1 apk
|
sqlite-libs 3.51.2-r0 apk
|
||||||
ssl_client 1.37.0-r20 apk
|
ssl_client 1.37.0-r30 apk
|
||||||
tzdata 2025b-r0 apk
|
tzdata 2025c-r0 apk
|
||||||
utmps-libs 0.1.3.1-r0 apk
|
utmps-libs 0.1.3.1-r0 apk
|
||||||
xmlstarlet 1.6.1-r2 apk
|
xmlstarlet 1.6.1-r2 apk
|
||||||
xz-libs 5.8.1-r0 apk
|
xz-libs 5.8.2-r0 apk
|
||||||
zlib 1.3.1-r2 apk
|
zlib 1.3.1-r2 apk
|
||||||
zstd-libs 1.5.7-r0 apk
|
zstd-libs 1.5.7-r2 apk
|
||||||
|
|||||||
592
patches/0001-Fork-for-AvistaZ-family-language-filter.patch
Normal file
592
patches/0001-Fork-for-AvistaZ-family-language-filter.patch
Normal file
@@ -0,0 +1,592 @@
|
|||||||
|
From 4996a7c70c74f24e5a89c21cd1459bd3cef5ac5c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Romain Lecat <romain@lecat.pro>
|
||||||
|
Date: Mon, 16 Feb 2026 10:49:13 +0100
|
||||||
|
Subject: [PATCH] Fork for AvistaZ family language filter
|
||||||
|
|
||||||
|
---
|
||||||
|
.../Indexers/Definitions/AvistaZ.cs | 20 +-
|
||||||
|
.../Definitions/Avistaz/AvistazBase.cs | 3 +-
|
||||||
|
.../Definitions/Avistaz/AvistazSettings.cs | 352 ++++++++++++++++++
|
||||||
|
.../Indexers/Definitions/CinemaZ.cs | 36 +-
|
||||||
|
.../Indexers/Definitions/ExoticaZ.cs | 2 +-
|
||||||
|
.../Indexers/Definitions/PrivateHD.cs | 36 +-
|
||||||
|
6 files changed, 444 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs b/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
|
||||||
|
index cc1be98b5..e16bf1fff 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
+using System.Linq;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
@@ -8,7 +9,7 @@
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions
|
||||||
|
{
|
||||||
|
- public class AvistaZ : AvistazBase
|
||||||
|
+ public class AvistaZ : AvistazBase<AvistazSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "AvistaZ";
|
||||||
|
public override string[] IndexerUrls => new[] { "https://avistaz.to/" };
|
||||||
|
@@ -68,6 +69,23 @@ protected override IndexerCapabilities SetCapabilities()
|
||||||
|
|
||||||
|
public class AvistaZRequestGenerator : AvistazRequestGenerator
|
||||||
|
{
|
||||||
|
+ protected override List<KeyValuePair<string, string>> GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string genre = null)
|
||||||
|
+ {
|
||||||
|
+ var parameters = base.GetBasicSearchParameters(searchCriteria, genre);
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchAudioLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("language[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchSubtitleLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("subtitle[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return parameters;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// AvistaZ has episodes without season. eg Running Man E323
|
||||||
|
protected override string GetEpisodeSearchTerm(TvSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazBase.cs b/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazBase.cs
|
||||||
|
index b14bac702..1aabd470f 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazBase.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazBase.cs
|
||||||
|
@@ -12,7 +12,8 @@
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
||||||
|
{
|
||||||
|
- public abstract class AvistazBase : TorrentIndexerBase<AvistazSettings>
|
||||||
|
+ public abstract class AvistazBase<TSettings> : TorrentIndexerBase<TSettings>
|
||||||
|
+ where TSettings : AvistazSettings, new()
|
||||||
|
{
|
||||||
|
public override bool SupportsRss => true;
|
||||||
|
public override bool SupportsSearch => true;
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazSettings.cs b/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazSettings.cs
|
||||||
|
index bb431c47b..47f69dd27 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazSettings.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/Avistaz/AvistazSettings.cs
|
||||||
|
@@ -1,3 +1,5 @@
|
||||||
|
+using System;
|
||||||
|
+using System.Collections.Generic;
|
||||||
|
using FluentValidation;
|
||||||
|
using NzbDrone.Core.Annotations;
|
||||||
|
using NzbDrone.Core.Indexers.Settings;
|
||||||
|
@@ -23,6 +25,8 @@ public AvistazSettings()
|
||||||
|
{
|
||||||
|
Token = "";
|
||||||
|
FreeleechOnly = false;
|
||||||
|
+ SearchAudioLanguages = Array.Empty<int>();
|
||||||
|
+ SearchSubtitleLanguages = Array.Empty<int>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Token { get; set; }
|
||||||
|
@@ -39,9 +43,357 @@ public AvistazSettings()
|
||||||
|
[FieldDefinition(5, Label = "IndexerSettingsFreeleechOnly", Type = FieldType.Checkbox, HelpText = "IndexerAvistazSettingsFreeleechOnlyHelpText")]
|
||||||
|
public bool FreeleechOnly { get; set; }
|
||||||
|
|
||||||
|
+ [FieldDefinition(6, Label = "Search Audio Languages", Type = FieldType.Select, SelectOptions = typeof(AvistaZAudioLanguage), HelpText = "Filter by audio language. The language settings are AND searches, e.g. selecting English audio with Basque and Catalan subtitles will only return results with all three of these.", Advanced = true)]
|
||||||
|
+ public IEnumerable<int> SearchAudioLanguages { get; set; }
|
||||||
|
+
|
||||||
|
+ [FieldDefinition(7, Label = "Search Subtitle Languages", Type = FieldType.Select, SelectOptions = typeof(AvistaZSubtitleLanguage), HelpText = "Filter by subtitle language. The language settings are AND searches, e.g. selecting English audio with Basque and Catalan subtitles will only return results with all three of these.", Advanced = true)]
|
||||||
|
+ public IEnumerable<int> SearchSubtitleLanguages { get; set; }
|
||||||
|
+
|
||||||
|
public override NzbDroneValidationResult Validate()
|
||||||
|
{
|
||||||
|
return new NzbDroneValidationResult(Validator.Validate(this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ public enum AvistaZAudioLanguage
|
||||||
|
+ {
|
||||||
|
+ [FieldOption(Hint = "Arabic")]
|
||||||
|
+ Arabic = 7,
|
||||||
|
+ [FieldOption(Hint = "Assamese")]
|
||||||
|
+ Assamese = 10,
|
||||||
|
+ [FieldOption(Hint = "Basque")]
|
||||||
|
+ Basque = 17,
|
||||||
|
+ [FieldOption(Hint = "Bengali")]
|
||||||
|
+ Bengali = 19,
|
||||||
|
+ [FieldOption(Hint = "Bosnian")]
|
||||||
|
+ Bosnian = 23,
|
||||||
|
+ [FieldOption(Hint = "Brazilian Portuguese")]
|
||||||
|
+ BrazilianPortuguese = 189,
|
||||||
|
+ [FieldOption(Hint = "Burmese")]
|
||||||
|
+ Burmese = 26,
|
||||||
|
+ [FieldOption(Hint = "Cantonese")]
|
||||||
|
+ Cantonese = 27,
|
||||||
|
+ [FieldOption(Hint = "Catalan")]
|
||||||
|
+ Catalan = 28,
|
||||||
|
+ [FieldOption(Hint = "Central Khmer")]
|
||||||
|
+ CentralKhmer = 29,
|
||||||
|
+ [FieldOption(Hint = "Chamorro")]
|
||||||
|
+ Chamorro = 30,
|
||||||
|
+ [FieldOption(Hint = "Chinese")]
|
||||||
|
+ Chinese = 33,
|
||||||
|
+ [FieldOption(Hint = "Croatian")]
|
||||||
|
+ Croatian = 39,
|
||||||
|
+ [FieldOption(Hint = "Czech")]
|
||||||
|
+ Czech = 40,
|
||||||
|
+ [FieldOption(Hint = "Danish")]
|
||||||
|
+ Danish = 41,
|
||||||
|
+ [FieldOption(Hint = "Dutch")]
|
||||||
|
+ Dutch = 43,
|
||||||
|
+ [FieldOption(Hint = "Dzongkha")]
|
||||||
|
+ Dzongkha = 44,
|
||||||
|
+ [FieldOption(Hint = "English")]
|
||||||
|
+ English = 45,
|
||||||
|
+ [FieldOption(Hint = "Esperanto")]
|
||||||
|
+ Esperanto = 46,
|
||||||
|
+ [FieldOption(Hint = "Filipino")]
|
||||||
|
+ Filipino = 188,
|
||||||
|
+ [FieldOption(Hint = "Finnish")]
|
||||||
|
+ Finnish = 51,
|
||||||
|
+ [FieldOption(Hint = "French")]
|
||||||
|
+ French = 52,
|
||||||
|
+ [FieldOption(Hint = "German")]
|
||||||
|
+ German = 58,
|
||||||
|
+ [FieldOption(Hint = "Greek")]
|
||||||
|
+ Greek = 59,
|
||||||
|
+ [FieldOption(Hint = "Gujarati")]
|
||||||
|
+ Gujarati = 61,
|
||||||
|
+ [FieldOption(Hint = "Hausa")]
|
||||||
|
+ Hausa = 63,
|
||||||
|
+ [FieldOption(Hint = "Hebrew")]
|
||||||
|
+ Hebrew = 64,
|
||||||
|
+ [FieldOption(Hint = "Hindi")]
|
||||||
|
+ Hindi = 66,
|
||||||
|
+ [FieldOption(Hint = "Hungarian")]
|
||||||
|
+ Hungarian = 68,
|
||||||
|
+ [FieldOption(Hint = "Indonesian")]
|
||||||
|
+ Indonesian = 72,
|
||||||
|
+ [FieldOption(Hint = "Inuktitut")]
|
||||||
|
+ Inuktitut = 75,
|
||||||
|
+ [FieldOption(Hint = "Italian")]
|
||||||
|
+ Italian = 78,
|
||||||
|
+ [FieldOption(Hint = "Japanese")]
|
||||||
|
+ Japanese = 79,
|
||||||
|
+ [FieldOption(Hint = "Javanese")]
|
||||||
|
+ Javanese = 80,
|
||||||
|
+ [FieldOption(Hint = "Kannada")]
|
||||||
|
+ Kannada = 82,
|
||||||
|
+ [FieldOption(Hint = "Kashmiri")]
|
||||||
|
+ Kashmiri = 84,
|
||||||
|
+ [FieldOption(Hint = "Kazakh")]
|
||||||
|
+ Kazakh = 85,
|
||||||
|
+ [FieldOption(Hint = "Kirghiz")]
|
||||||
|
+ Kirghiz = 88,
|
||||||
|
+ [FieldOption(Hint = "Korean")]
|
||||||
|
+ Korean = 91,
|
||||||
|
+ [FieldOption(Hint = "Lao")]
|
||||||
|
+ Lao = 94,
|
||||||
|
+ [FieldOption(Hint = "Malay")]
|
||||||
|
+ Malay = 104,
|
||||||
|
+ [FieldOption(Hint = "Malayalam")]
|
||||||
|
+ Malayalam = 105,
|
||||||
|
+ [FieldOption(Hint = "Mandarin")]
|
||||||
|
+ Mandarin = 107,
|
||||||
|
+ [FieldOption(Hint = "Marathi")]
|
||||||
|
+ Marathi = 110,
|
||||||
|
+ [FieldOption(Hint = "Mongolian")]
|
||||||
|
+ Mongolian = 112,
|
||||||
|
+ [FieldOption(Hint = "Nepali")]
|
||||||
|
+ Nepali = 118,
|
||||||
|
+ [FieldOption(Hint = "Ojibwa")]
|
||||||
|
+ Ojibwa = 123,
|
||||||
|
+ [FieldOption(Hint = "Oriya")]
|
||||||
|
+ Oriya = 124,
|
||||||
|
+ [FieldOption(Hint = "Pali")]
|
||||||
|
+ Pali = 127,
|
||||||
|
+ [FieldOption(Hint = "Panjabi")]
|
||||||
|
+ Panjabi = 128,
|
||||||
|
+ [FieldOption(Hint = "Persian")]
|
||||||
|
+ Persian = 129,
|
||||||
|
+ [FieldOption(Hint = "Polish")]
|
||||||
|
+ Polish = 130,
|
||||||
|
+ [FieldOption(Hint = "Portuguese")]
|
||||||
|
+ Portuguese = 131,
|
||||||
|
+ [FieldOption(Hint = "Quechua")]
|
||||||
|
+ Quechua = 133,
|
||||||
|
+ [FieldOption(Hint = "Romanian")]
|
||||||
|
+ Romanian = 134,
|
||||||
|
+ [FieldOption(Hint = "Russian")]
|
||||||
|
+ Russian = 137,
|
||||||
|
+ [FieldOption(Hint = "Sanskrit")]
|
||||||
|
+ Sanskrit = 140,
|
||||||
|
+ [FieldOption(Hint = "Sinhala")]
|
||||||
|
+ Sinhala = 146,
|
||||||
|
+ [FieldOption(Hint = "Slovak")]
|
||||||
|
+ Slovak = 147,
|
||||||
|
+ [FieldOption(Hint = "Spanish")]
|
||||||
|
+ Spanish = 151,
|
||||||
|
+ [FieldOption(Hint = "Swedish")]
|
||||||
|
+ Swedish = 155,
|
||||||
|
+ [FieldOption(Hint = "Tagalog")]
|
||||||
|
+ Tagalog = 156,
|
||||||
|
+ [FieldOption(Hint = "Tamil")]
|
||||||
|
+ Tamil = 159,
|
||||||
|
+ [FieldOption(Hint = "Telugu")]
|
||||||
|
+ Telugu = 161,
|
||||||
|
+ [FieldOption(Hint = "Thai")]
|
||||||
|
+ Thai = 162,
|
||||||
|
+ [FieldOption(Hint = "Tibetan")]
|
||||||
|
+ Tibetan = 163,
|
||||||
|
+ [FieldOption(Hint = "Turkish")]
|
||||||
|
+ Turkish = 168,
|
||||||
|
+ [FieldOption(Hint = "Uighur")]
|
||||||
|
+ Uighur = 171,
|
||||||
|
+ [FieldOption(Hint = "Ukrainian")]
|
||||||
|
+ Ukrainian = 172,
|
||||||
|
+ [FieldOption(Hint = "Urdu")]
|
||||||
|
+ Urdu = 173,
|
||||||
|
+ [FieldOption(Hint = "Vietnamese")]
|
||||||
|
+ Vietnamese = 176,
|
||||||
|
+ [FieldOption(Hint = "Xhosa")]
|
||||||
|
+ Xhosa = 182,
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public enum AvistaZSubtitleLanguage
|
||||||
|
+ {
|
||||||
|
+ [FieldOption(Hint = "Abkhazian")]
|
||||||
|
+ Abkhazian = 1,
|
||||||
|
+ [FieldOption(Hint = "Afar")]
|
||||||
|
+ Afar = 2,
|
||||||
|
+ [FieldOption(Hint = "Afrikaans")]
|
||||||
|
+ Afrikaans = 3,
|
||||||
|
+ [FieldOption(Hint = "Albanian")]
|
||||||
|
+ Albanian = 5,
|
||||||
|
+ [FieldOption(Hint = "Amharic")]
|
||||||
|
+ Amharic = 6,
|
||||||
|
+ [FieldOption(Hint = "Arabic")]
|
||||||
|
+ Arabic = 7,
|
||||||
|
+ [FieldOption(Hint = "Basque")]
|
||||||
|
+ Basque = 17,
|
||||||
|
+ [FieldOption(Hint = "Belarusian")]
|
||||||
|
+ Belarusian = 18,
|
||||||
|
+ [FieldOption(Hint = "Bengali")]
|
||||||
|
+ Bengali = 19,
|
||||||
|
+ [FieldOption(Hint = "Norwegian Bokmål")]
|
||||||
|
+ NorwegianBokmal = 22,
|
||||||
|
+ [FieldOption(Hint = "Bosnian")]
|
||||||
|
+ Bosnian = 23,
|
||||||
|
+ [FieldOption(Hint = "Bulgarian")]
|
||||||
|
+ Bulgarian = 25,
|
||||||
|
+ [FieldOption(Hint = "Brazilian Portuguese")]
|
||||||
|
+ BrazilianPortuguese = 189,
|
||||||
|
+ [FieldOption(Hint = "Burmese")]
|
||||||
|
+ Burmese = 26,
|
||||||
|
+ [FieldOption(Hint = "Cantonese")]
|
||||||
|
+ Cantonese = 27,
|
||||||
|
+ [FieldOption(Hint = "Catalan")]
|
||||||
|
+ Catalan = 28,
|
||||||
|
+ [FieldOption(Hint = "Central Khmer")]
|
||||||
|
+ CentralKhmer = 29,
|
||||||
|
+ [FieldOption(Hint = "Chichewa")]
|
||||||
|
+ Chichewa = 32,
|
||||||
|
+ [FieldOption(Hint = "Chinese")]
|
||||||
|
+ Chinese = 33,
|
||||||
|
+ [FieldOption(Hint = "Corsican")]
|
||||||
|
+ Corsican = 37,
|
||||||
|
+ [FieldOption(Hint = "Croatian")]
|
||||||
|
+ Croatian = 39,
|
||||||
|
+ [FieldOption(Hint = "Czech")]
|
||||||
|
+ Czech = 40,
|
||||||
|
+ [FieldOption(Hint = "Danish")]
|
||||||
|
+ Danish = 41,
|
||||||
|
+ [FieldOption(Hint = "Dutch")]
|
||||||
|
+ Dutch = 43,
|
||||||
|
+ [FieldOption(Hint = "English")]
|
||||||
|
+ English = 45,
|
||||||
|
+ [FieldOption(Hint = "Esperanto")]
|
||||||
|
+ Esperanto = 46,
|
||||||
|
+ [FieldOption(Hint = "Estonian")]
|
||||||
|
+ Estonian = 47,
|
||||||
|
+ [FieldOption(Hint = "Fijian")]
|
||||||
|
+ Fijian = 50,
|
||||||
|
+ [FieldOption(Hint = "Filipino")]
|
||||||
|
+ Filipino = 188,
|
||||||
|
+ [FieldOption(Hint = "Finnish")]
|
||||||
|
+ Finnish = 51,
|
||||||
|
+ [FieldOption(Hint = "French")]
|
||||||
|
+ French = 52,
|
||||||
|
+ [FieldOption(Hint = "Galician")]
|
||||||
|
+ Galician = 55,
|
||||||
|
+ [FieldOption(Hint = "Georgian")]
|
||||||
|
+ Georgian = 57,
|
||||||
|
+ [FieldOption(Hint = "German")]
|
||||||
|
+ German = 58,
|
||||||
|
+ [FieldOption(Hint = "Greek")]
|
||||||
|
+ Greek = 59,
|
||||||
|
+ [FieldOption(Hint = "Gujarati")]
|
||||||
|
+ Gujarati = 61,
|
||||||
|
+ [FieldOption(Hint = "Haitian")]
|
||||||
|
+ Haitian = 62,
|
||||||
|
+ [FieldOption(Hint = "Hebrew")]
|
||||||
|
+ Hebrew = 64,
|
||||||
|
+ [FieldOption(Hint = "Hindi")]
|
||||||
|
+ Hindi = 66,
|
||||||
|
+ [FieldOption(Hint = "Hungarian")]
|
||||||
|
+ Hungarian = 68,
|
||||||
|
+ [FieldOption(Hint = "Icelandic")]
|
||||||
|
+ Icelandic = 69,
|
||||||
|
+ [FieldOption(Hint = "Indonesian")]
|
||||||
|
+ Indonesian = 72,
|
||||||
|
+ [FieldOption(Hint = "Irish")]
|
||||||
|
+ Irish = 77,
|
||||||
|
+ [FieldOption(Hint = "Italian")]
|
||||||
|
+ Italian = 78,
|
||||||
|
+ [FieldOption(Hint = "Japanese")]
|
||||||
|
+ Japanese = 79,
|
||||||
|
+ [FieldOption(Hint = "Javanese")]
|
||||||
|
+ Javanese = 80,
|
||||||
|
+ [FieldOption(Hint = "Kannada")]
|
||||||
|
+ Kannada = 82,
|
||||||
|
+ [FieldOption(Hint = "Kazakh")]
|
||||||
|
+ Kazakh = 85,
|
||||||
|
+ [FieldOption(Hint = "Korean")]
|
||||||
|
+ Korean = 91,
|
||||||
|
+ [FieldOption(Hint = "Kurdish")]
|
||||||
|
+ Kurdish = 93,
|
||||||
|
+ [FieldOption(Hint = "Lao")]
|
||||||
|
+ Lao = 94,
|
||||||
|
+ [FieldOption(Hint = "Latin")]
|
||||||
|
+ Latin = 95,
|
||||||
|
+ [FieldOption(Hint = "Latvian")]
|
||||||
|
+ Latvian = 96,
|
||||||
|
+ [FieldOption(Hint = "Lithuanian")]
|
||||||
|
+ Lithuanian = 99,
|
||||||
|
+ [FieldOption(Hint = "Macedonian")]
|
||||||
|
+ Macedonian = 102,
|
||||||
|
+ [FieldOption(Hint = "Malagasy")]
|
||||||
|
+ Malagasy = 103,
|
||||||
|
+ [FieldOption(Hint = "Malay")]
|
||||||
|
+ Malay = 104,
|
||||||
|
+ [FieldOption(Hint = "Malayalam")]
|
||||||
|
+ Malayalam = 105,
|
||||||
|
+ [FieldOption(Hint = "Mandarin")]
|
||||||
|
+ Mandarin = 107,
|
||||||
|
+ [FieldOption(Hint = "Maori")]
|
||||||
|
+ Maori = 109,
|
||||||
|
+ [FieldOption(Hint = "Marathi")]
|
||||||
|
+ Marathi = 110,
|
||||||
|
+ [FieldOption(Hint = "Mongolian")]
|
||||||
|
+ Mongolian = 112,
|
||||||
|
+ [FieldOption(Hint = "Nepali")]
|
||||||
|
+ Nepali = 118,
|
||||||
|
+ [FieldOption(Hint = "Norwegian")]
|
||||||
|
+ Norwegian = 120,
|
||||||
|
+ [FieldOption(Hint = "Oriya")]
|
||||||
|
+ Oriya = 124,
|
||||||
|
+ [FieldOption(Hint = "Panjabi")]
|
||||||
|
+ Panjabi = 128,
|
||||||
|
+ [FieldOption(Hint = "Persian")]
|
||||||
|
+ Persian = 129,
|
||||||
|
+ [FieldOption(Hint = "Polish")]
|
||||||
|
+ Polish = 130,
|
||||||
|
+ [FieldOption(Hint = "Portuguese")]
|
||||||
|
+ Portuguese = 131,
|
||||||
|
+ [FieldOption(Hint = "Romanian")]
|
||||||
|
+ Romanian = 134,
|
||||||
|
+ [FieldOption(Hint = "Romansh")]
|
||||||
|
+ Romansh = 135,
|
||||||
|
+ [FieldOption(Hint = "Russian")]
|
||||||
|
+ Russian = 137,
|
||||||
|
+ [FieldOption(Hint = "Sardinian")]
|
||||||
|
+ Sardinian = 141,
|
||||||
|
+ [FieldOption(Hint = "Serbian")]
|
||||||
|
+ Serbian = 142,
|
||||||
|
+ [FieldOption(Hint = "Sinhala")]
|
||||||
|
+ Sinhala = 146,
|
||||||
|
+ [FieldOption(Hint = "Slovak")]
|
||||||
|
+ Slovak = 147,
|
||||||
|
+ [FieldOption(Hint = "Slovenian")]
|
||||||
|
+ Slovenian = 148,
|
||||||
|
+ [FieldOption(Hint = "Somali")]
|
||||||
|
+ Somali = 149,
|
||||||
|
+ [FieldOption(Hint = "Spanish")]
|
||||||
|
+ Spanish = 151,
|
||||||
|
+ [FieldOption(Hint = "Sundanese")]
|
||||||
|
+ Sundanese = 152,
|
||||||
|
+ [FieldOption(Hint = "Swahili")]
|
||||||
|
+ Swahili = 153,
|
||||||
|
+ [FieldOption(Hint = "Swedish")]
|
||||||
|
+ Swedish = 155,
|
||||||
|
+ [FieldOption(Hint = "Tagalog")]
|
||||||
|
+ Tagalog = 156,
|
||||||
|
+ [FieldOption(Hint = "Tamil")]
|
||||||
|
+ Tamil = 159,
|
||||||
|
+ [FieldOption(Hint = "Telugu")]
|
||||||
|
+ Telugu = 161,
|
||||||
|
+ [FieldOption(Hint = "Thai")]
|
||||||
|
+ Thai = 162,
|
||||||
|
+ [FieldOption(Hint = "Turkish")]
|
||||||
|
+ Turkish = 168,
|
||||||
|
+ [FieldOption(Hint = "Twi")]
|
||||||
|
+ Twi = 170,
|
||||||
|
+ [FieldOption(Hint = "Ukrainian")]
|
||||||
|
+ Ukrainian = 172,
|
||||||
|
+ [FieldOption(Hint = "Urdu")]
|
||||||
|
+ Urdu = 173,
|
||||||
|
+ [FieldOption(Hint = "Venda")]
|
||||||
|
+ Venda = 175,
|
||||||
|
+ [FieldOption(Hint = "Vietnamese")]
|
||||||
|
+ Vietnamese = 176,
|
||||||
|
+ [FieldOption(Hint = "Volapük")]
|
||||||
|
+ Volapuk = 177,
|
||||||
|
+ [FieldOption(Hint = "Welsh")]
|
||||||
|
+ Welsh = 179,
|
||||||
|
+ [FieldOption(Hint = "Wolof")]
|
||||||
|
+ Wolof = 181,
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/CinemaZ.cs b/src/NzbDrone.Core/Indexers/Definitions/CinemaZ.cs
|
||||||
|
index 3f0fdd913..0d630d3d8 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/CinemaZ.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/CinemaZ.cs
|
||||||
|
@@ -1,12 +1,14 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
+using System.Linq;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.Indexers.Definitions.Avistaz;
|
||||||
|
+using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions
|
||||||
|
{
|
||||||
|
- public class CinemaZ : AvistazBase
|
||||||
|
+ public class CinemaZ : AvistazBase<AvistazSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "CinemaZ";
|
||||||
|
public override string[] IndexerUrls => new[] { "https://cinemaz.to/" };
|
||||||
|
@@ -23,6 +25,18 @@ public CinemaZ(IIndexerRepository indexerRepository,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public override IIndexerRequestGenerator GetRequestGenerator()
|
||||||
|
+ {
|
||||||
|
+ return new CinemaZRequestGenerator
|
||||||
|
+ {
|
||||||
|
+ Settings = Settings,
|
||||||
|
+ Capabilities = Capabilities,
|
||||||
|
+ PageSize = PageSize,
|
||||||
|
+ HttpClient = _httpClient,
|
||||||
|
+ Logger = _logger
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
protected override IndexerCapabilities SetCapabilities()
|
||||||
|
{
|
||||||
|
var caps = new IndexerCapabilities
|
||||||
|
@@ -51,4 +65,24 @@ protected override IndexerCapabilities SetCapabilities()
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ public class CinemaZRequestGenerator : AvistazRequestGenerator
|
||||||
|
+ {
|
||||||
|
+ protected override List<KeyValuePair<string, string>> GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string genre = null)
|
||||||
|
+ {
|
||||||
|
+ var parameters = base.GetBasicSearchParameters(searchCriteria, genre);
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchAudioLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("language[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchSubtitleLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("subtitle[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return parameters;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs b/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
|
||||||
|
index 954d2442c..41202ab21 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions
|
||||||
|
{
|
||||||
|
- public class ExoticaZ : AvistazBase
|
||||||
|
+ public class ExoticaZ : AvistazBase<AvistazSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "ExoticaZ";
|
||||||
|
public override string[] IndexerUrls => new[] { "https://exoticaz.to/" };
|
||||||
|
diff --git a/src/NzbDrone.Core/Indexers/Definitions/PrivateHD.cs b/src/NzbDrone.Core/Indexers/Definitions/PrivateHD.cs
|
||||||
|
index 21fc76ede..0e8f651f0 100644
|
||||||
|
--- a/src/NzbDrone.Core/Indexers/Definitions/PrivateHD.cs
|
||||||
|
+++ b/src/NzbDrone.Core/Indexers/Definitions/PrivateHD.cs
|
||||||
|
@@ -1,12 +1,14 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
+using System.Linq;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.Indexers.Definitions.Avistaz;
|
||||||
|
+using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Indexers.Definitions
|
||||||
|
{
|
||||||
|
- public class PrivateHD : AvistazBase
|
||||||
|
+ public class PrivateHD : AvistazBase<AvistazSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "PrivateHD";
|
||||||
|
public override string[] IndexerUrls => new[] { "https://privatehd.to/" };
|
||||||
|
@@ -23,6 +25,18 @@ public PrivateHD(IIndexerRepository indexerRepository,
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
+ public override IIndexerRequestGenerator GetRequestGenerator()
|
||||||
|
+ {
|
||||||
|
+ return new PrivateHDRequestGenerator
|
||||||
|
+ {
|
||||||
|
+ Settings = Settings,
|
||||||
|
+ Capabilities = Capabilities,
|
||||||
|
+ PageSize = PageSize,
|
||||||
|
+ HttpClient = _httpClient,
|
||||||
|
+ Logger = _logger
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
protected override IndexerCapabilities SetCapabilities()
|
||||||
|
{
|
||||||
|
var caps = new IndexerCapabilities
|
||||||
|
@@ -51,4 +65,24 @@ protected override IndexerCapabilities SetCapabilities()
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ public class PrivateHDRequestGenerator : AvistazRequestGenerator
|
||||||
|
+ {
|
||||||
|
+ protected override List<KeyValuePair<string, string>> GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string genre = null)
|
||||||
|
+ {
|
||||||
|
+ var parameters = base.GetBasicSearchParameters(searchCriteria, genre);
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchAudioLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("language[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ foreach (var languageId in Settings.SearchSubtitleLanguages.Distinct())
|
||||||
|
+ {
|
||||||
|
+ parameters.Add(new KeyValuePair<string, string>("subtitle[]", languageId.ToString()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return parameters;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
@@ -71,11 +71,12 @@ init_diagram: |
|
|||||||
svc-prowlarr -> legacy-services
|
svc-prowlarr -> legacy-services
|
||||||
}
|
}
|
||||||
Base Images: {
|
Base Images: {
|
||||||
"baseimage-alpine:3.22"
|
"baseimage-alpine:3.23"
|
||||||
}
|
}
|
||||||
"prowlarr:latest" <- Base Images
|
"prowlarr:latest" <- Base Images
|
||||||
# changelog
|
# changelog
|
||||||
changelogs:
|
changelogs:
|
||||||
|
- {date: "15.01.26:", desc: "Rebase to Alpine 3.23."}
|
||||||
- {date: "05.07.25:", desc: "Rebase Alpine 3.22."}
|
- {date: "05.07.25:", desc: "Rebase Alpine 3.22."}
|
||||||
- {date: "23.12.24:", desc: "Rebase Alpine 3.21."}
|
- {date: "23.12.24:", desc: "Rebase Alpine 3.21."}
|
||||||
- {date: "31.05.24:", desc: "Rebase Alpine 3.20."}
|
- {date: "31.05.24:", desc: "Rebase Alpine 3.20."}
|
||||||
|
|||||||
Reference in New Issue
Block a user