feat: transmission on add script to guess path

This commit is contained in:
2025-08-19 19:57:33 +02:00
parent be608f0016
commit a2352f19d8
9 changed files with 59 additions and 11 deletions
+3 -6
View File
@@ -7,11 +7,8 @@ labels:
app.kubernetes.io/name: transmission
resources:
- ./deployment.yaml
- ./service.yaml
- ./secrets.yaml
- ./pv-downloads.yaml
- ./pv-medias.yaml
- ./pv-config.yaml
- ./transmission
- ./flood
- ./smartrss
- ./pv-downloads.yaml
- ./pv-medias.yaml
+2 -1
View File
@@ -13,7 +13,7 @@ spec:
fsGroupChangePolicy: OnRootMismatch
containers:
- name: smartrss
image: nixery.dev/shell/rsstail-py/transmission_4/guessit
image: nixery.dev/shell/rsstail-py/transmission_4/python313packages.guessit
command: [/app/smartrss.sh]
env:
- name: URL
@@ -44,6 +44,7 @@ spec:
- name: scripts
configMap:
name: smartrss-scripts
defaultMode: 0555
- name: medias
persistentVolumeClaim:
# TODO: use medias once i actually have some :c
+2 -1
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env bash
set -e
rsstail -f '{title}---{link}\n' "$URL" | while IFS="---" read -r title link; do
name=$(guessit "$title" -P title | tr -d "[:punct:]")
# shellcheck disable=SC2012
if ls /medias | tr -d "[:punct:]" | grep -qix "$name"; then
transmission-remote "$TRURL" --auth "$TRUSER:$TRPASS" -a "$link"
transmission-remote "$TRURL" --auth "$TRUSER:$TRPASS" -a "$link" -w "$name"
fi
done
@@ -18,9 +18,14 @@ spec:
- name: TRANSMISSION__UMASK
value: "002"
- name: TRANSMISSION__INCOMPLETE_DIR_ENABLED
value: "false"
value: "true"
- name: TRANSMISSION__DOWNLOAD_DIR
value: "/downloads"
- name: TRANSMISSION__INCOMPLETE_DIR
value: "/downloads"
# this one is applied by the guesspath.sh script
- name: TRANSMISSION__MEDIAS_DIR
value: "/medias"
- name: TRANSMISSION__DOWNLOAD_QUEUE_ENABLED
value: "false"
- name: TRANSMISSION__RENAME_PARTIAL_FILES
@@ -29,8 +34,8 @@ spec:
value: "false"
- name: TRANSMISSION__SCRIPT_TORRENT_ADDED_ENABLED
value: "true"
# - name: TRANSMISSION__SCRIPT_TORRENT_ADDED_FILENAME
# value: "scripts/guesspath"
- name: TRANSMISSION__SCRIPT_TORRENT_ADDED_FILENAME
value: "/scripts/guesspath.sh"
- name: TRANSMISSION__RPC_PORT
value: "9091"
- name: TRANSMISSION__PEER_PORT
@@ -50,14 +55,23 @@ spec:
volumeMounts:
- name: config
mountPath: /config
- name: scripts
mountPath: /scripts
- name: downloads
mountPath: /downloads
- name: medias
mountPath: /medias
- name: guessit
image: nixery.dev/shell/shell2http/python313packages.guessit
command: ["shell2http", "-form", "/", 'guessit -P title "$v_title"']
volumes:
- name: config
persistentVolumeClaim:
claimName: config
- name: scripts
configMap:
name: scripts
defaultMode: 0555
- name: medias
persistentVolumeClaim:
claimName: medias
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -e
if [[ "$TR_TORRENT_DIR" != "/downloads" ]]; then
echo "Ignoring $TR_TORRENT_NAME since it already has a dir set: $TR_TORRENT_DIR"
exit
fi
echo "Running with $TR_TORRENT_NAME $TR_TORRENT_ID"
name=$TR_TORRENT_NAME
# guessit is not available in the container so we use shell2http to expose it in localhost:8080
# dir=$(guessit "$name" -P "title")
dir=$(curl "localhost:8080" -G --data-urlencode "title=$name")
echo "Guessed '$dir' for torrent '$name'"
export AUTH="$TRANSMISSION__RPC_USERNAME:$TRANSMISSION__RPC_PASSWORD"
transmission-remote --auth "$AUTH" -t "$TR_TORRENT_ID" --move "$TRANSMISSION__MEDIAS_DIR/$dir"
@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/component: transmission
configMapGenerator:
- name: scripts
files:
- ./guesspath.sh
resources:
- ./deployment.yaml
- ./service.yaml
- ./secrets.yaml
- ./pv-config.yaml