26 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| from urllib.parse import urlparse
 | |
| from typing import Optional
 | |
| 
 | |
| def load_file_from_url(
 | |
|         url: str,
 | |
|         *,
 | |
|         model_dir: str,
 | |
|         progress: bool = True,
 | |
|         file_name: Optional[str] = None,
 | |
| ) -> str:
 | |
|     """Download a file from `url` into `model_dir`, using the file present if possible.
 | |
| 
 | |
|     Returns the path to the downloaded file.
 | |
|     """
 | |
|     os.makedirs(model_dir, exist_ok=True)
 | |
|     if not file_name:
 | |
|         parts = urlparse(url)
 | |
|         file_name = os.path.basename(parts.path)
 | |
|     cached_file = os.path.abspath(os.path.join(model_dir, file_name))
 | |
|     if not os.path.exists(cached_file):
 | |
|         print(f'Downloading: "{url}" to {cached_file}\n')
 | |
|         from torch.hub import download_url_to_file
 | |
|         download_url_to_file(url, cached_file, progress=progress)
 | |
|     return cached_file
 |