remove tautulli
This commit is contained in:
@@ -160,7 +160,6 @@ blocky:
|
|||||||
sonarr-4k IN CNAME traefik-cl01tl
|
sonarr-4k IN CNAME traefik-cl01tl
|
||||||
sonarr-anime IN CNAME traefik-cl01tl
|
sonarr-anime IN CNAME traefik-cl01tl
|
||||||
stalwart IN CNAME traefik-cl01tl
|
stalwart IN CNAME traefik-cl01tl
|
||||||
tautulli IN CNAME traefik-cl01tl
|
|
||||||
tdarr IN CNAME traefik-cl01tl
|
tdarr IN CNAME traefik-cl01tl
|
||||||
tubearchivist IN CNAME traefik-cl01tl
|
tubearchivist IN CNAME traefik-cl01tl
|
||||||
vault IN CNAME traefik-cl01tl
|
vault IN CNAME traefik-cl01tl
|
||||||
|
|||||||
@@ -206,9 +206,6 @@ gatus:
|
|||||||
- name: alertmanager
|
- name: alertmanager
|
||||||
url: https://alertmanager.alexlebens.net
|
url: https://alertmanager.alexlebens.net
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
- name: tautulli
|
|
||||||
url: https://tautulli.alexlebens.net
|
|
||||||
<<: *defaults
|
|
||||||
- name: jellystat
|
- name: jellystat
|
||||||
url: https://jellystat.alexlebens.net
|
url: https://jellystat.alexlebens.net
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
|||||||
@@ -394,12 +394,6 @@ homepage:
|
|||||||
query: prometheus_tsdb_storage_blocks_bytes
|
query: prometheus_tsdb_storage_blocks_bytes
|
||||||
format:
|
format:
|
||||||
type: bytes
|
type: bytes
|
||||||
- Tautulli:
|
|
||||||
icon: sh-tautulli.webp
|
|
||||||
description: Plex Monitoring
|
|
||||||
href: https://tautulli.alexlebens.net
|
|
||||||
siteMonitor: http://tautulli.tautulli:80
|
|
||||||
statusStyle: dot
|
|
||||||
- Jellystat:
|
- Jellystat:
|
||||||
icon: sh-jellystat.webp
|
icon: sh-jellystat.webp
|
||||||
description: Jellyfin Monitoring
|
description: Jellyfin Monitoring
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
dependencies:
|
|
||||||
- name: app-template
|
|
||||||
repository: https://bjw-s-labs.github.io/helm-charts/
|
|
||||||
version: 4.6.2
|
|
||||||
- name: volsync-target
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 0.7.0
|
|
||||||
digest: sha256:50badda5b51f1c82558bee67c3a647bdd356c9b7db06acfeef05501aaaabd911
|
|
||||||
generated: "2026-01-16T18:55:22.993941938Z"
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: tautulli
|
|
||||||
version: 1.0.0
|
|
||||||
description: Tautulli
|
|
||||||
keywords:
|
|
||||||
- tautulli
|
|
||||||
- plex
|
|
||||||
home: https://wiki.alexlebens.dev/s/b2f5d20a-b3c2-4e7a-b550-7b2855264408
|
|
||||||
sources:
|
|
||||||
- https://github.com/Tautulli/Tautulli
|
|
||||||
- https://github.com/Tautulli/Tautulli/pkgs/container/tautulli
|
|
||||||
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
dependencies:
|
|
||||||
- name: app-template
|
|
||||||
alias: tautulli
|
|
||||||
repository: https://bjw-s-labs.github.io/helm-charts/
|
|
||||||
version: 4.6.2
|
|
||||||
- name: volsync-target
|
|
||||||
alias: volsync-target-config
|
|
||||||
version: 0.7.0
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/tautulli.png
|
|
||||||
# renovate: github=Tautulli/Tautulli
|
|
||||||
appVersion: v2.16.0
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
tautulli:
|
|
||||||
controllers:
|
|
||||||
main:
|
|
||||||
type: deployment
|
|
||||||
annotations:
|
|
||||||
reloader.stakater.com/auto: "true"
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
containers:
|
|
||||||
main:
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/tautulli/tautulli
|
|
||||||
tag: v2.16.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
- name: PUID
|
|
||||||
value: 1001
|
|
||||||
- name: GUID
|
|
||||||
value: 1001
|
|
||||||
- name: TZ
|
|
||||||
value: US/Central
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 128Mi
|
|
||||||
configMaps:
|
|
||||||
scripts:
|
|
||||||
enabled: true
|
|
||||||
data:
|
|
||||||
select_tmdb_poster.py: |
|
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
'''
|
|
||||||
Description: Selects the default TMDB poster if no poster is selected
|
|
||||||
or the current poster is from Gracenote.
|
|
||||||
Author: /u/SwiftPanda16
|
|
||||||
Requires: plexapi
|
|
||||||
Usage:
|
|
||||||
* Change the posters for an entire library:
|
|
||||||
python select_tmdb_poster.py --library "Movies"
|
|
||||||
|
|
||||||
* Change the poster for a specific item:
|
|
||||||
python select_tmdb_poster.py --rating_key 1234
|
|
||||||
|
|
||||||
* By default locked posters are skipped. To update locked posters:
|
|
||||||
python select_tmdb_poster.py --library "Movies" --include_locked
|
|
||||||
|
|
||||||
Tautulli script trigger:
|
|
||||||
* Notify on recently added
|
|
||||||
Tautulli script conditions:
|
|
||||||
* Filter which media to select the poster. Examples:
|
|
||||||
[ Media Type | is | movie ]
|
|
||||||
Tautulli script arguments:
|
|
||||||
* Recently Added:
|
|
||||||
--rating_key {rating_key}
|
|
||||||
'''
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import plexapi.base
|
|
||||||
from plexapi.server import PlexServer
|
|
||||||
plexapi.base.USER_DONT_RELOAD_FOR_KEYS.add('fields')
|
|
||||||
|
|
||||||
|
|
||||||
# Environmental Variables
|
|
||||||
PLEX_URL = os.getenv('PLEX_URL')
|
|
||||||
PLEX_TOKEN = os.getenv('PLEX_TOKEN')
|
|
||||||
|
|
||||||
|
|
||||||
def select_tmdb_poster_library(library, include_locked=False):
|
|
||||||
for item in library.all(includeGuids=False):
|
|
||||||
# Only reload for fields
|
|
||||||
item.reload(**{k: 0 for k, v in item._INCLUDES.items()})
|
|
||||||
select_tmdb_poster_item(item, include_locked=include_locked)
|
|
||||||
|
|
||||||
|
|
||||||
def select_tmdb_poster_item(item, include_locked=False):
|
|
||||||
if item.isLocked('thumb') and not include_locked: # PlexAPI 4.5.10
|
|
||||||
print(f"Locked poster for {item.title}. Skipping.")
|
|
||||||
return
|
|
||||||
|
|
||||||
posters = item.posters()
|
|
||||||
selected_poster = next((p for p in posters if p.selected), None)
|
|
||||||
|
|
||||||
if selected_poster is None:
|
|
||||||
print(f"WARNING: No poster selected for {item.title}.")
|
|
||||||
else:
|
|
||||||
skipping = ' Skipping.' if selected_poster.provider != 'gracenote' else ''
|
|
||||||
print(f"Poster provider is '{selected_poster.provider}' for {item.title}.{skipping}")
|
|
||||||
|
|
||||||
if posters and (selected_poster is None or selected_poster.provider == 'gracenote'):
|
|
||||||
# Fallback to first poster if no TMDB posters are available
|
|
||||||
tmdb_poster = next((p for p in posters if p.provider == 'tmdb'), posters[0])
|
|
||||||
# Selecting the poster automatically locks it
|
|
||||||
tmdb_poster.select()
|
|
||||||
print(f"Selected {tmdb_poster.provider} poster for {item.title}.")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('--rating_key', type=int)
|
|
||||||
parser.add_argument('--library')
|
|
||||||
parser.add_argument('--include_locked', action='store_true')
|
|
||||||
opts = parser.parse_args()
|
|
||||||
|
|
||||||
plex = PlexServer(PLEX_URL, PLEX_TOKEN)
|
|
||||||
|
|
||||||
if opts.rating_key:
|
|
||||||
item = plex.fetchItem(opts.rating_key)
|
|
||||||
select_tmdb_poster_item(item, opts.include_locked)
|
|
||||||
elif opts.library:
|
|
||||||
library = plex.library.section(opts.library)
|
|
||||||
select_tmdb_poster_library(library, opts.include_locked)
|
|
||||||
else:
|
|
||||||
print("No --rating_key or --library specified. Exiting.")
|
|
||||||
service:
|
|
||||||
main:
|
|
||||||
controller: main
|
|
||||||
ports:
|
|
||||||
http:
|
|
||||||
port: 80
|
|
||||||
targetPort: 8181
|
|
||||||
protocol: HTTP
|
|
||||||
route:
|
|
||||||
main:
|
|
||||||
kind: HTTPRoute
|
|
||||||
parentRefs:
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: traefik-gateway
|
|
||||||
namespace: traefik
|
|
||||||
hostnames:
|
|
||||||
- tautulli.alexlebens.net
|
|
||||||
rules:
|
|
||||||
- backendRefs:
|
|
||||||
- group: ''
|
|
||||||
kind: Service
|
|
||||||
name: tautulli
|
|
||||||
port: 80
|
|
||||||
weight: 100
|
|
||||||
matches:
|
|
||||||
- path:
|
|
||||||
type: PathPrefix
|
|
||||||
value: /
|
|
||||||
persistence:
|
|
||||||
scripts:
|
|
||||||
enabled: true
|
|
||||||
type: configMap
|
|
||||||
name: tautulli-scripts
|
|
||||||
advancedMounts:
|
|
||||||
main:
|
|
||||||
main:
|
|
||||||
- path: /config/scripts/select_tmdb_poster.py
|
|
||||||
readOnly: true
|
|
||||||
mountPropagation: None
|
|
||||||
subPath: select_tmdb_poster.py
|
|
||||||
config:
|
|
||||||
forceRename: tautulli-config
|
|
||||||
storageClass: ceph-block
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 5Gi
|
|
||||||
retain: true
|
|
||||||
advancedMounts:
|
|
||||||
main:
|
|
||||||
main:
|
|
||||||
- path: /config
|
|
||||||
readOnly: false
|
|
||||||
volsync-target-config:
|
|
||||||
pvcTarget: tautulli-config
|
|
||||||
local:
|
|
||||||
enabled: true
|
|
||||||
schedule: 34 11 * * *
|
|
||||||
remote:
|
|
||||||
enabled: false
|
|
||||||
external:
|
|
||||||
enabled: true
|
|
||||||
schedule: 34 12 * * *
|
|
||||||
@@ -135,7 +135,6 @@ customDNS:
|
|||||||
sonarr-4k IN CNAME traefik-cl01tl
|
sonarr-4k IN CNAME traefik-cl01tl
|
||||||
sonarr-anime IN CNAME traefik-cl01tl
|
sonarr-anime IN CNAME traefik-cl01tl
|
||||||
stalwart IN CNAME traefik-cl01tl
|
stalwart IN CNAME traefik-cl01tl
|
||||||
tautulli IN CNAME traefik-cl01tl
|
|
||||||
tdarr IN CNAME traefik-cl01tl
|
tdarr IN CNAME traefik-cl01tl
|
||||||
tubearchivist IN CNAME traefik-cl01tl
|
tubearchivist IN CNAME traefik-cl01tl
|
||||||
vault IN CNAME traefik-cl01tl
|
vault IN CNAME traefik-cl01tl
|
||||||
|
|||||||
@@ -156,7 +156,6 @@ customDNS:
|
|||||||
sonarr-4k IN CNAME traefik-cl01tl
|
sonarr-4k IN CNAME traefik-cl01tl
|
||||||
sonarr-anime IN CNAME traefik-cl01tl
|
sonarr-anime IN CNAME traefik-cl01tl
|
||||||
stalwart IN CNAME traefik-cl01tl
|
stalwart IN CNAME traefik-cl01tl
|
||||||
tautulli IN CNAME traefik-cl01tl
|
|
||||||
tdarr IN CNAME traefik-cl01tl
|
tdarr IN CNAME traefik-cl01tl
|
||||||
tubearchivist IN CNAME traefik-cl01tl
|
tubearchivist IN CNAME traefik-cl01tl
|
||||||
vault IN CNAME traefik-cl01tl
|
vault IN CNAME traefik-cl01tl
|
||||||
|
|||||||
Reference in New Issue
Block a user