老实说,我并不完全知道我在做什么,但我正试图让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一段时间。
非常感谢任何帮助。
谢谢
答案 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='')
现在我只需要解析成人的点击率。毕竟是家庭娱乐系统。