feat(auto-music-downloader) Add auto-music-downloader (#1902)

* initial commit

* Enums and add icon

* Add some docs

* Fix values

* Remove licence, correct questions.yaml.

* Update docs/manual/default-ports.md

Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* Update charts/incubator/amd-automatic-music-downloader/values.yaml

Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* Update charts/incubator/amd-automatic-music-downloader/values.yaml

Thanks

Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* Update charts/incubator/amd-automatic-music-downloader/values.yaml

Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* Update charts/incubator/amd-automatic-music-downloader/Chart.yaml

* Update charts/incubator/amd-automatic-music-downloader/Chart.yaml

* Update charts/incubator/amd-automatic-music-downloader/questions.yaml

* Update charts/incubator/amd-automatic-music-downloader/values.yaml

* Update charts/incubator/amd-automatic-music-downloader/questions.yaml

* Update charts/incubator/amd-automatic-music-downloader/Chart.yaml

* rename folder

* Remove *.md files, helmignore. Rename app.

* use digest-pinning

* Update charts/incubator/automatic-music-downloader/questions.yaml

Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* Fix version to 1.0.0.
Fix over long enum descriptions,
multiline some descriptions.

* Reset auto gen appVersion.
Set version to 0.0.1.

* Update image tag

* Update charts/incubator/automatic-music-downloader/values.yaml

Co-authored-by: Matt Haddock <matthewha@graphcore.ai>
Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>
Co-authored-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
This commit is contained in:
brothergomez 2022-02-20 14:34:49 +00:00 committed by GitHub
parent 570baae023
commit cc4164dabf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 561 additions and 0 deletions

View File

@ -0,0 +1,31 @@
apiVersion: v2
appVersion: "latest"
dependencies:
- name: common
repository: https://truecharts.org
version: 8.15.4
deprecated: false
description: A Lidarr companion script to automatically download music for Lidarr.
home: https://github.com/truecharts/apps/tree/master/charts/incubator/automatic-music-downloader
icon: https://truecharts.org/_static/img/appicons/automatic-music-downloader-icon.png
keywords:
- automatic
- music
- downloader
- deemix
kubeVersion: '>=1.16.0-0'
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: automatic-music-downloader
sources:
- https://github.com/RandomNinjaAtk/docker-amd
- https://hub.docker.com/r/randomninjaatk/amd
type: application
version: 0.0.1
annotations:
truecharts.org/catagories: |
- media
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U

View File

@ -0,0 +1,493 @@
# Include{groups}
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
questions:
- variable: portal
group: "Container Image"
label: "Configure Portal Button"
schema:
type: dict
hidden: true
attrs:
- variable: enabled
label: "Enable"
description: "enable the portal button"
schema:
hidden: true
editable: false
type: boolean
default: true
# Include{global}
- variable: controller
group: "Controller"
label: ""
schema:
additional_attrs: true
type: dict
attrs:
- variable: advanced
label: "Show Advanced Controller Settings"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
description: "Please specify type of workload to deploy"
label: "(Advanced) Controller Type"
schema:
type: string
default: "deployment"
required: true
enum:
- value: "deployment"
description: "Deployment"
- value: "statefulset"
description: "Statefulset"
- value: "daemonset"
description: "Daemonset"
- variable: replicas
description: "Number of desired pod replicas"
label: "Desired Replicas"
schema:
type: int
default: 1
required: true
- variable: strategy
description: "Please specify type of workload to deploy"
label: "(Advanced) Update Strategy"
schema:
type: string
default: "Recreate"
required: true
enum:
- value: "Recreate"
description: "Recreate: Kill existing pods before creating new ones"
- value: "RollingUpdate"
description: "RollingUpdate: Create new pods and then kill old ones"
- value: "OnDelete"
description: "(Legacy) OnDelete: ignore .spec.template changes"
# Include{controllerExpert}
- variable: env
group: "Container Configuration"
label: "Image Environment"
schema:
additional_attrs: true
type: dict
attrs:
# Include{fixedEnv}
- variable: PUID
label: "PUID"
description: "Sets the PUID env var for LinuxServer.io (compatible) containers"
schema:
type: int
default: 568
- variable: AUTOSTART
label: "Auto Start"
description: "true = Enabled :: Runs script automatically on startup"
schema:
type: boolean
default: true
- variable: SCRIPTINTERVAL
label: "Script Interval"
description: "#s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when AUTOSTART is enabled"
schema:
type: string
default: "1h"
- variable: DOWNLOADMODE
label: "Download Mode"
description: >
"`wanted` or `artist` :: wanted mode only download missing/cutoff ::
artist mode downloads all albums by an artist (requires lidarr volume mapping root media folders for import)"
schema:
type: string
default: "wanted"
enum:
- value: "wanted"
description: "Only missing/cutoff"
- value: "artist"
description: "All albums"
- variable: FALLBACKSEARCH
label: "Fallback Search"
description: "True or False :: True = enabled :: Allows DL client to search for missing songs when they are not available"
schema:
type: boolean
default: true
- variable: LIST
label: "LIST"
description: "Both or missing or cutoff :: both = missing + cutoff :: missng = lidarr missing list :: cutoff = lidarr cutoff list"
schema:
type: string
default: "both"
enum:
- value: "both"
description: "missing + cutoff"
- value: "missing"
description: "lidarr missing list"
- value: "cutoff"
description: "lidarr cutoff list"
- variable: SearchType
label: "Search Type"
description: |
both or artist or fuzzy
both = artist + fuzzy searching
artist = only artist searching
fuzzy = only fuzzy searching (Various Artist is always fuzzy searched, regardless of setting)
schema:
type: string
default: "both"
enum:
- value: "both"
description: "Artist + fuzzy searching."
- value: "artist"
description: "Only artist searching."
- value: "fuzzy"
description: "Only fuzzy searching."
- variable: Concurrency
label: "Concurrency"
description: "Number of concurrent downloads"
schema:
type: int
default: 1
- variable: EMBEDDED_COVER_QUALITY
label: "Embedded Cover Quality"
description: "Controls the quality of the cover image compression in percentage, 100 = no compression"
schema:
type: int
default: 80
- variable: FORMAT
label: "Format"
description: |
FLAC or MP3 or OPUS or AAC or ALAC.
FLAC is an audio coding format for lossless compression of digital audio.
MP3 (or mp3) as a file format commonly designates files containing an elementary stream of MPEG-1 Audio or MPEG-2 Audio encoded data.
Opus is a lossy audio coding format developed by the Xiph.Org Foundation and standardized by the Internet Engineering Task Force.
Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio compression.
schema:
type: string
default: "FLAC"
enum:
- value: "FLAC"
description: "FLAC"
- value: "MP3"
description: "MP3"
- value: "OPUS"
description: "OPUS"
- value: "AAC"
description: "AAC"
- value: "ALAC"
description: "ALAC"
- variable: BITRATE
label: "Bit Rate"
description: "FLAC -> OPUS/AAC/MP3 will be converted using this bitrate (MP3 320/128 is native, not converted)"
schema:
type: int
default: 320
- variable: ENABLEPOSTPROCESSING
label: "Enable Postprocessing"
description: "true = enabled :: enables or disables post processing processes as much as possible"
schema:
type: boolean
default: true
- variable: FORCECONVERT
label: "Force Convert"
description: "true = enabled :: This will convert lossy MP3 to desired target format (exluding FLAC/ALAC, ALAC will convert to AAC)"
schema:
type: boolean
default: true
- variable: requirequality
label: "Require Quality"
description: "true = enabled :: Requires all downloaded files match target file extension (mp3 or flac) when enabled"
schema:
type: boolean
default: true
- variable: MatchDistance
label: "Match Distance"
description: >
"Set as an integer, the higher the number, the more lenient it is.
Example: A match score of 0 is a perfect match :: For more information,
this score is produced using this function: Algorithm Implementation/Strings/Levenshtein distance"
schema:
type: int
default: 10
- variable: replaygain
label: "Replay Gain"
description: "true = enabled :: Scans and analyzes files to add replaygain tags to song metadata"
schema:
type: boolean
default: true
- variable: FolderPermissions
label: "Folder Permissions"
description: "Based on chmod linux permissions"
schema:
type: int
default: 766
- variable: FilePermissions
label: "File Permissions"
description: "Based on chmod linux permissions"
schema:
type: int
default: 666
- variable: MBRAINZMIRROR
label: "Mbrainz Mirror"
description: "OPTIONAL :: Only change if using a different mirror"
schema:
type: string
default: "https://musicbrainz.org"
- variable: MBRATELIMIT
label: "Mb Rate Limit"
description: "OPTIONAL: musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10 :: Set to 101 to disable limit"
schema:
type: int
default: 1
- variable: LidarrUrl
label: "Lidarr Url"
description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify http/s."
schema:
type: string
default: "http://x.x.x.x:8686"
- variable: LidarrAPIkey
label: "Lidarr Api Key"
description: "Lidarr API key."
schema:
type: string
default: "LIDARRAPI"
- variable: ARL_TOKEN
label: "ARL Token"
description: "Deezer ARL Cookie"
schema:
type: string
default: "ARLTOKEN"
- variable: NOTIFYPLEX
label: "Notify PLEX"
description: "true = enabled :: ONLY APPLIES ARTIST MODE :: Plex must have a music library added and be configured to use the exact same mount point as Lidarr's root folder"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: PLEXLIBRARYNAME
label: "PLEX Library Name"
description: "This must exactly match the name of the Plex Library that contains the Lidarr Media Folder data"
schema:
type: string
default: "Music"
- variable: PLEXURL
label: "PLEX URL"
description: "Path to PLEX."
schema:
type: string
default: "http://x.x.x.x:32400"
- variable: PLEXTOKEN
label: "PLEX Token"
description: "PLEX API token."
schema:
type: string
default: "plextoken"
- variable: ALBUM_TYPE_FILTER
label: "Album Type Filter"
description: 'Filter Types: COMPILE, SINGLE, ALBUM, EP (this is a ", " separated list of Album Types to skip) (Applicable to artist mode only)'
schema:
type: string
default: "COMPILE"
- variable: POSTPROCESSTHREADS
label: "Post Process Threads"
description: "Controls number of threads used for Format conversion and replay gain tagging"
schema:
type: int
default: 1
# Include{containerConfig}
- variable: serviceexpert
group: "Networking and Services"
label: "Show Expert Config"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostNetwork
group: "Networking and Services"
label: "Host-Networking (Complicated)"
schema:
type: boolean
default: false
# Include{serviceExpert}
# Include{serviceList}
- variable: persistence
label: "Integrated Persistent Storage"
description: "Integrated Persistent Storage"
group: "Storage and Persistence"
schema:
additional_attrs: true
type: dict
attrs:
- variable: config
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
additional_attrs: true
type: dict
attrs:
- variable: type
label: "Type of Storage"
description: "Sets the persistence type, Anything other than PVC could break rollback!"
schema:
type: string
default: "simplePVC"
enum:
- value: "simplePVC"
description: "PVC (simple)"
- value: "simpleHP"
description: "HostPath (simple)"
- value: "emptyDir"
description: "emptyDir"
- value: "pvc"
description: "pvc"
- value: "hostPath"
description: "hostPath"
# Include{persistenceBasic}
- variable: hostPath
label: "hostPath"
description: "Path inside the container the storage is mounted"
schema:
show_if: [["type", "=", "hostPath"]]
type: hostpath
- variable: medium
label: "EmptyDir Medium"
schema:
show_if: [["type", "=", "emptyDir"]]
type: string
default: ""
enum:
- value: ""
description: "Default"
- value: "Memory"
description: "Memory"
# Include{persistenceAdvanced}
- variable: data
label: "App Data Storage"
description: "Stores the Application Data."
schema:
additional_attrs: true
type: dict
attrs:
- variable: type
label: "Type of Storage"
description: "Sets the persistence type, Anything other than PVC could break rollback!"
schema:
type: string
default: "simplePVC"
enum:
- value: "simplePVC"
description: "PVC (simple)"
- value: "simpleHP"
description: "HostPath (simple)"
- value: "emptyDir"
description: "emptyDir"
- value: "pvc"
description: "pvc"
- value: "hostPath"
description: "hostPath"
# Include{persistenceBasic}
- variable: hostPath
label: "hostPath"
description: "Path inside the container the storage is mounted"
schema:
show_if: [["type", "=", "hostPath"]]
type: hostpath
- variable: medium
label: "EmptyDir Medium"
schema:
show_if: [["type", "=", "emptyDir"]]
type: string
default: ""
enum:
- value: ""
description: "Default"
- value: "Memory"
description: "Memory"
# Include{persistenceAdvanced}
# Include{persistenceList}
# Include{ingressList}
- variable: advancedSecurity
label: "Show Advanced Security Settings"
group: "Security and Permissions"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: securityContext
label: "Security Context"
schema:
additional_attrs: true
type: dict
attrs:
- variable: privileged
label: "Privileged mode"
schema:
type: boolean
default: false
- variable: readOnlyRootFilesystem
label: "ReadOnly Root Filesystem"
schema:
type: boolean
default: false
- variable: allowPrivilegeEscalation
label: "Allow Privilege Escalation"
schema:
type: boolean
default: false
- variable: runAsNonRoot
label: "runAsNonRoot"
schema:
type: boolean
default: false
# Include{securityContextAdvanced}
- variable: podSecurityContext
group: "Security and Permissions"
label: "Pod Security Context"
schema:
additional_attrs: true
type: dict
attrs:
- variable: runAsUser
label: "runAsUser"
description: "The UserID of the user running the application"
schema:
type: int
default: 0
- variable: runAsGroup
label: "runAsGroup"
description: The groupID this App of the user running the application"
schema:
type: int
default: 0
- variable: fsGroup
label: "fsGroup"
description: "The group that should own ALL storage."
schema:
type: int
default: 568
# Include{podSecurityContextAdvanced}
# Include{resources}
# Include{advanced}
# Include{addons}

View File

@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@ -0,0 +1,35 @@
image:
repository: tccr.io/truecharts/automatic-music-downloader
pullPolicy: IfNotPresent
tag: latest@sha256:7a1b9f4b3f0cc3341be14792259ed5bedd6c64d0e732bde644b32fcefd6e94b1
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
podSecurityContext:
runAsUser: 0
runAsGroup: 0
service:
main:
enabled: false
ports:
main:
enabled: false
probes:
liveness:
enabled: false
readiness:
enabled: false
startup:
enabled: false
persistence:
config:
enabled: true
mountPath: "/config"
data:
enabled: true
mountPath: "/downloads-amd"

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -517,3 +517,4 @@ _These Apps have specific requirements or need specific customisation and care_
- [x] LinkAce #1020
- [x] Photoview #293
- [x] Librephotos #293
- [x] AMD - Automated Music Downloader