Enlaces abiertos de imán en Ubuntu con Python
-
09-12-2019 - |
Pregunta
Tengo un enlace magnético de un sitio de torrent que debe abrir este programa llamado transmisión. ¿Cómo lo abro con Python?
Estoy en Ubuntu por cierto.
Escuché esta cosa llamada xdg-open
puede hacer el truco, pero ¿cómo lo uso para abrir el enlace magnet?
Y si ese no es el código que estoy buscando, ¿qué debo usar para ejecutar el enlace magnet?
Solución
Echando un vistazo a los argumentos de la línea de comandos de transmission-gtk
ayuda:
$ transmisión-gtk --help
Uso: transmisión-GTK [Opción ...] [Archivos de Torrent o URL]
Un enfoque rápido y sucio para una solución de Python está utilizando la
os
Módulo:import os os.system("transmission-gtk urlhere")
Una forma mucho mejor y más sofisticada de realizar dichas llamadas a programas externos está utilizando la
subprocess
/ a> módulo. Algunos ejemplos más se pueden encontrar en Python - ¿Cómo crear un subproceso? .
xdg-open
funciona bastante de la misma manera. Pero en lugar de llamar directamente al cliente de transmisión, elige la aplicación de torrent preferida (preferida en este caso, la aplicación predeterminada significa, que se puede configurar utilizando el menú de aplicaciones predeterminadas en la configuración del sistema Ubuntu). Le apuntando repetidamente en los textos de ayuda dados llamando al programa de la línea de comandos, podría ser interesante inspeccionar los códigos de salida dexdg-open
:$ xdg-abre --manual
...
1 Error en la sintaxis de la línea de comandos.
2 Uno de los archivos aprobados en la línea de comandos no existía.
3 No se pudo encontrar una herramienta requerida.
4 la acción falló.
Otros consejos
El siguiente código resume el método para descargar en todos los sistemas operativos.
import subprocess , os , sys
def open_magnet(magnet):
"""Open magnet according to os."""
if sys.platform.startswith('linux'):
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
elif sys.platform.startswith('win32'):
os.startfile(magnet)
elif sys.platform.startswith('cygwin'):
os.startfile(magnet)
elif sys.platform.startswith('darwin'):
subprocess.Popen(['open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
import subprocess , os , sys
def open_magnet(magnet):
"""Open magnet according to os."""
if sys.platform.startswith('linux'):
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
elif sys.platform.startswith('win32'):
os.startfile(magnet)
elif sys.platform.startswith('cygwin'):
os.startfile(magnet)
elif sys.platform.startswith('darwin'):
subprocess.Popen(['open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)