Открытые магнитные ссылки на Ubuntu с python - PullRequest
1 голос
/ 09 марта 2012

У меня есть магнитная ссылка с торрент-сайта, который должен открыть эту программу, называемую трансмиссией. Как мне открыть ее с помощью Python?

Кстати, я на Ubuntu.Я слышал, что вещь, называемая xdg-open, может помочь, но как мне использовать ее для открытия ссылки на магнит?

, и если это не тот код, который я ищу, что я должен использовать для запуска магнита?ссылка

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Взгляните на аргументы командной строки transmission-gtk:

$ translation-gtk --help

Использование: translation-gtk [ОПЦИЯ ...] [торрент-файлы или URL-адреса]

Быстрый и грязный подход к решению на python - использование модуля os:

import os
os.system("transmission-gtk urlhere")

Гораздо более совершенным и сложным способом выполнения таких вызовов внешних программ является использование модуля subprocess. Еще несколько примеров можно найти в разделе python - как создать подпроцесс? .

xdg-open работает примерно так же. Но вместо прямого вызова клиента передачи он выбирает предпочтительное приложение Torrent (в данном случае предпочтительным является приложение по умолчанию, которое можно установить с помощью меню приложений по умолчанию в системных настройках Ubuntu). Неоднократно указывая вам на тексты справки, которые вызываются при вызове программы из командной строки, может быть интересно проверить коды выхода xdg-open:

$ xdg-open --manual

...

1 Ошибка в синтаксисе командной строки.

2 Один из файлов, переданных в командной строке, не существует.

3 Требуемый инструмент не найден.

4 Действие не выполнено.

0 голосов
/ 28 ноября 2017

Приведенный ниже код суммирует способ загрузки во всех операционных системах.

  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)
...