[스팀몬스터] 파이썬으로 카드 매도 주문하기(2/2)

in #kr5 years ago (edited)

1편에 이어서 2편 정리합니다.
1편에서는 보유하고 있는 스몬 카드를 가져오는 방법에 대하여 정리되어 있습니다.
[스팀몬스터] 파이썬으로 카드 매도 주문하기(1/2)


1편에서 만든 팔 카드 리스트를 가져오는 함수를 이용합니다.

get_card_list_need_to_sell(1, 1, 0)  #  id, edition, gold

이 함수는 아래와 같이 Goblin Shaman 카드 중 팔 수 있는 카드의 리스트를 가져옵니다. 가장 밑에 있는 카드가 팔 수 있는 상태입니다.

image.png

target cnt : 1
C1-1-60MYKGY7WG 0

카드가 복수개일 수 있으므로, 팔 카드 수만큼 한 장씩 판매를 하는 함수는 아래와 같습니다. 카드 주문을 내고 나면 주문을 내었음을 card[1]에 표시합니다.

def sell_one_card(cardid,price):
    s = '[{"cards":["'+cardid+'"],"currency":"USD","price":"'+str(price)+'","fee_pct":500}]'
    json = s
    ops = [
        operations.CustomJson(**{
            "from": user,
            "id": "sm_sell_cards",
            "json": json,
            "required_auths": [],
            "required_posting_auths": [user],
        }),
    ]
    tb = TransactionBuilder()
    tb.appendOps(ops)
    tb.appendSigner(user, "posting")
    tb.sign()
    tb.broadcast()

for card in sell_list :
     sell_one_card(card[0], 10.00)  # card[0] : 판매할 카드 ID,  팔 가격 : $10.00
     card[1] = 1  # order 하였음.

이렇게 주문을 낸 결과는 아래와 같습니다. 주문이 잘 들어갔군요.

image.png

image.png


동일한 카드를 한 번에 한 개씩만 주문하면 시간도 많이 걸리고 RC도 많이 듭니다. 그래서 여러 카드를 동시에 주문해야 효율적일 것 같습니다.

그러면 여러 카드를 동시에 주문하는 방법에 대하여 알아보겠습니다.

여러 카드를 팔기 위한 새로운 함수를 만들어 봅니다. 매도를 위한 json 코드를 팔 카드 수량만큼 만들어서 한꺼번에 매도 주문을 합니다.

# card_list에 있는 카드 중 팔 수 있는 카드를 count 수 만큼 price에 한꺼번에 매도 주문
def sell_multiple_card(card_list, count, price):
    found = 0
    json = [] 
    for card in card_list :
        if ( found < count ) :
            if ( card[1] == 0 ) : # 아직 팔지 않은 card
                one = {"cards":[card[0]],"currency":"USD","price":str(price),"fee_pct":500}
                json.append(one)
                found += 1
        else :
            break;

    ops = [
        operations.CustomJson(**{
            "from": user,
            "id": "sm_sell_cards",
            "json": json,
            "required_auths": [],
            "required_posting_auths": [user],
        }),
    ]
    tb = TransactionBuilder()
    tb.appendOps(ops)
    tb.appendSigner(user, "posting")
    tb.sign()
    tb.broadcast()

이 함수를 부르는 쪽에는 아래와 같이 작성해 주면 됩니다.

# 복수개 팔 때 (sell_list 중 3개를 $10에 팔자)
sell_multiple_card(sell_list, 3, 10.00) 

sell_multiple_card()에서 생성한 custom_json 문장과 주문결과입니다.
image.png

image.png

파이썬 코드 덕분에 좀 더 편하게 주문을 할 수 있는 토대는 마련하였습니다. 카드 종류도 많고, 가격도 틀리기 때문에 이러한 부분을 반영하는 개발을 더 해야할 듯 합니다.

Sort:  

뭔가 어렵지만 멋지네요 +_+

헐~ 괜히 봤어요~ ㅋㅋㅋㅋ

새로운 자극이 항상 필요합니다. ㅎ

전 자극에 민감해서요~ 새로운 자극은 싫습니다~ ㅎㅎ

워 여기에 능력자분들이 많으시네요 ㄷㄷ

한장씩 노가다도 괜찮으니
좀 팔리면 좋겠습니다 ㅋ

아 그렇군요. 지금은 팔리지가 않는군요. ㅎ

파이썬으로 이게 된다닝 와~~ 대단하십니닷~!!

Hi @tradingideas!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.851 which ranks you at #4336 across all Steem accounts.
Your rank has improved 24 places in the last three days (old rank 4360).

In our last Algorithmic Curation Round, consisting of 290 contributions, your post is ranked at #172.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • You have already shown user engagement, try to improve it further.

Feel free to join our @steem-ua Discord server

멋지십니다 :)

전 nodejs 로 매도를 ... ㅋㅋ

매수 프로그램도 있긴 한데 ... 매수는 ㅜㅜ 그냥 직접 눈으로 보고 하는 것이 좋을거 같아요

매수는 아무래도 보고 하는 것이 좋을 듯 합니다. 버그가 있을 수 있으니.. 항상 조심..

Coin Marketplace

STEEM 0.24
TRX 0.11
JST 0.033
BTC 62441.28
ETH 3020.61
USDT 1.00
SBD 3.79