스팀몬스터 팩도 사고 시장에서 카드도 사다보니 수량이 많아졌습니다. 저는 주로 peakmonster.kr에서 매도 주문을 내는데, 최대 25장까지 한번에 매도를 할 수 있습니다. 만약 200장을 매도할려고 하면.... 25장 매도 주문을 8번 반복해서 내어야 합니다. 만약 1000장을 매도 주문해야 한다면.. 날 셈니다.
그래서 이걸 파이썬으로 구현해 보고 싶어서 방법을 찾아보았습니다.
역시나.. 아주 좋은 소스가 github에 있습니다.
https://github.com/rondras/Steem-Monsters-Trading-Bot
다운 받아서 소스 분석 시작합니다.
카드별 정보
카드별로 uid가 존재하고 해당 uid를 보면 세부적인 정보가 있습니다. 그 내용은 아래와 같습니다.
본인이 보유하고 있는 카드 리스트
현재 본인이 보유하고 있는 카드 리스트는 아래와 같은 방식으로 구할 수 있습니다.
r = requests.get('https://steemmonsters.com/cards/collection/' +str(user))
data = r.json()
for card in data["cards"]:
monsterid = card["card_detail_id"]
uid = card["uid"]
xp = card["xp"]
buy_price = card["buy_price"]
market_id = card["market_id"]
edition = card["edition"]
gold = card["gold"]
print("monster id :", monsterid, " XP :", xp, " ed :", edition, " gold :", gold)
팔아야할 카드를 가져오자
앞에 나오는 코드를 기반으로 하여 팔고자 하는 종류의 카드 리스트를 받는 함수입니다. 이때 입력하는 정보는 카드 ID와 edition(알파/베타/킥) 그리고 gold 여부입니다.
def get_card_list_need_to_sell(card_id, ed, gd) :
r = requests.get('https://steemmonsters.com/cards/collection/' +str(user))
data = r.json()
targets = []
count = 1
for card in data["cards"]:
monsterid = card["card_detail_id"]
xp = card["xp"]
market_id = card["market_id"]
edition = card["edition"]
gold = card["gold"]
# id 같고, xp = 0이고, 아직 market에 나오지 않았고, edition, gold 같으면
if ( monsterid == card_id ) :
uid = card["uid"]
count+=1
if( xp == 0 and edition == ed and gold == gd and market_id == None) :
cards = [uid, 0]
targets.append(cards)
print ("target cnt : ", len(targets))
return (targets)
오늘은 팔아야할 카드를 얻는 것 까지 정리해 봅니다. 다음에는 팔아야할 카드를 custom json으로 steem 블럭체인에 올리는 방법에 대하여 알아보겠습니다.
이렇게 파이썬으로 매도 주문을 낼 수 있게 되니, 매매하기가 한결 편해졌네요.
500팩 사러 가즈아!!