

SONYが提供しているサンプルコードをGoogle Colaboratoryを使ってやっています。  
最後の文に`$ python execute_action_api.py find_object
"{\"TargetType\":\"pinkball\"}"`を使って実行したところ、

[code]

    File "<ipython-input-21-cd227b9f8d7e>", line 54 $ python execute_action_api.py find_object "{\"TargetType\":\"pinkball\"}" ^ SyntaxError: invalid syntax 
    
[/code]

というエラーが出ます。どこを直したらできますでしょうか？

ちなみにアクセストークンとdeviceIdの取得のところ以外は変えておらず、そのまま貼り付けています。

サンプルコード：  
<https://developer.aibo.com/jp/docs#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89>


CC BY-SA 4.0
2020-08-31T13:12:41.083
70020
2023-01-01T04:04:15.573
2020-08-31T16:30:51.383
3060
41410
question
python aibo-developer
aibo Web API をpythonを使って実行するとエラー: SyntaxError: invalid syntax


※ line 54 で `SyntaxError: invalid syntax` と表示されたので、54行を見るべきなのでしょうが...

Google Colab は、クラウド上の Jupyter notebookですよね。  
件のサンプルプロクラムを、Code セルに打ち込んで、さらに

[code]

    python execute_action_api.py find_object "{\"TargetType\":\"pinkball\"}"
    
[/code]

を追加して実行してみたということですね。  
そのコードセルを実行しても、`find_object` は実行されないはずです。  
sys.argv[1] は `find_object` ではないからです。

`if __name__ == ` 以下をコメントアウト（または削除）して `do_action`
関数に適当な引数を付けて直接呼んでみてはいかがでしょうか？

[code]

    """
    if __name__ == '__main__':
        length = len(sys.argv)
        if length == 3:
            do_action(sys.argv[1], sys.argv[2])
        else :
            print("execute_action_api.py <action api name> <parameters>")
            exit(1)
    """
    
    do_action( "find_object", "{\"TargetType\":\"pinkball\"}")
    
[/code]

こちらで試したところ Time out になりました。 少なくとも syntax error は出ません。


CC BY-SA 4.0
2021-01-13T10:18:29.843
73267
2021-01-13T10:18:29.843
43515
70020
answer


自分も試してみました。  
他の方が書かれているとおり、Google Colaboratory 上では不要な下記を削除し、

[code]

    if __name__ == '__main__':
        length = len(sys.argv)
        if length == 3:
            do_action(sys.argv[1], sys.argv[2])
        else :
            print("execute_action_api.py <action api name> <parameters>")
            exit(1)
    
[/code]

上記を削除した位置に、かわりに

[code]

    do_action("play_motion",  "{\"Category\":\"bark\", \"Mode\":\"NONE\"}")
    
    
[/code]

などを追加して実行すると、aiboが反応してくれると思います。(これは1回わんと鳴くモーションの実行です)

エラーが出るときは、下記の箇所に、参考リンクをみて取得した正しい文字列を入れてください。

[code]

    headers = {
    'Authorization': 'Bearer ここにトークン文字列(かなり長い)を入れる',
    }
    
    BASE_PATH = 'https://public.api.aibo.com/v1'
    DEVICE_ID = "ここにデバイスIDを入れる"
    
[/code]

参考
[https://developer.aibo.com/jp/docs#アクセストークンの取得](https://developer.aibo.com/jp/docs#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E5%8F%96%E5%BE%97)

タイムアウトが発生するときは、TIME_OUT_LIMIT = 10 を100など大きな値にしてみると回避できました。


CC BY-SA 4.0
2022-05-07T03:26:24.300
88681
2022-05-07T03:26:24.300
52513
70020
answer