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?

¿Fue útil?

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 de xdg-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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top