Audiobookshelf support mostly working.

This commit is contained in:
Storm Dragon
2025-10-05 20:19:16 -04:00
parent 1d19ed377c
commit 4387a5cb56
14 changed files with 3979 additions and 67 deletions

View File

@@ -62,6 +62,16 @@ class ConfigManager:
'library_directory': ''
}
self.config['Audiobookshelf'] = {
'server_url': '',
'username': '',
'auth_token': '',
'auto_sync': 'true',
'sync_interval': '30',
'prefer_local': 'true',
'stream_cache_limit': '500'
}
self.save()
def get(self, section, key, fallback=None):
@@ -219,3 +229,80 @@ class ConfigManager:
"""Set library directory"""
self.set('Paths', 'library_directory', str(libraryDir))
self.save()
# Audiobookshelf settings
def get_abs_server_url(self):
"""Get Audiobookshelf server URL"""
return self.get('Audiobookshelf', 'server_url', '')
def set_abs_server_url(self, serverUrl):
"""Set Audiobookshelf server URL"""
self.set('Audiobookshelf', 'server_url', str(serverUrl))
self.save()
def get_abs_username(self):
"""Get Audiobookshelf username"""
return self.get('Audiobookshelf', 'username', '')
def set_abs_username(self, username):
"""Set Audiobookshelf username"""
self.set('Audiobookshelf', 'username', str(username))
self.save()
def get_abs_auth_token(self):
"""Get Audiobookshelf authentication token"""
return self.get('Audiobookshelf', 'auth_token', '')
def set_abs_auth_token(self, token):
"""Set Audiobookshelf authentication token"""
self.set('Audiobookshelf', 'auth_token', str(token))
self.save()
def get_abs_auto_sync(self):
"""Get Audiobookshelf auto-sync setting"""
return self.get_bool('Audiobookshelf', 'auto_sync', True)
def set_abs_auto_sync(self, enabled):
"""Set Audiobookshelf auto-sync setting"""
self.set('Audiobookshelf', 'auto_sync', str(enabled).lower())
self.save()
def get_abs_sync_interval(self):
"""Get Audiobookshelf sync interval in seconds"""
try:
return int(self.get('Audiobookshelf', 'sync_interval', '30'))
except ValueError:
return 30
def set_abs_sync_interval(self, seconds):
"""Set Audiobookshelf sync interval in seconds"""
self.set('Audiobookshelf', 'sync_interval', str(seconds))
self.save()
def get_abs_prefer_local(self):
"""Get Audiobookshelf prefer local books setting"""
return self.get_bool('Audiobookshelf', 'prefer_local', True)
def set_abs_prefer_local(self, enabled):
"""Set Audiobookshelf prefer local books setting"""
self.set('Audiobookshelf', 'prefer_local', str(enabled).lower())
self.save()
def get_abs_stream_cache_limit(self):
"""Get Audiobookshelf stream cache limit in MB"""
try:
return int(self.get('Audiobookshelf', 'stream_cache_limit', '500'))
except ValueError:
return 500
def set_abs_stream_cache_limit(self, limitMb):
"""Set Audiobookshelf stream cache limit in MB"""
self.set('Audiobookshelf', 'stream_cache_limit', str(limitMb))
self.save()
def is_abs_configured(self):
"""Check if Audiobookshelf server is configured"""
serverUrl = self.get_abs_server_url()
username = self.get_abs_username()
return bool(serverUrl and username)