正直なところ、自分が何をしているのか完全にはわかりませんが、Pirate BayScopeにAcestreamPlayerで結果を公開させようとしています。 Acestreamの問題の1つは、磁気リンクの処理方法を知りません。
元のコードは次のとおりです。
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='')
1行を変更したので、次のようになります。
GLib.spawn_command_line_async('aria2c -d ~/.torrents --on-download-complete ~/.torrent.sh --bt-metadata-only=true --bt-save-metadata=true \'%s\'' % uri)
Aria2cを使用して磁気リンクに接続し、トレントファイルをダウンロードしています。ファイルがダウンロードされると、aria2cはbashスクリプトを実行して、Acestreamでトレントファイルを開きます。このプロセスは、コマンドラインで正常に機能します。構文が間違っていると思います。
どんな助けでも大歓迎です。
ありがとうございました
最終的には、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='')
今、私はただ大人のヒットを解析する必要があります。やっぱりファミリーエンターテインメントシステム用です。