先日作った、XCH収入を自動集計してcsvファイルに追記するスクリプトですが、せっかくなので、日本円でいくらになるかの変換まで対応しました
参考になれば幸いです
記事作成日:2021年10月22日
はじめに
前回の記事がこちら。
chia blockchainに対してCLIからXCHの収入を取得するまでは同じです。
必要なもの
- Windows10
- chia blockchain
- python実行環境
(BeautifulSoup4が必要)
BeautifulSoup4のインストール
WebからXCH/USDTと、USD/JPYの情報を取得(スクレイピング)するため、BeautifulSoupを利用します。事前にpipでインストールが必要。
pip install beautifulsoup4
ソースコード一式
↓githubにアップしましたので、必要に応じてご参照ください。
使い方
- get_chia_income_with_jpy.py を開いて下さい。
- ver_str = ‘1.2.9’ を、自身のChia Blockchainのバージョンに合わせておく。
- address = [
xch1address11111111111111111111111111111111111111111111111111111
・・・・
]
を、全て自身のプール支払先アドレスに変更する。
最後に、chia_wallet_daily_with_jpy.csvを同じフォルダにおいて、以下のコマンドを実行するだけ。
python get_chia_income_with_jpy.py
chia_wallet_daily_with_jpy.csv に、昨日の入金データが1回追記されます。
これを、毎日12時過ぎなど定時に1回、
タスクスケジューラ等で自動実行すれば、自動記帳されていきます。
・実行サンプル
仕組み
XCHの集計
XCHのプールごとの収入を取得するのは、前回記事と同じ。
XCH/USDT 交換レートの取得
XCH/USDTはGate.ioのWebページから取得しています。
具体的には、https://www.gate.io/ja/trade/XCH_USDT を開いて、レート箇所を抽出します。
ソースのうちid=”currPrice”を含むタグに囲まれた部分がXCH/USDTになりますので、
「.select(“#currPrice”)[0].string」によって取得、floatに変換します。
これを、get_xch_to_usdt()という名の関数に定義しました。
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" } def get_xch_to_usdt(): url_to_usdt="https://www.gate.io/ja/trade/XCH_USDT" request = urllib.request.Request(url_to_usdt, headers=headers) res_usdt = urlopen(request) soup_usdt = BeautifulSoup(res_usdt, 'html.parser') xch_to_usdt = soup_usdt.select("#currPrice")[0].string return float(xch_to_usdt)
なおここでUser Agentをセットしておかないと403 Forbiddenで怒られますのでChromeでのUser Agentをセットしています。
USD/JPY 交換レートの取得
同様に、USD/JPYのデータも、Yahooファイナンスのページから取得します。
こちらはclass=”stoksPrice”を含むタグに囲まれた部分がUSD/JPYになりますので、
上記とは違い、「.select_one(“.stoksPrice”).string」という抽出方法になります。
これを、get_xch_to_usdt()という名の関数に定義しました。
def get_usd_to_jpy(): url_to_jpy="https://stocks.finance.yahoo.co.jp/stocks/detail/?code=usdjpy" res_jpy = urlopen(url_to_jpy) soup_jpy = BeautifulSoup(res_jpy, 'html.parser') usd_to_jpy = soup_jpy.select_one(".stoksPrice").string return float(usd_to_jpy)
あとは乗算するだけ
USDTとUSDの違いこそありますが、
XCH/USDTとUSD/JPYが取得できたら、
その日のXCH値に対して乗算するだけ。
#XCH/USDT USD/JPY取得 xch_to_usdt = get_xch_to_usdt() usd_to_jpy = get_usd_to_jpy() jpy = xch_total * xch_to_usdt * usd_to_jpy print('xch_total =', xch_total) print('xch_to_usdt=', xch_to_usdt) print('usd_to_jpy =', usd_to_jpy) print('jpy =', jpy)
・実行結果
xch_total = 0.003383420672 xch_to_usdt= 155.96 usd_to_jpy = 113.58 jpy = 59.93369995
無事、この日の収益は約60円であることが算出できました!(少ないなあ)
なお、いずれも「取得した瞬間の値」である事に注意。
午前0時ちょうどに、前日のXCHを集計し、
午前0時ちょうどのレートであればそれほど変動はないとは思います。
さいごに
厳密な数値算出には過去の履歴を参照するような処理を行う必要がありますが、
今回のように「軽い処理」で「概算を知る」には使える手法ではないでしょうか。
なにか参考になれば幸いでございます。
それではまたー