Pythonによるauカブコム証券kabuステーションAPIを利用したトレーニングストップブログラム解説 2

スポンサーリンク

トークン発行 /token 呼出 get_token.py

“token.py”がというファイル名だと動かない

前からこのブログでは、トークンを取得する処理のモジュールのファイル名を、「token.py」としてご紹介してきましたが、すみません、そのままのファイル名だと動きませんでした。

私の実際に使用していたファイル名は「rsi1570_token.py」など、自分用の目印となる接頭語を付けていたので動作していましたが、今回「token.py」そのままだと動かないことに気づきました。

どうも、PythonのRESTクライアントパッケージである、websocket-clientと干渉するようですが、詳しいことは調べていません。とにかく、「token.py」のファイル名を変えれば動くので、今回は「get_token.py」としています。

その他の処理は、前回と変わりませんが、前回の記事でも書いたように、メイン→サブモジュール呼び出し型に変更しています。

import urllib.request
import json
import pprint
import sys
import settings
import password

def token():
    obj = { 'APIPassword': password.apiPassword }
    json_data = json.dumps(obj).encode('utf8')

    url = 'http://localhost:' + settings.port + '/kabusapi/token'

    req = urllib.request.Request(url, json_data, method='POST')
    req.add_header('Content-Type', 'application/json')


    try:
        print('###token')
        with urllib.request.urlopen(req) as res:
            print(res.status, res.reason)
            for header in res.getheaders():
                print(header)
            print()
            content = json.loads(res.read())
            pprint.pprint(content)
            token = content["Token"]
            settings.token = token
            return

    except urllib.error.HTTPError as e:
        print(e)
        content = json.loads(e.read())
        pprint.pprint(content)
    except Exception as e:
        print(e)

    sys.exit()

if __name__ == "__main__":
    import sys
    token()

パスワードはpassword.pyというモジュールに別出しにしました

しいて言えば、パスワードはsettings.pyではなく、password.pyというモジュールに別出しにしました。

これは、ソースを公開するときに消すことを忘れないようにするためで、皆さんは特に必要ないと思います。

コメント