Abra links magnéticos no Ubuntu com python
-
09-12-2019 - |
Pergunta
Eu tenho um link magnético de um site de torrent que deve abrir este programa chamado transmissão. Como faço para abri-lo com Python?
estou no Ubuntu aliás.Eu ouvi uma coisa chamada xdg-open
pode resolver o problema, mas como faço para usá-lo para abrir o link magnético?
e se esse não for o código que estou procurando, o que devo usar para executar o link magnético?
Solução
Dando uma olhada nos argumentos da linha de comando de transmission-gtk
ajuda:
$ transmissão-gtk --help
Uso:transmissão-gtk [OPÇÃO...] [arquivos torrent ou URLs]
Uma abordagem rápida e suja para uma solução python é usar o os
módulo:
import os
os.system("transmission-gtk urlhere")
Uma maneira muito melhor e mais sofisticada de fazer chamadas para programas externos é usar o subprocess
módulo.Mais alguns exemplos podem ser encontrados em python – como criar um subprocesso?.
xdg-open
funciona praticamente da mesma maneira.Mas em vez de chamar o cliente de transmissão diretamente, ele escolhe o aplicativo Torrent preferido (preferido neste caso significa o aplicativo padrão, que pode ser definido usando o menu de aplicativos padrão nas configurações do sistema Ubuntu).Apontando repetidamente para os textos de ajuda fornecidos ao chamar o programa a partir da linha de comando, pode ser interessante inspecionar os códigos de saída do xdg-open
:
$ xdg-open --manual
...
1 Erro na sintaxe da linha de comando.
2 Um dos arquivos passados na linha de comando não existia.
3 Não foi possível encontrar uma ferramenta necessária.
4 A ação falhou.
Outras dicas
O código abaixo resume o método de download em todos os sistemas operacionais.
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)