k
This commit is contained in:
@@ -135,6 +135,8 @@ class HydrusNetwork(Store):
|
||||
instance_name=self.NAME
|
||||
)
|
||||
|
||||
self._service_key_cache: Dict[str, Optional[str]] = {}
|
||||
|
||||
# Best-effort total count (used for startup diagnostics). Avoid heavy payloads.
|
||||
# Some Hydrus setups appear to return no count via the CBOR client for this endpoint,
|
||||
# so prefer a direct JSON request with a short timeout.
|
||||
@@ -143,6 +145,30 @@ class HydrusNetwork(Store):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _get_service_key(self, service_name: str, *, refresh: bool = False) -> Optional[str]:
|
||||
"""Resolve (and cache) the Hydrus service key for the given service name."""
|
||||
normalized = str(service_name or "my tags").strip()
|
||||
if not normalized:
|
||||
normalized = "my tags"
|
||||
cache_key = normalized.lower()
|
||||
if not refresh and cache_key in self._service_key_cache:
|
||||
return self._service_key_cache[cache_key]
|
||||
|
||||
client = self._client
|
||||
if client is None:
|
||||
self._service_key_cache[cache_key] = None
|
||||
return None
|
||||
|
||||
try:
|
||||
from API import HydrusNetwork as hydrus_wrapper
|
||||
|
||||
resolved = hydrus_wrapper.get_tag_service_key(client, normalized)
|
||||
except Exception:
|
||||
resolved = None
|
||||
|
||||
self._service_key_cache[cache_key] = resolved
|
||||
return resolved
|
||||
|
||||
def get_total_count(self, *, refresh: bool = False) -> Optional[int]:
|
||||
"""Best-effort total file count for this Hydrus instance.
|
||||
|
||||
@@ -1404,8 +1430,6 @@ class HydrusNetwork(Store):
|
||||
where source is always "hydrus"
|
||||
"""
|
||||
try:
|
||||
from API import HydrusNetwork as hydrus_wrapper
|
||||
|
||||
file_hash = str(file_identifier or "").strip().lower()
|
||||
if len(file_hash) != 64 or not all(ch in "0123456789abcdef"
|
||||
for ch in file_hash):
|
||||
@@ -1441,9 +1465,8 @@ class HydrusNetwork(Store):
|
||||
)
|
||||
return [], "unknown"
|
||||
|
||||
# Extract tags using service name
|
||||
service_name = "my tags"
|
||||
service_key = hydrus_wrapper.get_tag_service_key(client, service_name)
|
||||
service_name = kwargs.get("service_name") or "my tags"
|
||||
service_key = self._get_service_key(service_name)
|
||||
|
||||
# Extract tags from metadata
|
||||
tags = self._extract_tags_from_hydrus_meta(meta, service_key, service_name)
|
||||
@@ -1495,14 +1518,7 @@ class HydrusNetwork(Store):
|
||||
return True
|
||||
|
||||
service_key: Optional[str] = None
|
||||
try:
|
||||
from API import HydrusNetwork as hydrus_wrapper
|
||||
|
||||
service_key = hydrus_wrapper.get_tag_service_key(
|
||||
client, service_name
|
||||
)
|
||||
except Exception:
|
||||
service_key = None
|
||||
service_key = self._get_service_key(service_name)
|
||||
|
||||
mutate_success = False
|
||||
if service_key:
|
||||
|
||||
Reference in New Issue
Block a user