【问题标题】:Python 3: Opening A Magnet Link Contained In A VariablePython 3:打开包含在变量中的磁力链接
【发布时间】:2012-02-19 16:28:38
【问题描述】:

我有一个以字符串形式包含在变量中的磁力链接(例如:magnet:?xt=urn:btih:1c1b9f5a3b6f19d8dbcbab5d5a43a6585e4a7db6),我希望脚本打开处理磁力链接的默认程序以便它开始下载 torrent(就像我从文件管理器中打开了一个磁力链接一样)。

为了让答案更清楚,我们会说我们在一个名为 magnet_link 的变量中拥有磁力链接。

【问题讨论】:

  • 我自己在 Windows 上,但如果你也可以给我 Mac 和 Linux 的命令,然后我可以使用 os.name 或类似的东西来查找操作系统,以便可以使用正确的命令。

标签: python variables python-3.x bittorrent utorrent


【解决方案1】:

在 Windows 上你可以使用os.startfile:

os.startfile(magnet_link)

对于 Mac/OSX,您可能可以使用 applescript 并将其通过管道传输到 osascript,对于 Linux,您可能可以使用 xdg-open

【讨论】:

  • 我收到以下错误:WindowsError: [Error -2147217406] Windows Error 0x%X: 'magent:?xt=urn:btich:1c1b9f5a3b6f19d8dbcbab5d5a43a6585e4a7db6'
  • 哪个操作系统?您确定您有与磁铁协议相关的应用程序吗?
  • 为了完整性:在 Linux 上,您可能可以使用它调用 xdg-open 命令。
  • @EdenCrow:试试magnet:... 而不是magent:...
  • 也应该是magnet:?xt=urn:btih 而不是btich
【解决方案2】:

这里是一个小代码sn-p总结了所有操作系统上的方法

  import sys , subprocess
  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)

【讨论】:

    【解决方案3】:

    在 Mac 上,如果您安装了可以处理它的应用程序,只需将链接传递给 open 命令

    open "some url"
    

    使用我想像的子流程中的东西

    【讨论】:

    • 想一想,open 命令也可以让你指定一个应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2011-10-01
    • 2013-03-17
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多