Add prices-range
This commit is contained in:
parent
e105ee4d29
commit
c4f82bdbd6
15
cli.py
15
cli.py
@ -8,7 +8,7 @@ from mev_inspect.concurrency import coro
|
|||||||
from mev_inspect.crud.prices import write_prices
|
from mev_inspect.crud.prices import write_prices
|
||||||
from mev_inspect.db import get_inspect_session, get_trace_session
|
from mev_inspect.db import get_inspect_session, get_trace_session
|
||||||
from mev_inspect.inspector import MEVInspector
|
from mev_inspect.inspector import MEVInspector
|
||||||
from mev_inspect.prices import fetch_prices
|
from mev_inspect.prices import fetch_prices, fetch_prices_range
|
||||||
|
|
||||||
RPC_URL_ENV = "RPC_URL"
|
RPC_URL_ENV = "RPC_URL"
|
||||||
|
|
||||||
@ -117,6 +117,19 @@ def fetch_all_prices():
|
|||||||
write_prices(inspect_db_session, prices)
|
write_prices(inspect_db_session, prices)
|
||||||
|
|
||||||
|
|
||||||
|
@cli.command()
|
||||||
|
@click.argument("start", type=int)
|
||||||
|
@click.argument("end", type=int)
|
||||||
|
def fetch_range(start: int, end: int):
|
||||||
|
inspect_db_session = get_inspect_session()
|
||||||
|
|
||||||
|
logger.info("Fetching prices")
|
||||||
|
prices = fetch_prices_range(start, end)
|
||||||
|
|
||||||
|
logger.info("Writing prices")
|
||||||
|
write_prices(inspect_db_session, prices)
|
||||||
|
|
||||||
|
|
||||||
def get_rpc_url() -> str:
|
def get_rpc_url() -> str:
|
||||||
return os.environ["RPC_URL"]
|
return os.environ["RPC_URL"]
|
||||||
|
|
||||||
|
9
mev
9
mev
@ -82,7 +82,14 @@ case "$1" in
|
|||||||
kubectl exec -ti deploy/mev-inspect -- \
|
kubectl exec -ti deploy/mev-inspect -- \
|
||||||
poetry run fetch-all-prices
|
poetry run fetch-all-prices
|
||||||
;;
|
;;
|
||||||
*)
|
fetch-range)
|
||||||
|
start=$2
|
||||||
|
end=$3
|
||||||
|
echo "Running price fetch-range"
|
||||||
|
kubectl exec -ti deploy/mev-inspect -- \
|
||||||
|
poetry run fetch-range $start $end
|
||||||
|
;;
|
||||||
|
*)
|
||||||
echo "prices usage: "$1" {fetch-all}"
|
echo "prices usage: "$1" {fetch-all}"
|
||||||
exit 1
|
exit 1
|
||||||
esac
|
esac
|
||||||
|
@ -20,7 +20,32 @@ def fetch_prices() -> List[Price]:
|
|||||||
price_time_series = price_data["prices"]
|
price_time_series = price_data["prices"]
|
||||||
|
|
||||||
for entry in price_time_series:
|
for entry in price_time_series:
|
||||||
timestamp = dt.fromtimestamp(entry[0] / 100)
|
timestamp = dt.fromtimestamp(entry[0] / 1000)
|
||||||
|
token_price = entry[1]
|
||||||
|
prices.append(
|
||||||
|
Price(
|
||||||
|
timestamp=timestamp,
|
||||||
|
usd_price=token_price,
|
||||||
|
token_address=token_address,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return prices
|
||||||
|
|
||||||
|
|
||||||
|
def fetch_prices_range(start: int, end: int) -> List[Price]:
|
||||||
|
|
||||||
|
cg = CoinGeckoAPI()
|
||||||
|
prices = []
|
||||||
|
|
||||||
|
for token_address in TOKEN_ADDRESSES:
|
||||||
|
price_data = cg.get_coin_market_chart_range_by_id(
|
||||||
|
COINGECKO_ID_BY_ADDRESS[token_address], "usd", start, end
|
||||||
|
)
|
||||||
|
price_time_series = price_data["prices"]
|
||||||
|
|
||||||
|
for entry in price_time_series:
|
||||||
|
timestamp = dt.fromtimestamp(entry[0] / 1000)
|
||||||
token_price = entry[1]
|
token_price = entry[1]
|
||||||
prices.append(
|
prices.append(
|
||||||
Price(
|
Price(
|
||||||
|
@ -39,6 +39,7 @@ inspect-many-blocks = 'cli:inspect_many_blocks_command'
|
|||||||
enqueue-many-blocks = 'cli:enqueue_many_blocks_command'
|
enqueue-many-blocks = 'cli:enqueue_many_blocks_command'
|
||||||
fetch-block = 'cli:fetch_block_command'
|
fetch-block = 'cli:fetch_block_command'
|
||||||
fetch-all-prices = 'cli:fetch_all_prices'
|
fetch-all-prices = 'cli:fetch_all_prices'
|
||||||
|
fetch-range = 'cli:fetch_range'
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
exclude = '''
|
exclude = '''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user