2022-05-01 12:00:20 +00:00
|
|
|
# coding=utf-8
|
|
|
|
|
|
|
|
import logging
|
|
|
|
import requests
|
|
|
|
import datetime
|
|
|
|
import json
|
|
|
|
|
|
|
|
from dogpile.cache import make_region
|
|
|
|
|
|
|
|
from app.config import settings, empty_values
|
|
|
|
from constants import headers
|
|
|
|
|
|
|
|
region = make_region().configure('dogpile.cache.memory')
|
|
|
|
|
|
|
|
|
|
|
|
class GetRadarrInfo:
|
|
|
|
@staticmethod
|
|
|
|
def version():
|
|
|
|
"""
|
|
|
|
Call system/status API endpoint and get the Radarr version
|
|
|
|
@return: str
|
|
|
|
"""
|
|
|
|
radarr_version = region.get("radarr_version", expiration_time=datetime.timedelta(seconds=60).total_seconds())
|
|
|
|
if radarr_version:
|
|
|
|
region.set("radarr_version", radarr_version)
|
|
|
|
return radarr_version
|
|
|
|
else:
|
|
|
|
radarr_version = ''
|
|
|
|
if settings.general.getboolean('use_radarr'):
|
|
|
|
try:
|
|
|
|
rv = url_radarr() + "/api/system/status?apikey=" + settings.radarr.apikey
|
2023-01-25 20:26:22 +00:00
|
|
|
radarr_json = requests.get(rv, timeout=int(settings.radarr.http_timeout), verify=False, headers=headers).json()
|
2022-05-01 12:00:20 +00:00
|
|
|
if 'version' in radarr_json:
|
|
|
|
radarr_version = radarr_json['version']
|
|
|
|
else:
|
|
|
|
raise json.decoder.JSONDecodeError
|
|
|
|
except json.decoder.JSONDecodeError:
|
|
|
|
try:
|
|
|
|
rv = url_radarr() + "/api/v3/system/status?apikey=" + settings.radarr.apikey
|
2023-01-25 20:26:22 +00:00
|
|
|
radarr_version = requests.get(rv, timeout=int(settings.radarr.http_timeout), verify=False, headers=headers).json()['version']
|
2022-05-01 12:00:20 +00:00
|
|
|
except json.decoder.JSONDecodeError:
|
|
|
|
logging.debug('BAZARR cannot get Radarr version')
|
|
|
|
radarr_version = 'unknown'
|
|
|
|
except Exception:
|
|
|
|
logging.debug('BAZARR cannot get Radarr version')
|
|
|
|
radarr_version = 'unknown'
|
|
|
|
logging.debug('BAZARR got this Radarr version from its API: {}'.format(radarr_version))
|
|
|
|
region.set("radarr_version", radarr_version)
|
|
|
|
return radarr_version
|
|
|
|
|
|
|
|
def is_legacy(self):
|
|
|
|
"""
|
|
|
|
Call self.version() and parse the result to determine if it's a legacy version of Radarr
|
|
|
|
@return: bool
|
|
|
|
"""
|
|
|
|
radarr_version = self.version()
|
|
|
|
if radarr_version.startswith('0.'):
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
2023-03-23 21:31:02 +00:00
|
|
|
def is_deprecated(self):
|
|
|
|
"""
|
|
|
|
Call self.version() and parse the result to determine if it's a deprecated version of Radarr
|
|
|
|
@return: bool
|
|
|
|
"""
|
|
|
|
radarr_version = self.version()
|
|
|
|
if radarr_version.startswith(('0.', '3.')):
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
2022-05-01 12:00:20 +00:00
|
|
|
|
|
|
|
get_radarr_info = GetRadarrInfo()
|
|
|
|
|
|
|
|
|
|
|
|
def url_radarr():
|
|
|
|
if settings.radarr.getboolean('ssl'):
|
|
|
|
protocol_radarr = "https"
|
|
|
|
else:
|
|
|
|
protocol_radarr = "http"
|
|
|
|
|
|
|
|
if settings.radarr.base_url == '':
|
|
|
|
settings.radarr.base_url = "/"
|
|
|
|
if not settings.radarr.base_url.startswith("/"):
|
|
|
|
settings.radarr.base_url = "/" + settings.radarr.base_url
|
|
|
|
if settings.radarr.base_url.endswith("/"):
|
|
|
|
settings.radarr.base_url = settings.radarr.base_url[:-1]
|
|
|
|
|
|
|
|
if settings.radarr.port in empty_values:
|
|
|
|
port = ""
|
|
|
|
else:
|
|
|
|
port = f":{settings.radarr.port}"
|
|
|
|
|
|
|
|
return f"{protocol_radarr}://{settings.radarr.ip}{port}{settings.radarr.base_url}"
|