d
This commit is contained in:
@@ -11,7 +11,7 @@ import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
from SYS.logger import log, debug
|
||||
from SYS.logger import log
|
||||
from SYS.utils_constant import ALL_SUPPORTED_EXTENSIONS as GLOBAL_SUPPORTED_EXTENSIONS
|
||||
import tempfile
|
||||
import logging
|
||||
@@ -360,24 +360,24 @@ class HydrusNetwork:
|
||||
hashes = self._ensure_hashes(file_hashes)
|
||||
if len(hashes) == 1:
|
||||
body = {"hash": hashes[0], "url_to_add": url}
|
||||
return self._post("/add_url/associate_url", data=body)
|
||||
return self._post("/add_urls/associate_url", data=body)
|
||||
|
||||
results: dict[str, Any] = {}
|
||||
for file_hash in hashes:
|
||||
body = {"hash": file_hash, "url_to_add": url}
|
||||
results[file_hash] = self._post("/add_url/associate_url", data=body)
|
||||
results[file_hash] = self._post("/add_urls/associate_url", data=body)
|
||||
return {"batched": results}
|
||||
|
||||
def delete_url(self, file_hashes: Union[str, Iterable[str]], url: str) -> dict[str, Any]:
|
||||
hashes = self._ensure_hashes(file_hashes)
|
||||
if len(hashes) == 1:
|
||||
body = {"hash": hashes[0], "url_to_delete": url}
|
||||
return self._post("/add_url/associate_url", data=body)
|
||||
return self._post("/add_urls/associate_url", data=body)
|
||||
|
||||
results: dict[str, Any] = {}
|
||||
for file_hash in hashes:
|
||||
body = {"hash": file_hash, "url_to_delete": url}
|
||||
results[file_hash] = self._post("/add_url/associate_url", data=body)
|
||||
results[file_hash] = self._post("/add_urls/associate_url", data=body)
|
||||
return {"batched": results}
|
||||
|
||||
def set_notes(
|
||||
@@ -436,35 +436,61 @@ class HydrusNetwork:
|
||||
|
||||
def set_relationship(self, hash_a: str, hash_b: str, relationship: Union[str, int], do_default_content_merge: bool = False) -> dict[str, Any]:
|
||||
"""Set a relationship between two files in Hydrus.
|
||||
|
||||
|
||||
This wraps Hydrus Client API: POST /manage_file_relationships/set_file_relationships.
|
||||
|
||||
Hydrus relationship enum (per Hydrus developer API docs):
|
||||
- 0: set as potential duplicates
|
||||
- 1: set as false positives
|
||||
- 2: set as same quality (duplicates)
|
||||
- 3: set as alternates
|
||||
- 4: set A as better (duplicates)
|
||||
|
||||
Args:
|
||||
hash_a: First file hash
|
||||
hash_b: Second file hash
|
||||
relationship: Relationship type - can be string ("king", "alt", "related", etc)
|
||||
or integer (0-4):
|
||||
- 0 = duplicates
|
||||
- 1 = alternate
|
||||
- 2 = not_related
|
||||
- 3 = related
|
||||
- 4 = king
|
||||
do_default_content_merge: Whether to perform default content merge
|
||||
|
||||
hash_a: First file SHA256 hex
|
||||
hash_b: Second file SHA256 hex
|
||||
relationship: Relationship type as string or integer enum (0-4)
|
||||
do_default_content_merge: Whether to perform default duplicate content merge
|
||||
|
||||
Returns:
|
||||
Response from Hydrus API
|
||||
"""
|
||||
# Convert string relationship types to integers
|
||||
if isinstance(relationship, str):
|
||||
rel_map = {
|
||||
"duplicates": 0,
|
||||
"duplicate": 0,
|
||||
"alt": 1,
|
||||
"alternate": 1,
|
||||
"not_related": 2,
|
||||
"not related": 2,
|
||||
# Potential duplicates
|
||||
"potential": 0,
|
||||
"potentials": 0,
|
||||
"potential duplicate": 0,
|
||||
"potential duplicates": 0,
|
||||
# False positives
|
||||
"false positive": 1,
|
||||
"false_positive": 1,
|
||||
"false positives": 1,
|
||||
"false_positives": 1,
|
||||
"not related": 1,
|
||||
"not_related": 1,
|
||||
# Duplicates (same quality)
|
||||
"duplicate": 2,
|
||||
"duplicates": 2,
|
||||
"same quality": 2,
|
||||
"same_quality": 2,
|
||||
"equal": 2,
|
||||
# Alternates
|
||||
"alt": 3,
|
||||
"alternate": 3,
|
||||
"alternates": 3,
|
||||
"alternative": 3,
|
||||
"related": 3,
|
||||
# Better/worse (duplicates)
|
||||
"better": 4,
|
||||
"a better": 4,
|
||||
"a_better": 4,
|
||||
# Back-compat: some older call sites used 'king' for primary.
|
||||
# Hydrus does not accept 'king' as a relationship; this maps to 'A is better'.
|
||||
"king": 4,
|
||||
}
|
||||
relationship = rel_map.get(relationship.lower(), 3) # Default to "related" (3)
|
||||
relationship = rel_map.get(relationship.lower().strip(), 3) # Default to alternates
|
||||
|
||||
body = {
|
||||
"relationships": [
|
||||
|
||||
Reference in New Issue
Block a user