使用python在Ubuntu上打开磁铁链接

时间:2012-03-09 07:45:46

标签: python hyperlink transmission utorrent

我有一个来自torrent网站的磁力链接,应该打开这个名为transmission的程序。如何用Python打开它?

我正在使用ubuntu btw。 我听说这个名为xdg-open的东西可以做到这一点,但我如何用它来打开磁铁链接呢?

如果这不是我正在寻找的代码,我应该用什么来运行磁力链接?

2 个答案:

答案 0 :(得分:3)

查看transmission-gtk的命令行参数有助于:

  

$ transmission-gtk --help

     

用法:传输-gtk [OPTION ...] [torrent文件或网址]

python解决方案的快速而肮脏的方法是使用os模块:

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

对外部程序进行此类调用的更好,更复杂的方法是使用subprocess模块。在python - how to create a subprocess?下可以找到更多示例。

xdg-open的工作原理大致相同。但是它不是直接调用传输客户端,而是选择首选的Torrent应用程序(在这种情况下,首选是指默认应用程序,可以使用Ubuntu系统设置中的默认应用程序菜单进行设置)。通过从命令行调用programm反复指向您提供的帮助文本,检查xdg-open的退出代码可能会很有趣:

  

$ xdg-open --manual

     

...

     

命令行语法错误。

     

2命令行上传递的一个文件不存在。

     

3无法找到所需的工具。

     

4行动失败。

答案 1 :(得分:0)

以下代码总结了在所有操作系统上下载的方法。

  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)