Desafortunadamente, creo que la respuesta corta a tu pregunta es no, esto todavía no es posible (razonablemente) en MacOS. El enfoque más sencillo parece ser descargar la imagen, subirla y luego borrarla. Este es probablemente el enfoque que yo tomaría personalmente. Sin embargo,
Si estás realmente desesperado por encontrar una manera de descargar un archivo temporal desde el diálogo de archivos, hay técnicamente una manera de hacerlo, aunque no creo que haya ningún caso de uso práctico para este enfoque. Pero, si no es más que una prueba de concepto, esto es lo que he reunido.
La premisa básica del enfoque es utilizar un nombre de archivo como entrada de la URL. Es decir, introduces la URL que quieres como el nombre de un archivo (que, afortunadamente, puede ser bastante largo en APFS) en una ubicación especial en el disco, y un script descargará temporalmente el recurso correcto de la web en el mismo directorio para que lo insertes. (Tenga en cuenta una advertencia importante: la URL no debe contener dos puntos ya que MacOS no puede manejar esos nombres de archivo. Esto significa que tendrá que omitir el https://
de las URLs al escribirlas/pegarlas).
A continuación te explicamos cómo ponerlo en práctica:
-
Abra las Preferencias del Sistema y vaya a Seguridad y Privacidad > Privacidad > Acceso total al disco. Haz clic en el candado de la parte inferior izquierda para desbloquear el panel. A continuación, en el Finder, ve a /usr/bin/
y arrastra el python3
en la lista de Preferencias del Sistema. Asegúrese de que la casilla junto a python3
se comprueba.
-
Guarde lo siguiente como com.badidea.url-file-watcher.plist
en ~/Library/LaunchAgents
. Sustituir [PATH TO PYTHON SCRIPT]
con el absoluto la ruta de acceso al script de Python que crearás más adelante (yo puse el mío en /Users/[myusername]/Documents/fetchurl.py
). Sustituya también [PATH TO WATCHED FOLDER]
con una ruta relativa o absoluta a la carpeta donde pondrás el "archivo mágico" (yo elegí ~/Desktop/filefromurl/
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>url-file-watcher</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>[PATH TO PYTHON SCRIPT]</string>
</array>
<key>WatchPaths</key>
<array>
<string>[PATH TO WATCHED FOLDER]</string>
</array>
</dict>
</plist>
-
Cree el archivo Python en la ruta que seleccionó en el paso 2 (de nuevo, en mi ejemplo, sería en ~/Documents/fetchurl.py
), y pegue el siguiente código:
import os
import time
from urllib.parse import urlparse, unquote
from urllib.request import urlretrieve
from pathlib import Path
def main():
dir_path = os.path.expanduser('~/Desktop/filefromurl')
files = os.listdir(dir_path)
if '.DS_Store' in files:
files.remove('.DS_Store')
url_from_file = files[0].replace(':', '/')
if url_from_file == 'url':
return
file_name = unquote(os.path.basename(urlparse(url_from_file).path))
filename.replace(':', '')
file_name.replace('/', ':')
try:
urlretrieve('https://' + url_from_file, os.path.join(dir_path, file_name))
except:
try:
urlretrieve('http://' + url_from_file, os.path.join(dir_path, file_name))
except:
return
os.remove(os.path.join(dir_path, files[0]))
time.sleep(10) # customize as desired -- # of seconds to wait before deleting temp file (can't use again until it's deleted)
for file in os.listdir(dir_path):
os.remove(os.path.join(dir_path, file))
Path(os.path.join(dir_path, 'url')).touch()
main()
-
Cree la "carpeta vigilada" que introdujo en el paso 2. (En mi ejemplo, es ~/Desktop/filefromurl
.) A continuación, abra el Terminal y escriba touch [PATH TO WATCHED FOLDER]/url
, sustituyendo a [PATH TO WATCHED FOLDER]
con la ruta relativa o absoluta a su "carpeta vigilada" que ha creado. (Así que para mí, esto sería touch ~/Desktop/filefromurl/url
.)
-
En el Terminal, ejecute launchctl load ~/LaunchAgents/com.badidea.url-file-watcher.plist
.
-
Ahora, cuando quiera cargar un archivo en su navegador, simplemente navegue a su "carpeta vigilada" (yo la pondría en su barra lateral del Finder para mayor comodidad) y luego cambie el nombre del url
a la URL que desea descargar. Después de un momento, verás que el archivo descargado aparece en el explorador de archivos, y tendrás diez segundos (el retraso se puede personalizar en la línea 30 del Python script) para seleccionar y cargar el archivo, después de lo cual el archivo temporal se eliminará automáticamente y se sustituirá por el marcador de posición url
archivo para la próxima vez.
Y para demostrar que todo funciona (técnicamente), he aquí una breve demostración: