コトコインのログを差分取得してみました

その他 koto ログ

8 Res. 0.00228228 MONA 2 Fav.

1 :uzunekoさん:2018/02/12 15:02:45  0.00228228MONA/2人

需要はないと思いますが、kアドレスのログを差分取得できるバッチをです。
将来的に全ログが必要になるかもなので、大きくなる前に差分で出しておきたいと思って作ってみました。
適当なので間違いがあったら生暖かくつっこんでください。
また使うのも自己責任でお願いします。

koto-cli のログ出力を試していたら「X件目からY件出力」ができることに気がついたのでそれを使って差分出力しています。
ログはJSON型式で最新から出力されるので、一度手動で全部取り切りそれ以降を差分出力する想定です。

2 :uzunekoさん:2018/02/12 15:06:01  0MONA/0人

@echo off
rem KOTOコインの採掘ログを差分取得したいので。。。
rem 1度もログを取得していない場合は以下のコマンドで一度取り切ってとっておく。
rem 1) koto-cli listtransactions "*" 10000 > LASTLOG.log
rem 2) copy LASTLOG.log > tmp.log
rem ※1)のコマンドの数字はLASTLOG.logに取得しておきたい件数を指定。
rem ※ログは最新から読み出されるのでできるだけ大きな値にして
rem ※一度取り切る必要があります。
rem ※2)のコマンドでコピーした tmp.logをこのバッチ中に上書きします。

rem koto-cli があるディレクトリに移動
C:
cd "C:\171224_koto1.0.13_win_64bit"

3 :uzunekoさん:2018/02/12 15:06:13  0MONA/0人

rem パラメータ設定(LASTLOG:最終行取得用ログ、MAXCOUNT:最大試行回数)
set LASTLOG=tmp.log
set /A MAXCOUNT=2000

rem ログファイルを読み込んで最後の"blocktime": をtTIMEに格納
for /F "tokens=1-2" %%i in (%LASTLOG%) do (
if %%i=="blocktime": (
set tTIME=%%j
)
)

rem 格納できなかったら終了
if %tTIME%=="" goto END
echo 取得済みログの BLOCK TIME: %tTIME%

4 :uzunekoさん:2018/02/12 15:06:37  0MONA/0人

:settarget
rem koto-cliのログ出力機能を使って tTIMEが最新から何件目かを取得
rem 試行回数は最大 MAXCOUNTまで

set /A CNT=0
SETLOCAL enabledelayedexpansion
for /L %%i in (0,1,%MAXCOUNT%) do (
koto-cli listtransactions "*" 1 %%i | find "%tTIME%" > nul
if "!ERRORLEVEL!"=="0" (
set /A CNT=%%i
goto createlog
)
)

5 :uzunekoさん:2018/02/12 15:07:04  0MONA/0人

:createlog
if "%CNT%"=="0" (
echo 更新されたログはありませんでした。
goto END
)

rem 差分件数分のログを tmp.logに出力
koto-cli listtransactions "*" %CNT% > tmp.log

rem tmp.log を読み込んで最新の "blocktime": をnTIMEに格納
for /F "tokens=1-2" %%i in (tmp.log) do (
if %%i=="blocktime": (
set nTIME=%%j
)
)

6 :uzunekoさん:2018/02/12 15:07:24  0MONA/0人

rem tmp.logを 最新blocktime.log にコピー
set LASTLOGNAME=%nTIME:~0,10%.log
copy tmp.log %LASTLOGNAME% > NULL
echo %LASTLOGNAME% を出力しました。

:END
echo.

7 :uzunekoさん:2018/02/12 15:12:59  0MONA/0人

>1
>koto-cli のログ出力を試していたら「X件目からY件出力」ができることに気がついたのでそれを使って差分出力しています。

は間違いでした。おもしろいとおもったのですが、ログは最新から順にはかれるので、結局使わずに出力しています。

8 :uzunekoさん:2018/02/14 20:56:18  0MONA/0人

自己レスです。
"blocktime" はログに含まれない場合があることを発見。
実害はないけど

blocktime -> timereceived
BLOCK TIME -> TIMERECEIVED

に変更したほうがよさげ。

お気に入り

新規登録してMONAをもらおう

登録すると、投稿したり、MONAをもらったりすることができます。質問したり、答えたりしてMONAを手に入れてください。

新規登録ログイン