4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

How to rent multiple Cards in Python

This code is based on @wohefengyiyang

image.png

On this tutorial were only covering the Automatic method.

Step 1

import requests, os
from beem import Hive


os.system('clear')
import os,sys, requests, json, time

c_l = open('cards.txt')
API2 = "https://api2.splinterlands.com"

logo = '''\033[0;35m


  ======================================
  [ SPLINTERS AUTO RENT MULTIPLE CARDS ]
  [        Develop by: Edmark          ]
  ======================================



'''

print(logo)

try:
  f = open('acc.txt')
  n = f.readlines()


  name = n[0]

  res = " " in name

  mao = name.split()[0]
  posting = name.split()[-1]
  active = name.split()[-2]
  
  username = mao

  #  your posting keyword and active keyword
  passwords = [posting, active]

except:
  print("[!] Incorrect account...")
  input("\n\n\n\n[?] Press Enter to continue.....")
  sys.exit()  
  

hive = Hive(keys=passwords)


url = "https://api.splinterlands.io/cards/get_details"
l = requests.get(url).json()

fi = open('cards.txt')








############################





      
      
      

      


          

    
    

      
def main():
  class Card:
    market_id = ''
    uid = ''
    detail_id = 0
    price = 0

    def __init__(self, m, u, d, p):
      self.market_id = m
      self.uid = u
      self.detail_id = d
      self.price = p

    def __lt__(self, other):
      return self.price < other.price


  def get_rent_cards_xp(card_id: int, edition: int, gold: bool, xp: int, price: float) -> list:
      url = API2 + "/market/for_rent_by_card"
      request: dict = {"card_detail_id": card_id,
                     "gold": gold,
                     "edition": edition}
      rent_cards = requests.get(url, params=request).json()
      cards = [card for card in rent_cards if card.get("xp") >= xp and float(card.get("buy_price")) <= price]
      v_cards = []
      for c in cards:
          v_cards.append(Card(c.get('market_id'), c.get('uid'), c.get('card_detail_id'), float(c.get('buy_price'))))
      v_cards.sort()
      return v_cards

  def verify(market_id: str, uid: str, card_detail_id: int) -> bool:
      url = API2 + "/market/validateListing"
      request: dict = {"card_detail_id": card_detail_id,
                     "uid": uid,
                     "market_id": market_id}
      return requests.get(url, params=request).json().get('isValid')




  count = 0
  for zaw in fi:
    count += 1
    ci = int(zaw.strip())
    def rent_card(player: str, card_ids: list, days: int, currency: str):
      for i in l:
        if i['id'] == ci:
          data: dict = {"items": card_ids,
                  "currency": currency,
                  "days": days,
                  "app": "splinterlands/0.7.139"}
          hive.custom_json("sm_market_rent", data, required_auths=[player], required_posting_auths=[])
          print("\033[1;33m", count, player, 'rented\033[1;36m', i['name'], "\033[1;32mSuccessfully.")
        



        
    
    def sulod():
      for i in l:
        if i['id'] == ci:
          cards_sorted = get_rent_cards_xp(i['id'], i['editions'], False, 1, 5)
          for card_sorted in cards_sorted:
            if verify(card_sorted.market_id, card_sorted.uid, card_sorted.detail_id):
              rent_card(username, [card_sorted.market_id], 1, 'DEC')
              break  
            print('no available cards')

    sulod()      
    




main()





Copy the above code and save as main.py .lets advance to the next step😃

Step 2

username posting_key active_key

The second code above save that as acc.txt and edit ur credentials

Step 3

440
158
395

copy and save step 3 as cards.txt, this numbers are card id that we want to rent. you can add card id as much as you like.😋

And for the moment of truth🙌
now run the first script as:

python3 main.py

This would be the output.enjoy🙌👏

image.png

0 upvotes $0.00

Replies (3)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: