Commit 04bb8203 authored by echel0n's avatar echel0n

Merge branch 'release-v9.4.157'

parents 0928a295 dad896a5
......@@ -60,6 +60,8 @@ sickrage.egg-info
/build/
pre-commit-hook.sh
/venv-*/
/.vagrant/
Vagrantfile
# OS Generated Files #
######################
......
# Changelog
- * 90fe2d3d3 - 2019-07-28: Refactored dynamic loading of metadata providers. Refactored dynamic loading of notifier providers. Refactored dynamic loading of NZB providers. Refactored dynamic loading of Torrent providers. Refactored metadata provider config property and added default value. Refactored web handler arguments to return string instead of None for default value.
- * c5ca8dae3 - 2019-07-26: Added Sentry tag to gather Python version to help debug issues.
- * e1a4bc05e - 2019-07-24: Added `--disable_updates` startup option to allow disabling of application updates both auto and manual.
- * add2bae62 - 2019-07-22: Added check for existance of root directory before allowing adding of shows.
- * 324d44f3a - 2019-07-22: Pre-Release v9.4.157.dev1
- * 7d7e6e5b7 - 2019-07-22: Release v9.4.156
- * 7fce35662 - 2019-07-22: Resolved issues with marking failed snatches and retrying snatches.
- * 7cea63c5e - 2019-07-22: Pre-Release v9.4.156.dev1
- * 56ddaf165 - 2019-07-22: Release v9.4.155
......
......@@ -260,6 +260,9 @@ def main():
parser.add_argument('--nolaunch',
action='store_true',
help='Suppress launching web browser on startup')
parser.add_argument('--disable_updates',
action='store_true',
help='Disable application updates')
parser.add_argument('--db_type',
default='sqlite',
help='Database type: sqlite or mysql')
......@@ -285,6 +288,7 @@ def main():
app.web_port = int(args.port)
app.web_host = args.host
app.no_launch = args.nolaunch
app.disable_updates = args.disable_updates
app.developer = args.dev
app.db_type = args.db_type
app.db_prefix = args.db_prefix
......
......@@ -41,6 +41,7 @@ from keycloak.realm import KeycloakRealm
from tornado.ioloop import IOLoop
import sickrage
from sickrage.core.api import API
from sickrage.core.api.account import AccountAPI
from sickrage.core.caches.name_cache import NameCache
from sickrage.core.caches.quicksearch_cache import QuicksearchCache
......@@ -98,6 +99,7 @@ class Core(object):
self.cache_dir = None
self.quiet = None
self.no_launch = None
self.disable_updates = None
self.web_port = None
self.developer = None
self.db_type = None
......@@ -329,6 +331,16 @@ class Core(object):
if self.config.showupdate_hour < 0 or self.config.showupdate_hour > 23:
self.config.showupdate_hour = 0
# add API token refresh job
self.scheduler.add_job(
API().refresh_token,
IntervalTrigger(
hours=1,
),
name='SR-API',
id='SR-API'
)
# add version checker job
self.scheduler.add_job(
self.version_updater.run,
......
......@@ -13,6 +13,7 @@ from sickrage.core.api.exceptions import ApiUnauthorized, ApiError
class API(object):
def __init__(self):
self.name = 'SR-API'
self.api_url = 'https://www.sickrage.ca/api/v1/'
self.client_id = sickrage.app.oidc_client_id
self.client_secret = sickrage.app.oidc_client_secret
......@@ -87,7 +88,7 @@ class API(object):
try:
self.token = self.session.refresh_token(self.token_url, **extras)
except InvalidGrantError as e:
self.token = ''
self.token = {}
return self.token
......
......@@ -1879,9 +1879,7 @@ class Config(object):
sickrage.app.search_providers.provider_order = self.check_setting_str('Providers', 'providers_order')
for metadataProviderID, metadataProviderObj in sickrage.app.metadata_providers.items():
metadataProviderObj.set_config(
self.check_setting_str('MetadataProviders', metadataProviderID, '0|0|0|0|0|0|0|0|0|0|0')
)
metadataProviderObj.config = self.check_setting_str('MetadataProviders', metadataProviderID, '0|0|0|0|0|0|0|0|0|0|0')
# mark config settings loaded
self.loaded = True
......
......@@ -100,7 +100,8 @@ class Logger(logging.getLoggerClass()):
sentry_tags = {
'platform': platform.platform(),
'locale': sys.getdefaultencoding()
'locale': sys.getdefaultencoding(),
'python': sys.version_info
}
if sickrage.app.config and sickrage.app.config.sub_id:
......
......@@ -48,7 +48,7 @@ class VersionUpdater(object):
return self.find_install_type()
def run(self, force=False):
if self.amActive:
if self.amActive or sickrage.app.disable_updates:
return
self.amActive = True
......
......@@ -50,47 +50,47 @@ class ConfigPostProcessingHandler(BaseHandler, ABC):
class SavePostProcessingHandler(BaseHandler, ABC):
@authenticated
async def post(self, *args, **kwargs):
naming_pattern = self.get_argument('naming_pattern', None)
naming_multi_ep = self.get_argument('naming_multi_ep', None)
kodi_data = self.get_argument('kodi_data', None)
kodi_12plus_data = self.get_argument('kodi_12plus_data', None)
mediabrowser_data = self.get_argument('mediabrowser_data', None)
sony_ps3_data = self.get_argument('sony_ps3_data', None)
wdtv_data = self.get_argument('wdtv_data', None)
tivo_data = self.get_argument('tivo_data', None)
mede8er_data = self.get_argument('mede8er_data', None)
keep_processed_dir = self.get_argument('keep_processed_dir', None)
process_method = self.get_argument('process_method', None)
del_rar_contents = self.get_argument('del_rar_contents', None)
process_automatically = self.get_argument('process_automatically', None)
no_delete = self.get_argument('no_delete', None)
rename_episodes = self.get_argument('rename_episodes', None)
airdate_episodes = self.get_argument('airdate_episodes', None)
file_timestamp_timezone = self.get_argument('file_timestamp_timezone', None)
unpack = self.get_argument('unpack', None)
move_associated_files = self.get_argument('move_associated_files', None)
sync_files = self.get_argument('sync_files', None)
postpone_if_sync_files = self.get_argument('postpone_if_sync_files', None)
nfo_rename = self.get_argument('nfo_rename', None)
tv_download_dir = self.get_argument('tv_download_dir', None)
naming_custom_abd = self.get_argument('naming_custom_abd', None)
naming_anime = self.get_argument('naming_anime', None)
create_missing_show_dirs = self.get_argument('create_missing_show_dirs', None)
add_shows_wo_dir = self.get_argument('add_shows_wo_dir', None)
naming_abd_pattern = self.get_argument('naming_abd_pattern', None)
naming_strip_year = self.get_argument('naming_strip_year', None)
delete_failed = self.get_argument('delete_failed', None)
extra_scripts = self.get_argument('extra_scripts', None)
naming_custom_sports = self.get_argument('naming_custom_sports', None)
naming_sports_pattern = self.get_argument('naming_sports_pattern', None)
naming_custom_anime = self.get_argument('naming_custom_anime', None)
naming_anime_pattern = self.get_argument('naming_anime_pattern', None)
naming_anime_multi_ep = self.get_argument('naming_anime_multi_ep', None)
autopostprocessor_frequency = self.get_argument('autopostprocessor_frequency', None)
delete_non_associated_files = self.get_argument('delete_non_associated_files', None)
allowed_extensions = self.get_argument('allowed_extensions', None)
processor_follow_symlinks = self.get_argument('processor_follow_symlinks', None)
unpack_dir = self.get_argument('unpack_dir', None)
naming_pattern = self.get_argument('naming_pattern', '')
naming_multi_ep = self.get_argument('naming_multi_ep', '')
kodi_data = self.get_argument('kodi_data', '')
kodi_12plus_data = self.get_argument('kodi_12plus_data', '')
mediabrowser_data = self.get_argument('mediabrowser_data', '')
sony_ps3_data = self.get_argument('sony_ps3_data', '')
wdtv_data = self.get_argument('wdtv_data', '')
tivo_data = self.get_argument('tivo_data', '')
mede8er_data = self.get_argument('mede8er_data', '')
keep_processed_dir = self.get_argument('keep_processed_dir', '')
process_method = self.get_argument('process_method', '')
del_rar_contents = self.get_argument('del_rar_contents', '')
process_automatically = self.get_argument('process_automatically', '')
no_delete = self.get_argument('no_delete', '')
rename_episodes = self.get_argument('rename_episodes', '')
airdate_episodes = self.get_argument('airdate_episodes', '')
file_timestamp_timezone = self.get_argument('file_timestamp_timezone', '')
unpack = self.get_argument('unpack', '')
move_associated_files = self.get_argument('move_associated_files', '')
sync_files = self.get_argument('sync_files', '')
postpone_if_sync_files = self.get_argument('postpone_if_sync_files', '')
nfo_rename = self.get_argument('nfo_rename', '')
tv_download_dir = self.get_argument('tv_download_dir', '')
naming_custom_abd = self.get_argument('naming_custom_abd', '')
naming_anime = self.get_argument('naming_anime', '')
create_missing_show_dirs = self.get_argument('create_missing_show_dirs', '')
add_shows_wo_dir = self.get_argument('add_shows_wo_dir', '')
naming_abd_pattern = self.get_argument('naming_abd_pattern', '')
naming_strip_year = self.get_argument('naming_strip_year', '')
delete_failed = self.get_argument('delete_failed', '')
extra_scripts = self.get_argument('extra_scripts', '')
naming_custom_sports = self.get_argument('naming_custom_sports', '')
naming_sports_pattern = self.get_argument('naming_sports_pattern', '')
naming_custom_anime = self.get_argument('naming_custom_anime', '')
naming_anime_pattern = self.get_argument('naming_anime_pattern', '')
naming_anime_multi_ep = self.get_argument('naming_anime_multi_ep', '')
autopostprocessor_frequency = self.get_argument('autopostprocessor_frequency', '')
delete_non_associated_files = self.get_argument('delete_non_associated_files', '')
allowed_extensions = self.get_argument('allowed_extensions', '')
processor_follow_symlinks = self.get_argument('processor_follow_symlinks', '')
unpack_dir = self.get_argument('unpack_dir', '')
results = []
......@@ -126,8 +126,7 @@ class SavePostProcessingHandler(BaseHandler, ABC):
sickrage.app.config.move_associated_files = checkbox_to_value(move_associated_files)
sickrage.app.config.sync_files = sync_files
sickrage.app.config.postpone_if_sync_files = checkbox_to_value(postpone_if_sync_files)
sickrage.app.config.allowed_extensions = ','.join(
{x.strip() for x in allowed_extensions.split(',') if x.strip()})
sickrage.app.config.allowed_extensions = ','.join({x.strip() for x in allowed_extensions.split(',') if x.strip()})
sickrage.app.config.naming_custom_abd = checkbox_to_value(naming_custom_abd)
sickrage.app.config.naming_custom_sports = checkbox_to_value(naming_custom_sports)
sickrage.app.config.naming_custom_anime = checkbox_to_value(naming_custom_anime)
......@@ -190,13 +189,13 @@ class SavePostProcessingHandler(BaseHandler, ABC):
else:
results.append(_("You tried saving an invalid sports naming config, not saving your sports settings"))
sickrage.app.metadata_providers['kodi'].set_config(kodi_data)
sickrage.app.metadata_providers['kodi_12plus'].set_config(kodi_12plus_data)
sickrage.app.metadata_providers['mediabrowser'].set_config(mediabrowser_data)
sickrage.app.metadata_providers['sony_ps3'].set_config(sony_ps3_data)
sickrage.app.metadata_providers['wdtv'].set_config(wdtv_data)
sickrage.app.metadata_providers['tivo'].set_config(tivo_data)
sickrage.app.metadata_providers['mede8er'].set_config(mede8er_data)
sickrage.app.metadata_providers['kodi'].config = kodi_data
sickrage.app.metadata_providers['kodi_12plus'].config = kodi_12plus_data
sickrage.app.metadata_providers['mediabrowser'].config = mediabrowser_data
sickrage.app.metadata_providers['sony_ps3'].config = sony_ps3_data
sickrage.app.metadata_providers['wdtv'].config = wdtv_data
sickrage.app.metadata_providers['tivo'].config = tivo_data
sickrage.app.metadata_providers['mede8er'].config = mede8er_data
sickrage.app.config.save()
......
......@@ -684,7 +684,7 @@ class UpdateCheckHandler(BaseHandler, ABC):
def get(self, *args, **kwargs):
pid = self.get_argument('pid')
if str(pid) != str(sickrage.app.pid):
if str(pid) != str(sickrage.app.pid) or sickrage.app.disable_updates:
return self.redirect("/{}/".format(sickrage.app.config.default_page))
sickrage.app.alerts.message(_("Updater"), _('Checking for updates'))
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -117,7 +117,7 @@
</div>
</div>
<p>
<div id="messages"></div>
<div id="step-1-messages"></div>
</div>
</div>
<div class="card-footer">
......@@ -149,6 +149,9 @@
${_('Pre-chosen Destination Folder:')}
<b>${provided_show_dir}</b><br/>
% endif
<p>
<div id="step-2-messages"></div>
</p>
</div>
</div>
<div class="card-footer">
......
......@@ -183,21 +183,21 @@
<i class="fas fa-fw fa-sync"></i>&nbsp;${_('Update PLEX')}
</a>
% endif
## % if sickrage.app.config.use_kodi and sickrage.app.config.kodi_host != "":
## <a class="dropdown-item" href="${srWebRoot}/home/updateKODI/">
## <i class="fas fa-fw fa-sync"></i>&nbsp;${_('Update KODI')}
## </a>
## % endif
## % if sickrage.app.config.use_emby and sickrage.app.config.emby_host != "" and sickrage.app.config.emby_apikey != "":
## <a class="dropdown-item" href="${srWebRoot}/home/updateEMBY/">
## <i class="fas fa-fw fa-sync"></i>&nbsp;${_('Update Emby')}
## </a>
## % endif
## % if sickrage.app.config.use_kodi and sickrage.app.config.kodi_host != "":
## <a class="dropdown-item" href="${srWebRoot}/home/updateKODI/">
## <i class="fas fa-fw fa-sync"></i>&nbsp;${_('Update KODI')}
## </a>
## % endif
## % if sickrage.app.config.use_emby and sickrage.app.config.emby_host != "" and sickrage.app.config.emby_apikey != "":
## <a class="dropdown-item" href="${srWebRoot}/home/updateEMBY/">
## <i class="fas fa-fw fa-sync"></i>&nbsp;${_('Update Emby')}
## </a>
## % endif
% if torrent_webui_url:
<a class="dropdown-item" href="${torrent_webui_url}" target="_blank">
<i class="fas fa-fw fa-video"></i>&nbsp;${_('Manage Torrents')}
</a>
% endif
<a class="dropdown-item" href="${torrent_webui_url}" target="_blank">
<i class="fas fa-fw fa-video"></i>&nbsp;${_('Manage Torrents')}
</a>
% endif
<a class="dropdown-item" href="${srWebRoot}/manage/failedDownloads/">
<i class="fas fa-fw fa-first-aid"></i>&nbsp;${_('Failed Downloads')}
</a>
......@@ -304,9 +304,11 @@
<i class="fas fa-fw fa-file-archive"></i>&nbsp;${_('View Log')}
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="${srWebRoot}/home/updateCheck?pid=${srPID}">
<i class="fas fa-fw fa-check-square"></i>&nbsp;${_('Check For Updates')}
</a>
%if not sickrage.app.disable_updates:
<a class="dropdown-item" href="${srWebRoot}/home/updateCheck?pid=${srPID}">
<i class="fas fa-fw fa-check-square"></i>&nbsp;${_('Check For Updates')}
</a>
%endif
<a class="dropdown-item" href="${srWebRoot}/home/restart/?pid=${srPID}"
class="confirm restart">
<i class="fas fa-fw fa-redo"></i>&nbsp;${_('Restart')}
......
......@@ -20,7 +20,9 @@
import importlib
import inspect
import os
import pkgutil
import re
import sys
from xml.etree.ElementTree import ElementTree
import fanart
......@@ -104,19 +106,18 @@ class GenericMetadata(object):
def id(self):
return str(re.sub(r"[^\w\d_]", "_", str(re.sub(r"[+]", "plus", self.name))).lower())
def set_config(self, string):
config_list = [bool(int(x)) for x in string.split('|')]
self.show_metadata = config_list[0]
self.episode_metadata = config_list[1]
self.fanart = config_list[2]
self.poster = config_list[3]
self.banner = config_list[4]
self.episode_thumbnails = config_list[5]
self.season_posters = config_list[6]
self.season_banners = config_list[7]
self.season_all_poster = config_list[8]
self.season_all_banner = config_list[9]
self.enabled = config_list[10]
@property
def config(self):
return "|".join(map(str, map(int, [self.show_metadata, self.episode_metadata, self.fanart, self.poster, self.banner, self.episode_thumbnails,
self.season_posters, self.season_banners, self.season_all_poster, self.season_all_banner, self.enabled])))
@config.setter
def config(self, value):
if not value:
value = '0|0|0|0|0|0|0|0|0|0|0'
self.show_metadata, self.episode_metadata, self.fanart, self.poster, self.banner, self.episode_thumbnails, self.season_posters, \
self.season_banners, self.season_all_poster, self.season_all_banner, self.enabled = tuple(map(bool, value.split('|')))
@staticmethod
def _check_exists(location):
......@@ -869,25 +870,9 @@ class GenericMetadata(object):
class MetadataProviders(dict):
def __init__(self):
super(MetadataProviders, self).__init__()
pregex = re.compile('^(.*)\.py$', re.IGNORECASE)
names = [pregex.match(m) for m in os.listdir(os.path.dirname(__file__)) if "__" not in m]
for name in names:
if not name:
continue
klass = self._get_klass(name.group(1))
if klass:
for (__, name, __) in pkgutil.iter_modules([os.path.dirname(__file__)]):
imported_module = importlib.import_module('.' + name, package='sickrage.metadata')
for __, klass in inspect.getmembers(imported_module,
predicate=lambda o: inspect.isclass(o) and issubclass(o, GenericMetadata) and o is not GenericMetadata):
self[klass().id] = klass()
@staticmethod
def _get_klass(name):
try:
return list(dict(
inspect.getmembers(
importlib.import_module('.{}'.format(name), 'sickrage.metadata'),
predicate=lambda o: inspect.isclass(o) and issubclass(o, GenericMetadata) and o is not GenericMetadata)
).values())[0]
except IndexError:
pass
break
......@@ -23,6 +23,7 @@
import importlib
import inspect
import os
import pkgutil
import re
import sickrage
......@@ -102,25 +103,9 @@ class Notifiers(object):
class NotifierProviders(dict):
def __init__(self):
super(NotifierProviders, self).__init__()
pregex = re.compile('^(.*)\.py$', re.IGNORECASE)
names = [pregex.match(m) for m in os.listdir(os.path.dirname(__file__)) if "__" not in m]
for name in names:
if not name:
continue
klass = self._get_klass(name.group(1))
if klass:
for (__, name, __) in pkgutil.iter_modules([os.path.dirname(__file__)]):
imported_module = importlib.import_module('.' + name, package='sickrage.notifiers')
for __, klass in inspect.getmembers(imported_module,
predicate=lambda o: inspect.isclass(o) and issubclass(o, Notifiers) and o is not Notifiers):
self[klass().id] = klass()
@staticmethod
def _get_klass(name):
try:
return list(dict(
inspect.getmembers(
importlib.import_module('.{}'.format(name), 'sickrage.notifiers'),
predicate=lambda o: inspect.isclass(o) and issubclass(o, Notifiers) and o is not Notifiers)
).values())[0]
except IndexError:
pass
break
......@@ -22,8 +22,10 @@
import datetime
import importlib
import inspect
import itertools
import os
import pkgutil
import random
import re
from base64 import b16encode, b32decode, b64decode
......@@ -511,41 +513,36 @@ class GenericProvider(object):
@classmethod
def getProvider(cls, name):
providerMatch = [x for x in cls.getProviders() if x.name == name]
providerMatch = [x for x in cls.get_providers() if x.name == name]
if len(providerMatch) == 1:
return providerMatch[0]
@classmethod
def getProviderByID(cls, id):
providerMatch = [x for x in cls.getProviders() if x.id == id]
providerMatch = [x for x in cls.get_providers() if x.id == id]
if len(providerMatch) == 1:
return providerMatch[0]
@classmethod
def getProviders(cls):
def get_providers(cls):
modules = [TorrentProvider.type, NZBProvider.type]
for type in []:
modules += cls.loadProviders(type)
modules += cls.load_providers(type)
return modules
@classmethod
def loadProviders(cls, type):
def load_providers(cls, provider_type):
providers = []
pregex = re.compile('^([^_]*?)\.py$', re.IGNORECASE)
path = os.path.join(os.path.dirname(__file__), type)
names = [pregex.match(m) for m in os.listdir(path)]
providers += [cls.loadProvider(name.group(1), type) for name in names if name]
return providers
@classmethod
def loadProvider(cls, name, type, *args, **kwargs):
import inspect
members = dict(
inspect.getmembers(
importlib.import_module('.{}.{}'.format(type, name), 'sickrage.providers'),
lambda x: hasattr(x, 'type') and x not in [NZBProvider, TorrentProvider])
)
return [v for v in members.values() if hasattr(v, 'type') and v.type == type][0](*args, **kwargs)
for (__, name, __) in pkgutil.iter_modules([os.path.join(os.path.dirname(__file__), provider_type)]):
imported_module = importlib.import_module('.{}.{}'.format(provider_type, name), package='sickrage.providers')
for __, klass in inspect.getmembers(imported_module, predicate=lambda o: all([inspect.isclass(o) and issubclass(o, GenericProvider),
o is not NZBProvider, o is not TorrentProvider,
getattr(o, 'type', None) == provider_type])):
providers += [klass()]
break
return providers
class TorrentProvider(GenericProvider):
......@@ -693,8 +690,8 @@ class TorrentProvider(GenericProvider):
return result
@classmethod
def getProviders(cls):
return super(TorrentProvider, cls).loadProviders(cls.type)
def get_providers(cls):
return super(TorrentProvider, cls).load_providers(cls.type)
class NZBProvider(GenericProvider):
......@@ -771,8 +768,8 @@ class NZBProvider(GenericProvider):
return os.path.join(sickrage.app.config.nzb_dir, '{}.nzb'.format(sanitize_file_name(name)))
@classmethod
def getProviders(cls):
return super(NZBProvider, cls).loadProviders(cls.type)
def get_providers(cls):
return super(NZBProvider, cls).load_providers(cls.type)
class TorrentRssProvider(TorrentProvider):
......@@ -887,7 +884,7 @@ class TorrentRssProvider(TorrentProvider):
return True
@classmethod
def getProviders(cls):
def get_providers(cls):
providers = cls.getDefaultProviders()
try:
......@@ -1181,7 +1178,7 @@ class NewznabProvider(NZBProvider):
return results
@classmethod
def getProviders(cls):
def get_providers(cls):
providers = cls.getDefaultProviders()
try:
......@@ -1250,10 +1247,10 @@ class SearchProviders(dict):
self[TorrentRssProvider.type] = {}
def load(self):
self[NZBProvider.type] = dict([(p.id, p) for p in NZBProvider.getProviders()])
self[TorrentProvider.type] = dict([(p.id, p) for p in TorrentProvider.getProviders()])
self[NewznabProvider.type] = dict([(p.id, p) for p in NewznabProvider.getProviders()])
self[TorrentRssProvider.type] = dict([(p.id, p) for p in TorrentRssProvider.getProviders()])
self[NZBProvider.type] = dict([(p.id, p) for p in NZBProvider.get_providers()])
self[TorrentProvider.type] = dict([(p.id, p) for p in TorrentProvider.get_providers()])
self[NewznabProvider.type] = dict([(p.id, p) for p in NewznabProvider.get_providers()])
self[TorrentRssProvider.type] = dict([(p.id, p) for p in TorrentRssProvider.get_providers()])
def sort(self, key=None, randomize=False):
sorted_providers = []
......
9.4.156
\ No newline at end of file
9.4.157
\ No newline at end of file
......@@ -2695,6 +2695,13 @@ $(document).ready(function ($) {
}
}
if (curStepID == 'step-2') {
if (!$('#rootDirs option').length && !$('#fullShowPath').length) {
$('#step-2-messages').empty().html('<div style="color: red;"><b>' + gt('You must add a root TV show directory!') + '</b></div>');
isValid = false;
}
}
if (isValid) nextStepWizard.removeClass('disabled').trigger('click');
});
......@@ -2726,7 +2733,7 @@ $(document).ready(function ($) {
}
var searchingFor = '<b>' + $('#nameToSearch').val().trim() + '</b> on ' + $('#providedIndexer option:selected').text() + '<br/>';
$('#messages').empty().html('<i id="searchingAnim" class="fas fa-spinner fa-spin fa-fw"></i> searching for ' + searchingFor);
$('#step-1-messages').empty().html('<i id="searchingAnim" class="fas fa-spinner fa-spin fa-fw"></i> searching for ' + searchingFor);
$.ajax({
url: SICKRAGE.srWebRoot + '/home/addShows/searchIndexersForShowName',
......@@ -2738,7 +2745,7 @@ $(document).ready(function ($) {
timeout: parseInt($('#indexer_timeout').val(), 10) * 1000,
dataType: 'json',
error: function () {
$('#messages').empty().html(gt('search timed out, try increasing timeout for indexer'));
$('#step-1-messages').empty().html(gt('search timed out, try increasing timeout for indexer'));
},
success: function (data) {
var firstResult = true;
......@@ -2785,7 +2792,7 @@ $(document).ready(function ($) {
}
resultStr += '<br/>';
$('#messages').html(resultStr);
$('#step-1-messages').html(resultStr);
}
});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment