Como los archivos URL son sólo archivos de texto, he resuelto este problema adjuntando un script como manejador a ellos, que lee la URL del archivo y abre esa URL con el navegador web por defecto. El siguiente Nim script hace esto. Sólo lo he probado en mi propio sistema operativo, pero también debería funcionar en Linux y MacOS.
Tienes que compilarlo. Instalar Nim y luego ejecutar nim compile urlhandler.nim
en él. A continuación, asigne sus archivos URL al ejecutable creado.
# urlhandler.nim
import os, system, re, browsers, strutils, strformat
# You can change this. Use lowercase.
let URLEXTS = [".url", ".open"]
# ↑ I added the '.open' file type because on my OS it is not trivial to attach
# new programs to the URL filetype in the default file explorer. So lets create a
# new filetype, and attach this exe to it. Then batch renaming *.url files to
# *.open files (programmatically or by hand) shouldnt be too difficult, is it?
var url: string
block:
proc bye(reason: string) =
echo "*** ERROR ***"
echo "\n" & reason
echo "\n(press key to close)"
discard readLine(stdin)
quit()
var oldname: string
block:
try:
oldname = commandLineParams()[0]
except IndexDefect:
bye "Please provide a file"
oldname.normalizePath
if not oldname.fileExists:
bye fmt"{oldname} does not exist"
oldname = oldname.expandFilename
let (_, title, ext) = oldname.splitFile
let cleanext = ext.toLower
if cleanext in URLEXTS:
let filecontents = readFile(oldname)
if filecontents.isEmptyOrWhitespace:
bye fmt"{title & ext} is empty."
let urlpattern = re(
"""
^ \s* URL \s* = \s* ( [^\s]+ )
""",
flags = {reExtended, reMultiLine}
)
var matchgroups: array[1, string]
if filecontents.find(urlpattern, matchgroups) > 0:
url = matchgroups[0]
else:
bye fmt"""
{title & ext} has an unknown format. I was expecting something like ...
[InternetShortcut]
URL=https://nim-lang.org/
... but instead i got ...
""".dedent &
filecontents.strip.indent(4)
else:
bye fmt"""unsupported filetype: "{ext}". If you want to have it """ &
"supported, add it to the URLEXTS list."
openDefaultbrowser(url)
1 votos
Hice un
.url
utilizando su ejemplo y obtener los mismos resultados que usted.