h
This commit is contained in:
@@ -4,6 +4,8 @@ import hashlib
|
||||
import json
|
||||
import sys
|
||||
import time
|
||||
import shutil
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Iterable, List, Optional, Callable, Tuple
|
||||
from urllib.parse import urlparse
|
||||
@@ -14,7 +16,7 @@ from ProviderCore.base import Provider, SearchResult
|
||||
from SYS.provider_helpers import TableProviderMixin
|
||||
from SYS.utils import sanitize_filename
|
||||
from SYS.logger import log, debug
|
||||
from SYS.models import DownloadError
|
||||
from SYS.models import DownloadError, PipeObject
|
||||
|
||||
_HOSTS_CACHE_TTL_SECONDS = 24 * 60 * 60
|
||||
|
||||
@@ -273,13 +275,22 @@ def _parse_alldebrid_magnet_id(target: str) -> Optional[int]:
|
||||
candidate = str(target or "").strip()
|
||||
if not candidate:
|
||||
return None
|
||||
if not candidate.lower().startswith(_ALD_MAGNET_PREFIX):
|
||||
return None
|
||||
try:
|
||||
magnet_id_raw = candidate[len(_ALD_MAGNET_PREFIX):].strip()
|
||||
return int(magnet_id_raw)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
# Handle various prefix variations: alldebrid:magnet: (standard), alldebrid🧲, or alldebrid:
|
||||
id_part = None
|
||||
if candidate.lower().startswith(_ALD_MAGNET_PREFIX):
|
||||
id_part = candidate[len(_ALD_MAGNET_PREFIX):].strip()
|
||||
elif candidate.startswith("alldebrid🧲"):
|
||||
id_part = candidate[len("alldebrid🧲"):].strip()
|
||||
elif candidate.lower().startswith("alldebrid:"):
|
||||
id_part = candidate[len("alldebrid:"):].strip()
|
||||
|
||||
if id_part:
|
||||
try:
|
||||
return int(id_part)
|
||||
except Exception:
|
||||
return None
|
||||
return None
|
||||
|
||||
|
||||
def resolve_magnet_spec(target: str) -> Optional[str]:
|
||||
@@ -302,6 +313,50 @@ def resolve_magnet_spec(target: str) -> Optional[str]:
|
||||
return None
|
||||
|
||||
|
||||
def _looks_like_torrent_source(candidate: str) -> bool:
|
||||
value = str(candidate or "").strip()
|
||||
if not value:
|
||||
return False
|
||||
|
||||
def _clean_segment(text: str) -> str:
|
||||
cleaned = text.split("#", 1)[0].split("?", 1)[0]
|
||||
return cleaned.strip().lower()
|
||||
|
||||
paths: list[str] = []
|
||||
try:
|
||||
parsed = urlparse(value)
|
||||
except Exception:
|
||||
parsed = None
|
||||
|
||||
if parsed and parsed.path:
|
||||
paths.append(_clean_segment(parsed.path))
|
||||
paths.append(_clean_segment(value))
|
||||
|
||||
for path in paths:
|
||||
if path and is_torrent_file(path):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _extract_value(source: Any, field: str) -> Any:
|
||||
if source is None:
|
||||
return None
|
||||
if isinstance(source, dict):
|
||||
if field in source:
|
||||
return source.get(field)
|
||||
else:
|
||||
try:
|
||||
value = getattr(source, field)
|
||||
except Exception:
|
||||
value = None
|
||||
if value is not None:
|
||||
return value
|
||||
extra = getattr(source, "extra", None)
|
||||
if isinstance(extra, dict) and field in extra:
|
||||
return extra.get(field)
|
||||
return None
|
||||
|
||||
|
||||
def _dispatch_alldebrid_magnet_search(
|
||||
magnet_id: int,
|
||||
config: Dict[str, Any],
|
||||
@@ -581,7 +636,7 @@ class AllDebrid(TableProviderMixin, Provider):
|
||||
# Magnet URIs should be routed through this provider.
|
||||
TABLE_AUTO_STAGES = {"alldebrid": ["download-file"]}
|
||||
AUTO_STAGE_USE_SELECTION_ARGS = True
|
||||
URL = ("magnet:", "alldebrid:magnet:")
|
||||
URL = ("magnet:", "alldebrid:magnet:", "alldebrid:", "alldebrid🧲")
|
||||
URL_DOMAINS = ()
|
||||
|
||||
@classmethod
|
||||
@@ -662,6 +717,8 @@ class AllDebrid(TableProviderMixin, Provider):
|
||||
|
||||
spec = resolve_magnet_spec(url)
|
||||
if not spec:
|
||||
if _looks_like_torrent_source(url):
|
||||
log(f"[alldebrid] Torrent source ignored (unable to parse magnet/hash): {url}", file=sys.stderr)
|
||||
return False, None
|
||||
|
||||
cfg = self.config if isinstance(self.config, dict) else {}
|
||||
@@ -869,6 +926,106 @@ class AllDebrid(TableProviderMixin, Provider):
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def download_for_pipe_result(
|
||||
cls,
|
||||
result: Any,
|
||||
pipe_obj: Optional[PipeObject],
|
||||
config: Dict[str, Any],
|
||||
) -> Tuple[Optional[Path], Optional[str], Optional[Path]]:
|
||||
"""Download a remote provider result on behalf of add-file."""
|
||||
|
||||
download_url = (
|
||||
_extract_value(result, "path")
|
||||
or (getattr(pipe_obj, "url", None) if pipe_obj is not None else None)
|
||||
)
|
||||
download_url = str(download_url or "").strip()
|
||||
if not download_url:
|
||||
return None, None, None
|
||||
|
||||
metadata: Dict[str, Any] = {}
|
||||
maybe_meta = _extract_value(result, "full_metadata") or _extract_value(result, "metadata")
|
||||
if isinstance(maybe_meta, dict):
|
||||
metadata.update(maybe_meta)
|
||||
if pipe_obj is not None:
|
||||
pipe_meta = getattr(pipe_obj, "metadata", None)
|
||||
if isinstance(pipe_meta, dict):
|
||||
metadata.update(pipe_meta)
|
||||
|
||||
table_name = str(
|
||||
_extract_value(result, "table")
|
||||
or (getattr(pipe_obj, "provider", None) if pipe_obj is not None else None)
|
||||
or "alldebrid"
|
||||
).strip()
|
||||
if not table_name:
|
||||
table_name = "alldebrid"
|
||||
|
||||
title = str(
|
||||
_extract_value(result, "title")
|
||||
or (getattr(pipe_obj, "title", None) if pipe_obj is not None else None)
|
||||
or metadata.get("name")
|
||||
or ""
|
||||
).strip()
|
||||
if not title:
|
||||
fallback_name = None
|
||||
parsed_url = None
|
||||
try:
|
||||
parsed_url = urlparse(download_url)
|
||||
except Exception:
|
||||
parsed_url = None
|
||||
if parsed_url and parsed_url.path:
|
||||
try:
|
||||
fallback_name = Path(parsed_url.path).stem
|
||||
except Exception:
|
||||
fallback_name = None
|
||||
title = fallback_name or "alldebrid"
|
||||
|
||||
media_kind = str(
|
||||
_extract_value(result, "media_kind")
|
||||
or metadata.get("media_kind")
|
||||
or "file"
|
||||
).strip() or "file"
|
||||
|
||||
search_result = SearchResult(
|
||||
table=table_name,
|
||||
title=title,
|
||||
path=download_url,
|
||||
detail=str(_extract_value(result, "detail") or ""),
|
||||
annotations=[],
|
||||
media_kind=media_kind,
|
||||
tag=set(getattr(pipe_obj, "tag", []) or []),
|
||||
columns=[],
|
||||
full_metadata=metadata,
|
||||
)
|
||||
|
||||
if not download_url.startswith(("http://", "https://")):
|
||||
return None, None, None
|
||||
|
||||
download_dir = Path(tempfile.mkdtemp(prefix="add-file-alldebrid-"))
|
||||
try:
|
||||
provider = cls(config)
|
||||
downloaded_path = provider.download(search_result, download_dir)
|
||||
if not downloaded_path:
|
||||
shutil.rmtree(download_dir, ignore_errors=True)
|
||||
return None, None, None
|
||||
if pipe_obj is not None:
|
||||
pipe_obj.is_temp = True
|
||||
hash_hint = (
|
||||
_extract_value(result, "hash")
|
||||
or _extract_value(result, "file_hash")
|
||||
or (getattr(pipe_obj, "hash", None) if pipe_obj is not None else None)
|
||||
)
|
||||
if not hash_hint:
|
||||
for candidate in ("hash", "file_hash", "info_hash"):
|
||||
candidate_val = metadata.get(candidate)
|
||||
if isinstance(candidate_val, str) and candidate_val.strip():
|
||||
hash_hint = candidate_val.strip()
|
||||
break
|
||||
return downloaded_path, hash_hint, download_dir
|
||||
except Exception as exc:
|
||||
log(f"[alldebrid] add-file download failed: {exc}", file=sys.stderr)
|
||||
shutil.rmtree(download_dir, ignore_errors=True)
|
||||
return None, None, None
|
||||
def download_items(
|
||||
self,
|
||||
result: SearchResult,
|
||||
@@ -880,28 +1037,33 @@ class AllDebrid(TableProviderMixin, Provider):
|
||||
path_from_result: Callable[[Any], Path],
|
||||
config: Optional[Dict[str, Any]] = None,
|
||||
) -> int:
|
||||
# Check if this is a direct magnet_id from the account (e.g., from selector)
|
||||
# Check if this is a direct magnet_id from the account (from selector or custom URL scheme)
|
||||
path_id = _parse_alldebrid_magnet_id(getattr(result, "path", ""))
|
||||
full_metadata = getattr(result, "full_metadata", None) or {}
|
||||
magnet_id_direct = None
|
||||
if isinstance(full_metadata, dict):
|
||||
magnet_id_direct = full_metadata.get("magnet_id")
|
||||
if magnet_id_direct is not None:
|
||||
try:
|
||||
magnet_id = int(magnet_id_direct)
|
||||
debug(f"[download_items] Found magnet_id {magnet_id} in metadata, downloading files directly")
|
||||
cfg = config if isinstance(config, dict) else (self.config or {})
|
||||
count = self._download_magnet_by_id(
|
||||
magnet_id,
|
||||
output_dir,
|
||||
cfg,
|
||||
emit,
|
||||
progress,
|
||||
quiet_mode,
|
||||
path_from_result,
|
||||
)
|
||||
debug(f"[download_items] _download_magnet_by_id returned {count}")
|
||||
return count
|
||||
except Exception as e:
|
||||
debug(f"[download_items] Failed to download by magnet_id: {e}")
|
||||
|
||||
active_id = magnet_id_direct if magnet_id_direct is not None else path_id
|
||||
|
||||
if active_id is not None:
|
||||
try:
|
||||
magnet_id = int(active_id)
|
||||
debug(f"[download_items] Found magnet_id {magnet_id}, downloading files directly")
|
||||
cfg = config if isinstance(config, dict) else (self.config or {})
|
||||
count = self._download_magnet_by_id(
|
||||
magnet_id,
|
||||
output_dir,
|
||||
cfg,
|
||||
emit,
|
||||
progress,
|
||||
quiet_mode,
|
||||
path_from_result,
|
||||
)
|
||||
debug(f"[download_items] _download_magnet_by_id returned {count}")
|
||||
return count
|
||||
except Exception as e:
|
||||
debug(f"[download_items] Failed to download by magnet_id: {e}")
|
||||
|
||||
spec = self._resolve_magnet_spec_from_result(result)
|
||||
if not spec:
|
||||
|
||||
@@ -398,7 +398,7 @@ def match_provider_name_for_url(url: str) -> Optional[str]:
|
||||
dom = dom_raw.lower()
|
||||
if not dom:
|
||||
continue
|
||||
if "://" in dom or dom.startswith("magnet:"):
|
||||
if "://" in dom or dom.startswith("magnet:") or dom.endswith(":") or "🧲" in dom:
|
||||
if raw_url_lower.startswith(dom):
|
||||
return info.canonical_name
|
||||
continue
|
||||
|
||||
@@ -401,7 +401,9 @@ def normalize_urls(value: Any) -> List[str]:
|
||||
"tidal:",
|
||||
"data:",
|
||||
"ftp:",
|
||||
"sftp:"))
|
||||
"sftp:",
|
||||
"alldebrid:",
|
||||
"alldebrid🧲"))
|
||||
is_struct_url = ("." in token and "/" in token
|
||||
and not token.startswith((".",
|
||||
"/")))
|
||||
@@ -444,7 +446,8 @@ def normalize_urls(value: Any) -> List[str]:
|
||||
low = u.lower()
|
||||
has_scheme = low.startswith((
|
||||
"http://", "https://", "magnet:", "torrent:", "tidal:",
|
||||
"hydrus:", "ytdl:", "soulseek:", "matrix:", "file:"
|
||||
"hydrus:", "ytdl:", "soulseek:", "matrix:", "file:",
|
||||
"alldebrid:", "alldebrid🧲"
|
||||
))
|
||||
if not (has_scheme or "://" in low):
|
||||
return None
|
||||
|
||||
@@ -1229,10 +1229,63 @@ class Add_File(Cmdlet):
|
||||
hash_hint = get_field(result, "hash") or get_field(result, "file_hash") or getattr(pipe_obj, "hash", None)
|
||||
return candidate, hash_hint, None
|
||||
|
||||
downloaded_path, hash_hint, tmp_dir = Add_File._maybe_download_alldebrid_result(
|
||||
result,
|
||||
pipe_obj,
|
||||
config,
|
||||
)
|
||||
if downloaded_path:
|
||||
pipe_obj.path = str(downloaded_path)
|
||||
return downloaded_path, hash_hint, tmp_dir
|
||||
|
||||
debug(f"No resolution path matched. result type={type(result).__name__}")
|
||||
log("File path could not be resolved")
|
||||
return None, None, None
|
||||
|
||||
@staticmethod
|
||||
def _normalize_provider_key(value: Optional[Any]) -> Optional[str]:
|
||||
if value is None:
|
||||
return None
|
||||
try:
|
||||
normalized = str(value).strip().lower()
|
||||
except Exception:
|
||||
return None
|
||||
if not normalized:
|
||||
return None
|
||||
if "." in normalized:
|
||||
normalized = normalized.split(".", 1)[0]
|
||||
return normalized
|
||||
|
||||
@staticmethod
|
||||
def _maybe_download_alldebrid_result(
|
||||
result: Any,
|
||||
pipe_obj: models.PipeObject,
|
||||
config: Dict[str, Any],
|
||||
) -> Tuple[Optional[Path], Optional[str], Optional[Path]]:
|
||||
provider_key = None
|
||||
for source in (
|
||||
pipe_obj.provider,
|
||||
get_field(result, "provider"),
|
||||
get_field(result, "table"),
|
||||
):
|
||||
candidate = Add_File._normalize_provider_key(source)
|
||||
if candidate:
|
||||
provider_key = candidate
|
||||
break
|
||||
if provider_key != "alldebrid":
|
||||
return None, None, None
|
||||
|
||||
try:
|
||||
from Provider.alldebrid import AllDebrid
|
||||
except Exception:
|
||||
return None, None, None
|
||||
|
||||
try:
|
||||
return AllDebrid.download_for_pipe_result(result, pipe_obj, config)
|
||||
except Exception as exc:
|
||||
debug(f"[add-file] AllDebrid download helper failed: {exc}")
|
||||
return None, None, None
|
||||
|
||||
@staticmethod
|
||||
def _download_provider_source(
|
||||
pipe_obj: models.PipeObject,
|
||||
|
||||
@@ -554,6 +554,7 @@ class Download_File(Cmdlet):
|
||||
dict) else None,
|
||||
progress=progress,
|
||||
config=config,
|
||||
provider_hint=provider_key
|
||||
)
|
||||
downloaded_count += 1
|
||||
|
||||
@@ -2594,7 +2595,14 @@ class Download_File(Cmdlet):
|
||||
parsed = parse_cmdlet_args(args, self)
|
||||
|
||||
# Resolve URLs from -url or positional arguments
|
||||
url_candidates = parsed.get("url") or [a for a in parsed.get("args", []) if isinstance(a, str) and (a.startswith("http") or "://" in a)]
|
||||
url_candidates = parsed.get("url") or [
|
||||
a for a in parsed.get("args", [])
|
||||
if isinstance(a, str) and (
|
||||
a.startswith("http") or "://" in a or ":" in a
|
||||
or "🧲" in a
|
||||
and not a.startswith("-")
|
||||
)
|
||||
]
|
||||
raw_url = normalize_url_list(url_candidates)
|
||||
|
||||
quiet_mode = bool(config.get("_quiet_background_output")) if isinstance(config, dict) else False
|
||||
@@ -2618,7 +2626,7 @@ class Download_File(Cmdlet):
|
||||
s_val = str(value or "").strip().lower()
|
||||
except Exception:
|
||||
return False
|
||||
return s_val.startswith(("http://", "https://"))
|
||||
return s_val.startswith(("http://", "https://", "magnet:", "torrent:", "alldebrid:", "alldebrid🧲"))
|
||||
|
||||
def _extract_selection_args(item: Any) -> tuple[Optional[List[str]], Optional[str]]:
|
||||
selection_args: Optional[List[str]] = None
|
||||
@@ -2786,9 +2794,15 @@ class Download_File(Cmdlet):
|
||||
and (not parsed.get("path")) and (not parsed.get("output"))):
|
||||
candidate = str(raw_url[0] or "").strip()
|
||||
low = candidate.lower()
|
||||
looks_like_url = low.startswith(("http://", "https://", "ftp://"))
|
||||
looks_like_url = low.startswith((
|
||||
"http://", "https://", "ftp://", "magnet:", "torrent:",
|
||||
"alldebrid:", "alldebrid🧲"
|
||||
))
|
||||
looks_like_provider = (
|
||||
":" in candidate and not candidate.startswith(("http:", "https:", "ftp:", "ftps:", "file:"))
|
||||
":" in candidate and not candidate.startswith((
|
||||
"http:", "https:", "ftp:", "ftps:", "file:",
|
||||
"alldebrid:"
|
||||
))
|
||||
)
|
||||
looks_like_windows_path = (
|
||||
(len(candidate) >= 2 and candidate[1] == ":")
|
||||
|
||||
@@ -607,3 +607,190 @@ http://10.162.158.28:45899/get_files/file?hash=5c7296f1a5544522e3d118f60080e0389
|
||||
2026-02-01T04:50:39.033859Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000001DF0A29EC90>
|
||||
2026-02-01T04:50:55.684809Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000001DF0A29EC90>
|
||||
2026-02-01T04:51:12.287393Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T05:38:20.685642Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T05:38:37.528797Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FBE12FB90>
|
||||
2026-02-01T05:38:54.568209Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FBE12FB90>
|
||||
2026-02-01T05:39:11.499306Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 0 result(s)
|
||||
2026-02-01T05:39:28.345200Z [DEBUG] search_file._run_provider_search: No results found for query: 8
|
||||
2026-02-01T05:39:45.271491Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T05:40:02.052700Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FBE12EC90>
|
||||
2026-02-01T05:40:18.877026Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FBE470050>
|
||||
2026-02-01T05:40:35.473139Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T05:40:52.084907Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['https://releases.ubuntu.com/25.10/ubuntu-25.10-desktop-amd64.iso.torrent']
|
||||
2026-02-01T05:41:08.683766Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T05:41:25.407177Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=2
|
||||
2026-02-01T05:41:42.036819Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=2
|
||||
2026-02-01T05:41:58.700025Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=2
|
||||
2026-02-01T05:42:15.263270Z [DEBUG] logger.debug: DEBUG: Output directory: C:\Users\Admin\AppData\Local\Temp\Medios-Macina
|
||||
2026-02-01T05:42:31.663208Z [DEBUG] logger.debug: DEBUG: Processing URL: https://releases.ubuntu.com/25.10/ubuntu-25.10-desktop-amd64.iso.torrent
|
||||
2026-02-01T05:42:48.151962Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=2
|
||||
2026-02-01T05:43:04.804447Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FC066BF50>
|
||||
2026-02-01T05:43:21.350318Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FC066BE90>
|
||||
2026-02-01T05:43:37.966291Z [DEBUG] logger.debug: DEBUG: Direct download: ubuntu-25.10-desktop-amd64.iso.torrent
|
||||
2026-02-01T05:43:54.492442Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019FC066B410>
|
||||
2026-02-01T05:49:42.813097Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6BE90>
|
||||
2026-02-01T05:49:59.804166Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T05:50:16.612796Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B650>
|
||||
2026-02-01T05:50:33.449999Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B590>
|
||||
2026-02-01T05:50:50.429659Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x00000229281D4110>
|
||||
2026-02-01T05:51:07.278581Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x00000229281D4110>
|
||||
2026-02-01T05:51:24.198864Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 1 result(s)
|
||||
2026-02-01T05:51:41.035358Z [DEBUG] logger.debug: DEBUG: [alldebrid] Sent magnet 453056143 to AllDebrid for download
|
||||
2026-02-01T05:51:57.935933Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 0 piped item(s)...
|
||||
2026-02-01T05:52:14.768629Z [DEBUG] logger.debug: DEBUG: ✓ Successfully processed 0 file(s) and queued 1 magnet(s)
|
||||
2026-02-01T05:54:32.519990Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T05:54:49.467693Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T05:55:06.466197Z [DEBUG] search_file.run: Backend all-debrid search failed: "Unknown store backend: all-debrid. Available: ['rpi', 'local']"
|
||||
2026-02-01T05:55:23.429444Z [DEBUG] logger.debug: DEBUG: [search-file] Searching 'local'
|
||||
2026-02-01T05:55:40.429236Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:local] Searching for: ubuntu
|
||||
2026-02-01T05:55:57.414000Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B1D0>
|
||||
2026-02-01T05:56:14.258918Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B1D0>
|
||||
2026-02-01T05:56:31.269220Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AC90>
|
||||
2026-02-01T05:56:48.009593Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AC90>
|
||||
2026-02-01T05:57:04.463630Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:local] 0 result(s)
|
||||
2026-02-01T05:57:20.977201Z [DEBUG] logger.debug: DEBUG: [search-file] 'local' -> 0 result(s)
|
||||
2026-02-01T05:57:37.371749Z [DEBUG] logger.debug: DEBUG: [search-file] Searching 'rpi'
|
||||
2026-02-01T05:57:53.793360Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:rpi] Searching for: ubuntu
|
||||
2026-02-01T05:58:10.293366Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AC90>
|
||||
2026-02-01T05:58:26.713034Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AC90>
|
||||
2026-02-01T05:58:43.176453Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B7D0>
|
||||
2026-02-01T05:58:59.805711Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6B7D0>
|
||||
2026-02-01T05:59:16.290292Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:rpi] 0 result(s)
|
||||
2026-02-01T05:59:32.674044Z [DEBUG] logger.debug: DEBUG: [search-file] 'rpi' -> 0 result(s)
|
||||
2026-02-01T05:59:49.098992Z [DEBUG] search_file.run: No results found
|
||||
2026-02-01T06:00:05.551094Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T06:00:21.925543Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AE10>
|
||||
2026-02-01T06:00:38.435088Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000022927F6AE10>
|
||||
2026-02-01T06:00:56.063587Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 4 result(s)
|
||||
2026-02-01T06:01:12.572606Z [DEBUG] logger.debug: DEBUG: Auto-inserting download-file after selection
|
||||
2026-02-01T06:01:28.979743Z [DEBUG] logger.debug: DEBUG: Inserted auto stage before existing pipeline: ['download-file']
|
||||
2026-02-01T06:01:45.482515Z [DEBUG] logger.debug: DEBUG: Applying row action for row 0 -> ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:02:01.849708Z [DEBUG] logger.debug: DEBUG: Replacing stage 0 ['download-file'] with row action ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:02:18.396521Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:02:34.821622Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:02:51.186059Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 1 selected item(s) from table...
|
||||
2026-02-01T06:03:07.738960Z [DEBUG] logger.debug: DEBUG: [download-file] Item 1/1: ['-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:03:24.187753Z [DEBUG] logger.debug: DEBUG: [download-file] Re-invoking download-file for selected item...
|
||||
2026-02-01T06:03:40.685776Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:03:57.158246Z [DEBUG] download_file._run_impl: No url or piped items to download
|
||||
2026-02-01T06:04:13.711114Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T06:04:30.184745Z [DEBUG] logger.debug: DEBUG: [add-file] Treating -path directory as destination: C:\Users\Admin\Downloads
|
||||
2026-02-01T06:04:46.704198Z [DEBUG] logger.debug: DEBUG: [add-file] INPUT result type=NoneType
|
||||
2026-02-01T06:05:03.237285Z [DEBUG] logger.debug: DEBUG: [add-file] PARSED args: location=C:\Users\Admin\Downloads, provider=None, delete=False
|
||||
2026-02-01T06:05:19.843731Z [DEBUG] logger.debug: DEBUG: [add-file] PIPE item[0] PipeObject preview
|
||||
2026-02-01T06:05:36.556930Z [DEBUG] logger.debug: DEBUG: No resolution path matched. result type=NoneType
|
||||
2026-02-01T06:05:52.985865Z [DEBUG] add_file._resolve_source: File path could not be resolved
|
||||
2026-02-01T06:06:09.513156Z [DEBUG] logger.debug: DEBUG: [add-file] RESOLVED source: path=None, hash=N/A...
|
||||
2026-02-01T06:06:26.348500Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-path', 'C:\\Users\\Admin\\Downloads']
|
||||
2026-02-01T06:06:43.235024Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:07:00.135479Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 1 selected item(s) from table...
|
||||
2026-02-01T06:07:17.039344Z [DEBUG] logger.debug: DEBUG: [download-file] Item 1/1: ['-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:07:33.934576Z [DEBUG] logger.debug: DEBUG: [download-file] Re-invoking download-file for selected item...
|
||||
2026-02-01T06:07:50.869276Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:08:07.749911Z [DEBUG] download_file._run_impl: No url or piped items to download
|
||||
2026-02-01T06:33:46.595268Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T06:34:03.331255Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000002EC67DC4590>
|
||||
2026-02-01T06:34:20.063041Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000002EC67DC4410>
|
||||
2026-02-01T06:34:36.968421Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T06:39:50.111277Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T06:40:07.165210Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000001A6DDB9C290>
|
||||
2026-02-01T06:40:24.108510Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x000001A6DDB9C350>
|
||||
2026-02-01T06:40:41.047193Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T06:40:58.000598Z [DEBUG] logger.debug: DEBUG: Auto-inserting download-file after selection
|
||||
2026-02-01T06:41:14.941587Z [DEBUG] logger.debug: DEBUG: Inserted auto stage before existing pipeline: ['download-file']
|
||||
2026-02-01T06:41:31.848453Z [DEBUG] logger.debug: DEBUG: Applying row action for row 0 -> ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:41:48.702300Z [DEBUG] logger.debug: DEBUG: Replacing stage 0 ['download-file'] with row action ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:42:05.614677Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:42:22.400732Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:42:39.062217Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 1 selected item(s) from table...
|
||||
2026-02-01T06:42:55.757959Z [DEBUG] logger.debug: DEBUG: [download-file] Item 1/1: ['-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:43:12.525270Z [DEBUG] logger.debug: DEBUG: [download-file] Re-invoking download-file for selected item...
|
||||
2026-02-01T06:43:29.285197Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:43:45.933657Z [DEBUG] download_file._run_impl: No url or piped items to download
|
||||
2026-02-01T06:44:02.596721Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T06:44:19.232042Z [DEBUG] logger.debug: DEBUG: [add-file] Treating -path directory as destination: C:\Users\Admin\Downloads
|
||||
2026-02-01T06:44:35.803491Z [DEBUG] logger.debug: DEBUG: [add-file] INPUT result type=NoneType
|
||||
2026-02-01T06:45:34.001905Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T06:45:50.830664Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000021F308C8350>
|
||||
2026-02-01T06:46:07.717108Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000021F308C8410>
|
||||
2026-02-01T06:46:24.671507Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T06:46:41.535211Z [DEBUG] logger.debug: DEBUG: Auto-inserting download-file after selection
|
||||
2026-02-01T06:46:58.474762Z [DEBUG] logger.debug: DEBUG: Inserted auto stage before existing pipeline: ['download-file']
|
||||
2026-02-01T06:47:15.425498Z [DEBUG] logger.debug: DEBUG: Applying row action for row 0 -> ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:47:32.103024Z [DEBUG] logger.debug: DEBUG: Replacing stage 0 ['download-file'] with row action ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:47:48.783675Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:48:05.417641Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:48:21.975206Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 1 selected item(s) from table...
|
||||
2026-02-01T06:48:38.558663Z [DEBUG] logger.debug: DEBUG: [download-file] Item 1/1: ['-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:48:55.169216Z [DEBUG] logger.debug: DEBUG: [download-file] Re-invoking download-file for selected item...
|
||||
2026-02-01T06:49:11.791495Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:49:28.318339Z [DEBUG] download_file._run_impl: No url or piped items to download
|
||||
2026-02-01T06:49:44.922882Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T06:50:01.491659Z [DEBUG] logger.debug: DEBUG: [add-file] Treating -path directory as destination: C:\Users\Admin\Downloads
|
||||
2026-02-01T06:50:18.049203Z [DEBUG] logger.debug: DEBUG: [add-file] INPUT result type=NoneType
|
||||
2026-02-01T06:50:34.573980Z [DEBUG] logger.debug: DEBUG: [add-file] PARSED args: location=C:\Users\Admin\Downloads, provider=None, delete=False
|
||||
2026-02-01T06:50:51.151427Z [DEBUG] logger.debug: DEBUG: [add-file] PIPE item[0] PipeObject preview
|
||||
2026-02-01T06:51:07.770236Z [DEBUG] logger.debug: DEBUG: No resolution path matched. result type=NoneType
|
||||
2026-02-01T06:51:48.993991Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T06:52:05.565435Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019D4BED3C50>
|
||||
2026-02-01T06:52:22.277695Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000019D4BED3D10>
|
||||
2026-02-01T06:52:38.930595Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T06:52:55.552091Z [DEBUG] logger.debug: DEBUG: Auto-inserting download-file after selection
|
||||
2026-02-01T06:53:12.118174Z [DEBUG] logger.debug: DEBUG: Inserted auto stage before existing pipeline: ['download-file']
|
||||
2026-02-01T06:53:28.790727Z [DEBUG] logger.debug: DEBUG: Applying row action for row 0 -> ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:53:45.327237Z [DEBUG] logger.debug: DEBUG: Replacing stage 0 ['download-file'] with row action ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:54:01.987436Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:54:18.637408Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:54:35.221650Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 1 selected item(s) from table...
|
||||
2026-02-01T06:54:51.872597Z [DEBUG] logger.debug: DEBUG: [download-file] Item 1/1: ['-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T06:55:08.522116Z [DEBUG] logger.debug: DEBUG: [download-file] Re-invoking download-file for selected item...
|
||||
2026-02-01T06:55:25.176164Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T06:55:41.975557Z [DEBUG] download_file._run_impl: No url or piped items to download
|
||||
2026-02-01T06:55:58.717127Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T07:01:27.791652Z [DEBUG] logger.debug: DEBUG: [search-file] Calling alldebrid.search(filters={})
|
||||
2026-02-01T07:01:44.750314Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0410>
|
||||
2026-02-01T07:02:01.615307Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A07D0>
|
||||
2026-02-01T07:02:18.332435Z [DEBUG] logger.debug: DEBUG: [search-file] alldebrid -> 50 result(s)
|
||||
2026-02-01T07:02:34.899263Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1310>
|
||||
2026-02-01T07:02:51.552533Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1310>
|
||||
2026-02-01T07:03:08.053494Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0A10>
|
||||
2026-02-01T07:03:24.820605Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0A10>
|
||||
2026-02-01T07:03:41.547457Z [DEBUG] logger.debug: DEBUG: Auto-inserting download-file after selection
|
||||
2026-02-01T07:03:58.225624Z [DEBUG] logger.debug: DEBUG: Inserted auto stage before existing pipeline: ['download-file']
|
||||
2026-02-01T07:04:15.080542Z [DEBUG] logger.debug: DEBUG: Applying row action for row 0 -> ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T07:04:31.831637Z [DEBUG] logger.debug: DEBUG: Replacing stage 0 ['download-file'] with row action ['download-file', '-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T07:04:48.386018Z [DEBUG] logger.debug: DEBUG: [download-file] run invoked with args: ['-provider', 'alldebrid', '-url', 'alldebrid:magnet:453056143']
|
||||
2026-02-01T07:05:04.914412Z [DEBUG] logger.debug: DEBUG: Starting download-file
|
||||
2026-02-01T07:05:21.471255Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=4
|
||||
2026-02-01T07:05:38.051683Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=4
|
||||
2026-02-01T07:05:54.492141Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=4
|
||||
2026-02-01T07:06:11.086311Z [DEBUG] logger.debug: DEBUG: Output directory: C:\Users\Admin\AppData\Local\Temp\Medios-Macina
|
||||
2026-02-01T07:06:27.636367Z [DEBUG] logger.debug: DEBUG: Processing URL: alldebrid:magnet:453056143
|
||||
2026-02-01T07:06:44.184703Z [DEBUG] alldebrid.url_patterns: [alldebrid] url_patterns loaded 0 cached host domains; total patterns=4
|
||||
2026-02-01T07:07:00.670086Z [DEBUG] logger.debug: DEBUG: Provider alldebrid claimed alldebrid:magnet:453056143
|
||||
2026-02-01T07:07:17.283498Z [DEBUG] logger.debug: DEBUG: [download_items] Found magnet_id 453056143, downloading files directly
|
||||
2026-02-01T07:07:33.848650Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0590>
|
||||
2026-02-01T07:07:50.554843Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0590>
|
||||
2026-02-01T07:08:07.114662Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0590>
|
||||
2026-02-01T07:08:23.620063Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0590>
|
||||
2026-02-01T07:08:40.149122Z [DEBUG] logger.debug: DEBUG: [alldebrid] Unlocked restricted link for ubuntu-25.10-desktop-amd64.iso
|
||||
2026-02-01T07:08:56.672058Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1C10>
|
||||
2026-02-01T07:09:13.147916Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1C10>
|
||||
2026-02-01T07:09:29.607888Z [DEBUG] logger.debug: DEBUG: Direct download: ubuntu-25.10-desktop-amd64.iso
|
||||
2026-02-01T07:09:46.253597Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A0890>
|
||||
2026-02-01T07:10:02.758497Z [DEBUG] logger.debug: DEBUG: ✓ Downloaded in 173.7s
|
||||
2026-02-01T07:10:19.309317Z [DEBUG] logger.debug: DEBUG: [download_items] _download_magnet_by_id returned 1
|
||||
2026-02-01T07:10:35.893854Z [DEBUG] logger.debug: DEBUG: [download-file] Processing 0 piped item(s)...
|
||||
2026-02-01T07:10:52.406210Z [DEBUG] logger.debug: DEBUG: ✓ Successfully processed 1 file(s)
|
||||
2026-02-01T07:11:09.038280Z [DEBUG] logger.debug: DEBUG: [Store] Unknown store type 'debrid'
|
||||
2026-02-01T07:11:25.581121Z [DEBUG] logger.debug: DEBUG: [add-file] Treating -path directory as destination: C:\Users\Admin\Downloads
|
||||
2026-02-01T07:11:42.101434Z [DEBUG] logger.debug: DEBUG: [add-file] INPUT result type=dict
|
||||
2026-02-01T07:11:58.648545Z [DEBUG] logger.debug: DEBUG: [add-file] PARSED args: location=C:\Users\Admin\Downloads, provider=None, delete=False
|
||||
2026-02-01T07:12:15.119837Z [DEBUG] logger.debug: DEBUG: [add-file] PIPE item[0] PipeObject preview
|
||||
2026-02-01T07:12:31.628095Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:local] get_file(hash=32e30d72ae47..., url=None)
|
||||
2026-02-01T07:12:48.129021Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1C10>
|
||||
2026-02-01T07:13:04.670391Z [DEBUG] logger.debug: DEBUG: <rich.panel.Panel object at 0x0000024DE12A1C10>
|
||||
2026-02-01T07:13:21.189393Z [DEBUG] logger.debug: DEBUG: [hydrusnetwork:local] get_file: falling back to url=http://127.0.0.1:45869/get_files/file?hash=32e30d72ae4798c633323a2684d94a11582bb03a6ab38d2b0d5ae5eabc5e577b&Hydrus-Client-API-Access-Key=95178b08e6ba3c57991e7b4e162c6efff1ce90c500005c6ebf8524122ed2486e
|
||||
2026-02-01T07:13:37.692682Z [DEBUG] logger.debug: DEBUG: [add-file] RESOLVED source: path=C:\Users\Admin\AppData\Local\Temp\Medios-Macina\ubuntu-25.10-desktop-amd64.iso, hash=32e30d72ae4798c633323a2684d94a11582bb03a6ab38d2b0d5ae5eabc5e577b...
|
||||
2026-02-01T07:13:54.207275Z [DEBUG] add_file._handle_local_export: Exporting to local path: C:\Users\Admin\Downloads
|
||||
2026-02-01T07:14:10.869330Z [DEBUG] add_file._emit_pipe_object: Result (1 rows)
|
||||
|
||||
Reference in New Issue
Block a user