| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- ---
- apiVersion: batch/v1
- kind: CronJob
- metadata:
- name: lidarr-empty-folders
- namespace: plex
- spec:
- schedule: "*/30 * * * *"
- successfulJobsHistoryLimit: 1
- failedJobsHistoryLimit: 1
- concurrencyPolicy: Forbid
- jobTemplate:
- spec:
- template:
- metadata:
- labels:
- app: lidarr-empty-folders
- annotations:
- backup.velero.io/backup-volumes-excludes: media
- spec:
- securityContext:
- runAsUser: 1000
- runAsGroup: 1000
- restartPolicy: OnFailure
- containers:
- - name: lidarr-empty-folders
- image: jibby0/server-python3-requests:3.11-alpine
- command:
- - /bin/sh
- - -c
- - python3 /script/lidarr_empty_folders.py $LIDARR_HOST $LIDARR_API_KEY $LIDARR_MUSIC_PATH
- env:
- - name: LIDARR_HOST
- value: https://lidarr.lan.jibby.org
- - name: LIDARR_API_KEY
- valueFrom:
- secretKeyRef:
- name: lidarr-empty-folders
- key: api-key
- - name: LIDARR_MUSIC_PATH
- value: /media/Music/
- volumeMounts:
- - mountPath: "/media"
- name: media
- - mountPath: /script
- name: lidarr-empty-folders
- volumes:
- - name: media
- persistentVolumeClaim:
- claimName: plex-pvc
- - name: lidarr-empty-folders
- configMap:
- name: lidarr-empty-folders
- items:
- - key: lidarr_empty_folders.py
- path: lidarr_empty_folders.py
- ---
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: lidarr-empty-folders
- namespace: plex
- data:
- lidarr_empty_folders.py: |
- import requests
- from requests.adapters import HTTPAdapter, Retry
- import os
- import sys
- if len(sys.argv) != 4:
- print("One or more args are undefined")
- sys.exit(1)
- lidarr_server, lidarr_api_key, music_folder = sys.argv[1:4]
- retries = Retry(total=10,
- backoff_factor=1,
- status_forcelist=[ 500, 502, 503, 504 ])
- s = requests.Session()
- s.mount('http://', HTTPAdapter(max_retries=retries))
- resp = s.get(
- f"{lidarr_server}/api/v1/artist",
- headers={"Authorization": f"Bearer {lidarr_api_key}"}
- )
- artists = resp.json()
- for artist in artists:
- artist_name = artist.get("artistName")
- artist_path = music_folder + artist_name
- if ('/' not in artist_name) and (not os.path.exists(artist_path)):
- print("Creating ", artist_path)
- os.mkdir(artist_path)
|