From a257a3153d2202113299d2925e91b01901107ed2 Mon Sep 17 00:00:00 2001 From: soraefir Date: Thu, 21 May 2026 01:08:59 +0200 Subject: [PATCH] Setup Script --- modules/server/containers/apps/servarr.nix | 83 +++++++++++++++++++++- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/modules/server/containers/apps/servarr.nix b/modules/server/containers/apps/servarr.nix index 408c33d..a4d8221 100644 --- a/modules/server/containers/apps/servarr.nix +++ b/modules/server/containers/apps/servarr.nix @@ -152,7 +152,6 @@ in envFile = config.sops.secrets."SERVARR".path; script = pkgs.writeShellScript "setup-servarr" '' - ${lib.optionalString (builtins.elem "prowlarr" (containerCfg.extra.modules or defaultModules)) '' echo "Prowlarr Setup - START" PROWLARR_URL="https://${containerCfg.subdomain}.${serverCfg.domain}/prowlarr" @@ -161,11 +160,11 @@ in -H "X-Api-Key: $PROWLARR__AUTH__APIKEY" -H 'X-Prowlarr-Client: true' \ -H 'Accept: application/json' -H 'Content-Type: application/json') - if ! echo "$PROWL_TAG" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .label == "FlareSolverr")' > /dev/null; then + if ! echo "$PROWL_TAG" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .label == "flaresolver")' > /dev/null; then PROWL_TAG=$(${pkgs.curl}/bin/curl -s -X POST "$PROWLARR_URL/api/v1/tag" \ -H "X-Api-Key: $PROWLARR__AUTH__APIKEY" -H 'X-Prowlarr-Client: true' \ -H 'Accept: application/json' -H 'Content-Type: application/json' \ - -d '{"label":"FlareSolverr"}' ) + -d '{"label":"flaresolver"}' ) fi PROWL_PROXY=$(${pkgs.curl}/bin/curl -s -X GET "$PROWLARR_URL/api/v1/indexerProxy" \ @@ -287,6 +286,84 @@ in ''} + ${lib.optionalString (builtins.elem "sonarr" (containerCfg.extra.modules or defaultModules)) '' + echo "Sonarr Setup - START" + SONARR_URL="https://${containerCfg.subdomain}.${serverCfg.domain}/sonarr" + + SONARR_CF=$(${pkgs.curl}/bin/curl -s -X GET "$SONARR_URL/api/v3/customformat" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json') + + if ! echo "$SONARR_CF" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "ORIG_1080")' > /dev/null; then + ${pkgs.curl}/bin/curl -s -X POST "$SONARR_URL/api/v3/customformat" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"ORIG_1080","includeCustomFormatWhenRenaming":false,"specifications":[\ + {"id":1,"name":"Lang_ORIG","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":true,"fields":[{"order":0,"name":"value","label":"Language","value":-2,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]},\ + {"id":2,"name":"1080p","implementation":"ResolutionSpecification","implementationName":"Resolution","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":true,"fields":[{"order":0,"name":"value","label":"Resolution","value":1080,"type":"select","advanced":false,"selectOptions":[{"value":0,"name":"Unknown","order":0},{"value":360,"name":"R360p","order":360},{"value":480,"name":"R480p","order":480},{"value":540,"name":"R540p","order":540},{"value":576,"name":"R576p","order":576},{"value":720,"name":"R720p","order":720},{"value":1080,"name":"R1080p","order":1080},{"value":2160,"name":"R2160p","order":2160}],"privacy":"normal","isFloat":false}]}]}' + fi + if ! echo "$SONARR_CF" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "ORIG_2160")' > /dev/null; then + ${pkgs.curl}/bin/curl -s -X POST "$SONARR_URL/api/v3/customformat" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"ORIG_2160","includeCustomFormatWhenRenaming":false,"specifications":[\ + {"id":1,"name":"2160p","implementation":"ResolutionSpecification","implementationName":"Resolution","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":true,"fields":[{"order":0,"name":"value","label":"Resolution","value":2160,"type":"select","advanced":false,"selectOptions":[{"value":0,"name":"Unknown","order":0},{"value":360,"name":"R360p","order":360},{"value":480,"name":"R480p","order":480},{"value":540,"name":"R540p","order":540},{"value":576,"name":"R576p","order":576},{"value":720,"name":"R720p","order":720},{"value":1080,"name":"R1080p","order":1080},{"value":2160,"name":"R2160p","order":2160}],"privacy":"normal","isFloat":false}]},\ + {"id":2,"name":"Lang_ORIG","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":true,"fields":[{"order":0,"name":"value","label":"Language","value":-2,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]}]}' + fi + if ! echo "$SONARR_CF" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "SUBS")' > /dev/null; then + ${pkgs.curl}/bin/curl -s -X POST "$SONARR_URL/api/v3/customformat" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"SUBS","includeCustomFormatWhenRenaming":false,"specifications":[{"id":1,"name":"SUBS","implementation":"ReleaseTitleSpecification","implementationName":"Release Title","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":true,"fields":[{"order":0,"name":"value","label":"Regular Expression","helpText":"Custom Format RegEx is Case Insensitive","value":"[sS][uU][bB]","type":"textbox","advanced":false,"privacy":"normal","isFloat":false}]}]}' + fi + if ! echo "$SONARR_CF" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "LANG_OTHER")' > /dev/null; then + ${pkgs.curl}/bin/curl -s -X POST "$SONARR_URL/api/v3/customformat" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"LANG_OTHER","includeCustomFormatWhenRenaming":false,"specifications":[{"id":1,"name":"FR","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":false,"fields":[{"order":0,"name":"value","label":"Language","value":2,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]},{"id":2,"name":"EN","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":false,"fields":[{"order":0,"name":"value","label":"Language","value":1,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]},{"id":3,"name":"DE","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":false,"fields":[{"order":0,"name":"value","label":"Language","value":4,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]},{"id":4,"name":"JA","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":false,"fields":[{"order":0,"name":"value","label":"Language","value":8,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]},{"id":5,"name":"RU","implementation":"LanguageSpecification","implementationName":"Language","infoLink":"https://wiki.servarr.com/sonarr/settings#custom-formats-2","negate":false,"required":false,"fields":[{"order":0,"name":"value","label":"Language","value":11,"type":"select","advanced":false,"selectOptions":[{"value":-2,"name":"Original","order":0},{"value":0,"name":"Unknown","order":0},{"value":26,"name":"Arabic","order":0},{"value":41,"name":"Bosnian","order":0},{"value":28,"name":"Bulgarian","order":0},{"value":38,"name":"Catalan","order":0},{"value":10,"name":"Chinese","order":0},{"value":39,"name":"Croatian","order":0},{"value":25,"name":"Czech","order":0},{"value":6,"name":"Danish","order":0},{"value":7,"name":"Dutch","order":0},{"value":1,"name":"English","order":0},{"value":42,"name":"Estonian","order":0},{"value":16,"name":"Finnish","order":0},{"value":19,"name":"Flemish","order":0},{"value":2,"name":"French","order":0},{"value":4,"name":"German","order":0},{"value":20,"name":"Greek","order":0},{"value":23,"name":"Hebrew","order":0},{"value":27,"name":"Hindi","order":0},{"value":22,"name":"Hungarian","order":0},{"value":9,"name":"Icelandic","order":0},{"value":44,"name":"Indonesian","order":0},{"value":5,"name":"Italian","order":0},{"value":8,"name":"Japanese","order":0},{"value":21,"name":"Korean","order":0},{"value":36,"name":"Latvian","order":0},{"value":24,"name":"Lithuanian","order":0},{"value":45,"name":"Macedonian","order":0},{"value":29,"name":"Malayalam","order":0},{"value":15,"name":"Norwegian","order":0},{"value":37,"name":"Persian","order":0},{"value":12,"name":"Polish","order":0},{"value":18,"name":"Portuguese","order":0},{"value":33,"name":"Portuguese (Brazil)","order":0},{"value":35,"name":"Romanian","order":0},{"value":11,"name":"Russian","order":0},{"value":40,"name":"Serbian","order":0},{"value":31,"name":"Slovak","order":0},{"value":46,"name":"Slovenian","order":0},{"value":3,"name":"Spanish","order":0},{"value":34,"name":"Spanish (Latino)","order":0},{"value":14,"name":"Swedish","order":0},{"value":43,"name":"Tamil","order":0},{"value":32,"name":"Thai","order":0},{"value":17,"name":"Turkish","order":0},{"value":30,"name":"Ukrainian","order":0},{"value":13,"name":"Vietnamese","order":0}],"privacy":"normal","isFloat":false},{"order":1,"name":"exceptLanguage","label":"Except Language","helpText":"Matches if any language other than the selected language is present","value":false,"type":"checkbox","advanced":false,"privacy":"normal","isFloat":false}]}]}' + fi + + ${pkgs.curl}/bin/curl -s -X POST "$SONARR_URL/api/v3/config/naming" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"renameEpisodes":true,"replaceIllegalCharacters":true,"colonReplacementFormat":4,"customColonReplacementFormat":"","multiEpisodeStyle":5,"standardEpisodeFormat":"{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}","dailyEpisodeFormat":"{Series Title} - {Air-Date} - {Episode Title} {Quality Full}","animeEpisodeFormat":"{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Full}","seriesFolderFormat":"{Series Title}","seasonFolderFormat":"Season {season}","specialsFolderFormat":"Specials","id":1}' + + SONARR_QP=$(${pkgs.curl}/bin/curl -s -X GET "$SONARR_URL/api/v3/qualityprofile" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' ) + + SONARR_QP_ANY=$(echo $SONARR_QP | ${pkgs.jq}/bin/jq '.[] | select(.name == "Any") | .id') + if [ -n "$SONARR_QP_ANY" ]; then + ${pkgs.curl}/bin/curl -s -X PUT "$SONARR_URL/api/v3/qualityprofile/$SONARR_QP_ANY" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"Any","upgradeAllowed":false,"cutoff":0,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0},"items":[],"allowed":true},{"quality":{"id":1,"name":"SDTV","source":"television","resolution":480},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":12,"name":"WEBRip-480p","source":"webRip","resolution":480},"items":[],"allowed":false},{"quality":{"id":8,"name":"WEBDL-480p","source":"web","resolution":480},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":480},"items":[],"allowed":false},{"quality":{"id":13,"name":"Bluray-480p","source":"bluray","resolution":480},"items":[],"allowed":false},{"quality":{"id":22,"name":"Bluray-576p","source":"bluray","resolution":576},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"television","resolution":720},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"television","resolution":1080},"items":[],"allowed":false},{"quality":{"id":10,"name":"Raw-HD","source":"televisionRaw","resolution":1080},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":14,"name":"WEBRip-720p","source":"webRip","resolution":720},"items":[],"allowed":false},{"quality":{"id":5,"name":"WEBDL-720p","source":"web","resolution":720},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":15,"name":"WEBRip-1080p","source":"webRip","resolution":1080},"items":[],"allowed":false},{"quality":{"id":3,"name":"WEBDL-1080p","source":"web","resolution":1080},"items":[],"allowed":false}],"allowed":false,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080},"items":[],"allowed":false},{"quality":{"id":20,"name":"Bluray-1080p Remux","source":"blurayRaw","resolution":1080},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"television","resolution":2160},"items":[],"allowed":false},{"name":"WEB 2160p","items":[{"quality":{"id":17,"name":"WEBRip-2160p","source":"webRip","resolution":2160},"items":[],"allowed":false},{"quality":{"id":18,"name":"WEBDL-2160p","source":"web","resolution":2160},"items":[],"allowed":false}],"allowed":false,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-2160p Remux","source":"blurayRaw","resolution":2160},"items":[],"allowed":false}],"minFormatScore":0,"cutoffFormatScore":0,"minUpgradeFormatScore":1,"formatItems":[{"format":4,"name":"ORIG_2160","score":0},{"format":3,"name":"SUBS","score":0},{"format":2,"name":"LANG_OTHER","score":0},{"format":1,"name":"ORIG_1080","score":0}],"id":'"$SONARR_QP_ANY"'}' + fi + SONARR_QP_RM=("SD" "HD-720p" "HD - 720p/1080p") + for name in "${SONARR_QP_RM[@]}"; do + QP_ID=$(echo "$json_data" | jq -r --arg n "$name" '.[] | select(.name == $n) | .id') + if [ -n "$QP_ID" ]; then + ${pkgs.curl}/bin/curl -s -X DELETE "$SONARR_URL/api/v3/qualityprofile/$QP_ID?" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' + fi + done + SONARR_QP_ID=$(echo $SONARR_QP | ${pkgs.jq}/bin/jq '.[] | select(.name == "HD-1080p") | .id') + if [ -n "$SONARR_QP_ID" ]; then + ${pkgs.curl}/bin/curl -s -X PUT "$SONARR_URL/api/v3/qualityprofile/$SONARR_QP_ID" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"HD-1080p","upgradeAllowed":false,"cutoff":9,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"television","resolution":480},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":12,"name":"WEBRip-480p","source":"webRip","resolution":480},"items":[],"allowed":false},{"quality":{"id":8,"name":"WEBDL-480p","source":"web","resolution":480},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":480},"items":[],"allowed":false},{"quality":{"id":13,"name":"Bluray-480p","source":"bluray","resolution":480},"items":[],"allowed":false},{"quality":{"id":22,"name":"Bluray-576p","source":"bluray","resolution":576},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"television","resolution":720},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"television","resolution":1080},"items":[],"allowed":true},{"quality":{"id":10,"name":"Raw-HD","source":"televisionRaw","resolution":1080},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":14,"name":"WEBRip-720p","source":"webRip","resolution":720},"items":[],"allowed":false},{"quality":{"id":5,"name":"WEBDL-720p","source":"web","resolution":720},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":15,"name":"WEBRip-1080p","source":"webRip","resolution":1080},"items":[],"allowed":true},{"quality":{"id":3,"name":"WEBDL-1080p","source":"web","resolution":1080},"items":[],"allowed":true}],"allowed":true,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080},"items":[],"allowed":true},{"quality":{"id":20,"name":"Bluray-1080p Remux","source":"blurayRaw","resolution":1080},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"television","resolution":2160},"items":[],"allowed":false},{"name":"WEB 2160p","items":[{"quality":{"id":17,"name":"WEBRip-2160p","source":"webRip","resolution":2160},"items":[],"allowed":false},{"quality":{"id":18,"name":"WEBDL-2160p","source":"web","resolution":2160},"items":[],"allowed":false}],"allowed":false,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160},"items":[],"allowed":false},{"quality":{"id":21,"name":"Bluray-2160p Remux","source":"blurayRaw","resolution":2160},"items":[],"allowed":false}],"minFormatScore":50,"cutoffFormatScore":0,"minUpgradeFormatScore":1,"formatItems":[{"format":4,"name":"ORIG_2160","score":0},{"format":3,"name":"SUBS","score":15},{"format":2,"name":"LANG_OTHER","score":10},{"format":1,"name":"ORIG_1080","score":50}],"id":'"$SONARR_QP_ID"'}' + fi + SONARR_QP_ID=$(echo $SONARR_QP | ${pkgs.jq}/bin/jq '.[] | select(.name == "Ultra-HD") | .id') + if [ -n "$SONARR_QP_ID" ]; then + ${pkgs.curl}/bin/curl -s -X PUT "$SONARR_URL/api/v3/qualityprofile/$SONARR_QP_ID" \ + -H "X-Api-Key: $SONARR__AUTH__APIKEY" -H 'X-Sonarr-Client: true' \ + -H 'Accept: application/json' -H 'Content-Type: application/json' \ + -d '{"name":"Ultra-HD","upgradeAllowed":false,"cutoff":16,"items":[{"quality":{"id":0,"name":"Unknown","source":"unknown","resolution":0},"items":[],"allowed":false},{"quality":{"id":1,"name":"SDTV","source":"television","resolution":480},"items":[],"allowed":false},{"name":"WEB 480p","items":[{"quality":{"id":12,"name":"WEBRip-480p","source":"webRip","resolution":480},"items":[],"allowed":false},{"quality":{"id":8,"name":"WEBDL-480p","source":"web","resolution":480},"items":[],"allowed":false}],"allowed":false,"id":1000},{"quality":{"id":2,"name":"DVD","source":"dvd","resolution":480},"items":[],"allowed":false},{"quality":{"id":13,"name":"Bluray-480p","source":"bluray","resolution":480},"items":[],"allowed":false},{"quality":{"id":22,"name":"Bluray-576p","source":"bluray","resolution":576},"items":[],"allowed":false},{"quality":{"id":4,"name":"HDTV-720p","source":"television","resolution":720},"items":[],"allowed":false},{"quality":{"id":9,"name":"HDTV-1080p","source":"television","resolution":1080},"items":[],"allowed":false},{"quality":{"id":10,"name":"Raw-HD","source":"televisionRaw","resolution":1080},"items":[],"allowed":false},{"name":"WEB 720p","items":[{"quality":{"id":14,"name":"WEBRip-720p","source":"webRip","resolution":720},"items":[],"allowed":false},{"quality":{"id":5,"name":"WEBDL-720p","source":"web","resolution":720},"items":[],"allowed":false}],"allowed":false,"id":1001},{"quality":{"id":6,"name":"Bluray-720p","source":"bluray","resolution":720},"items":[],"allowed":false},{"name":"WEB 1080p","items":[{"quality":{"id":15,"name":"WEBRip-1080p","source":"webRip","resolution":1080},"items":[],"allowed":false},{"quality":{"id":3,"name":"WEBDL-1080p","source":"web","resolution":1080},"items":[],"allowed":false}],"allowed":false,"id":1002},{"quality":{"id":7,"name":"Bluray-1080p","source":"bluray","resolution":1080},"items":[],"allowed":false},{"quality":{"id":20,"name":"Bluray-1080p Remux","source":"blurayRaw","resolution":1080},"items":[],"allowed":false},{"quality":{"id":16,"name":"HDTV-2160p","source":"television","resolution":2160},"items":[],"allowed":true},{"name":"WEB 2160p","items":[{"quality":{"id":17,"name":"WEBRip-2160p","source":"webRip","resolution":2160},"items":[],"allowed":true},{"quality":{"id":18,"name":"WEBDL-2160p","source":"web","resolution":2160},"items":[],"allowed":true}],"allowed":true,"id":1003},{"quality":{"id":19,"name":"Bluray-2160p","source":"bluray","resolution":2160},"items":[],"allowed":true},{"quality":{"id":21,"name":"Bluray-2160p Remux","source":"blurayRaw","resolution":2160},"items":[],"allowed":false}],"minFormatScore":50,"cutoffFormatScore":0,"minUpgradeFormatScore":1,"formatItems":[{"format":4,"name":"ORIG_2160","score":50},{"format":3,"name":"SUBS","score":0},{"format":2,"name":"LANG_OTHER","score":10},{"format":1,"name":"ORIG_1080","score":0}],"id":'"$SONARR_QP_ID"'}' + fi + ''} + ''; }; }