diff --git a/charts/incubator/automatic-music-downloader/Chart.yaml b/charts/incubator/automatic-music-downloader/Chart.yaml new file mode 100644 index 00000000000..dfcb57ccf4c --- /dev/null +++ b/charts/incubator/automatic-music-downloader/Chart.yaml @@ -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 diff --git a/charts/incubator/automatic-music-downloader/questions.yaml b/charts/incubator/automatic-music-downloader/questions.yaml new file mode 100644 index 00000000000..d451a978e99 --- /dev/null +++ b/charts/incubator/automatic-music-downloader/questions.yaml @@ -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} diff --git a/charts/incubator/automatic-music-downloader/templates/common.yaml b/charts/incubator/automatic-music-downloader/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/incubator/automatic-music-downloader/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/incubator/automatic-music-downloader/values.yaml b/charts/incubator/automatic-music-downloader/values.yaml new file mode 100644 index 00000000000..3267f2f3ba3 --- /dev/null +++ b/charts/incubator/automatic-music-downloader/values.yaml @@ -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" diff --git a/docs/_static/img/appicons/automatic-music-downloader-icon.png b/docs/_static/img/appicons/automatic-music-downloader-icon.png new file mode 100644 index 00000000000..5acf7a731e4 Binary files /dev/null and b/docs/_static/img/appicons/automatic-music-downloader-icon.png differ diff --git a/docs/apps/app-requests.md b/docs/apps/app-requests.md index 07ff002c76f..d89917a90a0 100644 --- a/docs/apps/app-requests.md +++ b/docs/apps/app-requests.md @@ -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