Skip to content

Commit 99e1c68

Browse files
committed
Merge PR RandomNinjaAtk#404: Add automatic API version detection for Arr apps
- Try API v3 first, fall back to v1 for older versions - Add logging to show which API version connected successfully - Fixes connection failures with newer Lidarr/Radarr/Sonarr installations Source: RandomNinjaAtk#404
2 parents c880bf5 + 500e689 commit 99e1c68

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

universal/functions.bash

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ logfileSetup () {
2121
getArrAppInfo () {
2222
# Get Arr App information
2323
if [ -z "$arrUrl" ] || [ -z "$arrApiKey" ]; then
24-
arrUrlBase="$(cat /config/config.xml | xq | jq -r .Config.UrlBase)"
25-
if [ "$arrUrlBase" == "null" ]; then
24+
arrUrlBase="$(sed -n 's:.*<UrlBase>\(.*\)</UrlBase>.*:\1:p' /config/config.xml | head -n1)"
25+
if [ -z "$arrUrlBase" ]; then
2626
arrUrlBase=""
2727
else
28-
arrUrlBase="/$(echo "$arrUrlBase" | sed "s/\///")"
28+
arrUrlBase="/$(echo "$arrUrlBase" | sed 's:^/*::; s:/*$::')"
2929
fi
30-
arrName="$(cat /config/config.xml | xq | jq -r .Config.InstanceName)"
31-
arrApiKey="$(cat /config/config.xml | xq | jq -r .Config.ApiKey)"
32-
arrPort="$(cat /config/config.xml | xq | jq -r .Config.Port)"
30+
arrName="$(sed -n 's:.*<InstanceName>\(.*\)</InstanceName>.*:\1:p' /config/config.xml | head -n1)"
31+
arrApiKey="$(sed -n 's:.*<ApiKey>\(.*\)</ApiKey>.*:\1:p' /config/config.xml | head -n1)"
32+
arrPort="$(sed -n 's:.*<Port>\(.*\)</Port>.*:\1:p' /config/config.xml | head -n1)"
3333
arrUrl="http://127.0.0.1:${arrPort}${arrUrlBase}"
3434
fi
3535
}
@@ -39,15 +39,19 @@ verifyApiAccess () {
3939
do
4040
arrApiTest=""
4141
arrApiVersion=""
42-
if [ -z "$arrApiTest" ]; then
43-
arrApiVersion="v3"
44-
arrApiTest="$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r .instanceName)"
45-
fi
42+
43+
# Try API v3 first (current standard for Lidarr/Radarr/Sonarr)
44+
arrApiVersion="v3"
45+
arrApiTest="$(curl -fsS "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" 2>/dev/null | jq -er '.instanceName // .appName // empty' 2>/dev/null || true)"
46+
47+
# Fall back to v1 for older installations
4648
if [ -z "$arrApiTest" ]; then
4749
arrApiVersion="v1"
48-
arrApiTest="$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r .instanceName)"
50+
arrApiTest="$(curl -fsS "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" 2>/dev/null | jq -er '.instanceName // .appName // empty' 2>/dev/null || true)"
4951
fi
50-
if [ ! -z "$arrApiTest" ]; then
52+
53+
if [ -n "$arrApiTest" ]; then
54+
log "Connected to $arrName using API $arrApiVersion"
5155
break
5256
else
5357
log "$arrName is not ready, sleeping until valid response..."

0 commit comments

Comments
 (0)