说实话,我并不完全清楚自己在做什么,但我正尝试让 Pirate Bay Scope 使用 Acestream Player 打开其结果。其中一个问题是 Acestream 不知道如何处理磁力链接。
原始代码为:
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 ~/.torrents --on-download-complete ~/.torrent.sh --bt-metadata-only=true --bt-save-metadata=true \'%s\'' % uri)
我正在使用 aria2c 连接到磁力链接并下载一个 torrent 文件,一旦文件下载完毕,aria2c 就会运行一个 bash 脚本,该脚本会使用 Acestream 打开 torrent 文件。此过程在命令行上运行良好。我猜我的语法是错误的。
任何帮助是极大的赞赏。
谢谢
答案1
它最终通过使用 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='')
现在我只需要分析成人热门内容。毕竟它是为家庭娱乐系统准备的。