Download plugins/direct.py from ElJoker63/THOR: direct link, hf CLI and curl.
- Browser
- Download file 1.94 kB
-
https://huggingface.co/spaces/ElJoker63/THOR/resolve/main/plugins/direct.py
- Command line
-
hf download hf://spaces/ElJoker63/THOR/plugins/direct.py
-
curl -L -o direct.py https://huggingface.co/spaces/ElJoker63/THOR/resolve/main/plugins/direct.py
1.94 kB
| import logging | |
| import os | |
| import re | |
| from typing import Optional | |
| from plugins.common import DownloadCancelled | |
| from plugins.direct_link import DirectLinkError, is_supported_direct_host, resolve_direct_link | |
| from plugins.stream import download_stream_url | |
| logger = logging.getLogger("hf_worker.plugins.direct") | |
| def download_direct( | |
| url: str, | |
| output_dir: str, | |
| custom_name: Optional[str] = None, | |
| progress_fn=None, | |
| cancel_event=None | |
| ) -> str: | |
| """Descarga cualquier enlace directo HTTP/HTTPS por streaming para el worker, resolviendo hosts soportados.""" | |
| if cancel_event and cancel_event.is_set(): | |
| raise DownloadCancelled() | |
| download_url = url | |
| headers = {} | |
| if is_supported_direct_host(url): | |
| logger.info(f"Resolviendo enlace multi-host: {url}") | |
| try: | |
| download_url, headers = resolve_direct_link(url) | |
| logger.info(f"Enlace resuelto con éxito: {download_url[:80]}...") | |
| except DirectLinkError as e: | |
| logger.warning(f"Error resolviendo host ({e}), intentando con URL original...") | |
| download_url = url | |
| clean_name = None | |
| if custom_name: | |
| clean_name = str(custom_name).strip() | |
| if clean_name.startswith(("http://", "https://", "ftp://")) or "://" in clean_name: | |
| clean_name = None | |
| else: | |
| clean_name = os.path.basename(clean_name).strip() | |
| clean_name = re.sub(r'[\/\\:\*\?"<>\|\x00-\x1f]', '_', clean_name).strip(' ._') | |
| if not clean_name or clean_name in ("downloaded_file", "archivo"): | |
| clean_name = None | |
| if clean_name: | |
| out_target = os.path.join(output_dir, clean_name) | |
| else: | |
| out_target = output_dir | |
| dl_file, _ = download_stream_url( | |
| download_url, | |
| out_target, | |
| progress_fn=progress_fn, | |
| cancel_event=cancel_event, | |
| headers=headers if headers else None, | |
| ) | |
| return dl_file | |