修改Unity Piratebay Scope以使用torrent流媒体而不是默认客户端打开URI

时间:2013-05-31 21:34:01

标签: python ubuntu glib

老实说,我并不完全知道我在做什么,但我正试图让Pirate Bay Scope用Acestream Player打开它的结果。其中一个问题是Acestream不知道如何处理磁链接。

下面的原始代码使用gvfs-open打开默认应用程序。

def on_activate_uri (self, scope, uri):
    if uri.startswith("more"):
        results = self.scope.props.results_model
        page = uri.split('__')[2]
        search = uri.split('__')[1]
        results.remove(results.get_iter_at_row(results.get_n_rows()-1))
        self.update_results_model (search, results, page)
        return Unity.ActivationResponse(handled=Unity.HandledType.SHOW_DASH, goto_uri="")
    else:
        print uri
        GLib.spawn_command_line_async('gvfs-open %s' % uri)
        return Unity.ActivationResponse(handled=Unity.HandledType.HIDE_DASH, goto_uri='')

我修改了一行,所以它是:

GLib.spawn_command_line_async("aria2c -d /path/.torrents --on-download-complete /path/.torrent.sh --bt-metadata-only=true --bt-save-metadata=true '%s'" % uri)

我正在使用aria2c连接到磁链接并下载一个torrent文件,一旦文件被下载,aria2c就会运行一个bash脚本,用Acestream打开torrent文件。此过程在命令行上正常工作。我猜我的语法错了。

我可以告诉你从范围中选择torrent运行aria2c并打开端口,但是没有创建torrent文件而且我的脚本没有被执行。奇怪的是,当我将gnome-terminal -x添加到命令行的前面时,为了进行调试而观察它运行,它成功创建了torrent文件,我的脚本打开了Acestream一段时间。

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

最后通过拼写出我想用Popen运行的每个命令,最后的实现如下。

    else:
        print uri
        subprocess.Popen('rm /path/.torrents/*', shell=True)
        subprocess.Popen('gnome-terminal -x aria2c --allow-overwrite=true -d /path/.torrents --bt-metadata-only=true --bt-save-metadata=true \'%s\'' % uri, shell=True).wait()
        torrent = subprocess.check_output('ls /path/.torrents/*', shell=True).strip()
        GLib.spawn_command_line_async('acestreamplayer %s' % torrent)
        return Unity.ActivationResponse(handled=Unity.HandledType.HIDE_DASH, goto_uri='')

现在我只需要解析成人的点击率。毕竟是家庭娱乐系统。