Untitled
unknown
plain_text
2 years ago
11 kB
10
Indexable
import json
import websocket
with open('./buff.json', 'r') as f:
buff = json.load(f)
with open('./steam.json', 'r', encoding="utf-8") as f:
steam = json.load(f)
while True:
try:
header = [
"Pragma: no-cache",
"Cache-Control: no-cache",
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: en-GB,en-US;q=0.9,en;q=0.8",
"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits",
"Sec-WebSocket-Protocol: graphql-transport-ws"]
cookie = 'session=s:tSnj-WU-NSniq0tEjaC8ajpZaGqMIA32.DTNkM9JNqHv8a4uArbBq3IES4962wGjkkUFgiBAPYB8'
msg_con = '{"type":"connection_init"}'
msg_sub_remove = '{"id":"7e987ea8-36f1-4bf9-840e-289a69b4c106","type":"subscribe","payload":{"variables":{},"extensions":{},"operationName":"OnRemoveFromListedTrade","query":"subscription OnRemoveFromListedTrade { removeFromListedTrade { tradeId __typename }}"}}'
msg_sub_add = '{"id":"696f26db-b696-4564-a40e-2e1d5768fa64","type":"subscribe","payload":{"variables":{},"extensions":{},"operationName":"OnCreateTrade","query":"subscription OnCreateTrade($userId: ID) { createTrade(userId: $userId) { trade { ...Trade __typename } __typename }}fragment Trade on Trade { id status steamAppName cancelReason canJoinAfter markupPercent createdAt depositor { id steamId avatar displayName steamDisplayName __typename } promoCode { id percentageReward maxBalance __typename } expiresAt withdrawerSteamTradeUrl customValue withdrawer { id steamId avatar displayName steamDisplayName __typename } totalValue updatedAt tradeItems { id marketName value customValue itemVariant { ...ItemVariant __typename } markupPercent __typename } trackingType suspectedTraderCanJoinAfter joinedAt __typename}fragment ItemVariant on ItemVariant { id itemId name brand iconUrl value currency displayValue exchangeRate shippingCost usable obtainable withdrawable depositable externalId type category { id name __typename } color size rarity availableAssets { steamAssetId availableAt __typename } purchasable totalRequested totalAvailable totalFulfilled totalUnfulfilled createdAt __typename}"}}'
msg_sub_wallet = '{"id":"ad44beda-85a5-45c0-972f-f13007b0ba82","type":"subscribe","payload":{"variables":{},"extensions":{},"operationName":"OnUpdateWallet","query":"subscription OnUpdateWallet { updateWallet { wallet { id amount name __typename } walletChange { id type externalId valueChange __typename } __typename }}"}}'
msg_buy1 = '{"id":"138e87a5-842c-4f84-8b7b-ade522c06858","type":"subscribe","payload":{"variables":{"input":{"tradeIds":["--TRADEID--"],"recaptcha":"03AL8dmw98RhV6axsNrSfSbobgxj3WRlH86Qi5il4AixFP0NZ-fzRs4hTdvxfLvX5lEayuiff_tAwAieydD5qkpR8ALagmjhPpud0ZdAZdnTwqTnvjKBDWd_mJ9u7Mb12senBCpNuCtOFnJU8XTigAurhGKoN4HzvajfLPFahtAAC-YowrOLJbCDTxabH2hOmMhyUiCas-tvu3JuQZb4sRPrGKZyIHKUtLZLZ7AD9D_5irlLL10esRXgGo5krCeDpAnESpN-g0ve-FBNYOVPtGYiuG_uSHwuGCq7pXah9U15bjUpFg_HJV9Hr_1m4e1UEd1qgTkiVH9n_-jq4wpGA4nMIsciTlS7QJTTz9PIolobSO0nnyeUHOQMCxX14mKWmwAbj1XPNnuQlU8dSCvDxtMj9KN_rWruBY4Su2VpH-hhdSCagnBR3hG-7C9FaySq-0L_AYqTMh_CIiNdKt91PHHSawCLLmncqd09BMgNWB2y5v4lSBy8wZFiBZvbCjg7iHqJ2npRySMxBTvHFwtpUxPLAZ2cy7w_Faa_gpZklqtLBhsPjxEFwturSS-T6jHzsV5rDtWGEzPgMFdaC91ief6POI0tZ2yeivLHcuvMtQyJejW64u1sI2VQdbw4OfLyKUAO2Rbz3Vm9xxwQAIcxbFWYe4SyA92q1JyaiodduovDmRIkQRbKEHbVg96_LX8_aZAEc2ItnpSTBXoizHR96Rb6o7XTu8WvMcbfZRkARuOMIvSAwZlZyN4nnUzFvLdY5b01hjJqvD6h4uixsJvtsQL4o6yM0CyzVH56SPY70XL3QryKe0uPkCccqHZtACPYGLplnPYOC6599gAOdnqND5znccdbeb5LxScYvan6mAbxkp9Y61QtePkdqwTVkiw5u8Hss2GGwTMC4Gv1Y2QkXMvHLqn0B0Sus1rTyrCT-wcLN2qwttYgVPJVOcjACF99KnO-Vc03cyKdWW2wfVe61xle0oTw9LGOmeikYk46LEIx1Lt3KEd9IRXRWF0FSnoQ9kCno8th8pcprk0NMlNN_YSkQH5of5p4TmQQadwnhIUt7a4LB34ycYq-h_B2XrStxeeHseBqvnU7H_qE25LhwU832E0PKlc9Llaa1Y70raDI6q2bDwErIlwFRGnnf_-EiRndAjrEoUgxnwPpDTBW0Omnq3NkO4g6KqS99-S4hCC-1iZjC6W2vZp_2QJmvgr1UFkvYkGwRqzPo-QwW67Y7kuYeTLoq_zKcmZTqh6EdlmfxsL2-rkocettXFl3hPyHCXhYJ-ja7ypfWhCwAj_am7SSUJ685N76etsnrMFEaQO0vaS5kR9azA8a1BZsBnguhUUom0ubztcXlo3y_K5dh9wWnGywh-2y723VQisuf_rUcItVdFhW7IxN7xcQH8WkWRWYJXmF89bic7iCdtftb3-x3a_oHILpok8mmGylJq4DrJfRIPdD6g-H-4eowlL4DYPHs_Ncm1UxwtWiG6zH7nPr-9r_6gqUCTNw"}},"extensions":{},"operationName":"JoinTrades","query":"mutation JoinTrades($input: JoinTradesInput!) { joinTrades(input: $input) { trades { id status totalValue updatedAt expiresAt withdrawer { id steamId avatar displayName steamDisplayName __typename } __typename } __typename }}"}}'
msg_buy2 = '{"id":"138e87a5-842c-4f84-8b7b-ade522c06858","type":"subscribe","payload":{"variables":{"input":{"tradeIds":["--TRADEID--"],"recaptcha":"03AL8dmw-mKumz8NlsiHxKeVO_whWTAjzqKTPb4tOLSA7jbVx54-4BjU9y6z7200J6NkmJA-Hz6cZCrekzxzndxxgR3Qeh89tQk0xNcs61CC9g_RLYPiBmx1bAcixy0MUpVDJ6Oy3qsQVO1Jme23Gc1qQcxVQ9W5r2P-oQg0gnWPdCUAZ3rhpzytNBqo5fUVwqgLWs5ZyrIfFFf8T4aZadvb1EddCynXIj5WwofY_NLbZ5D-HU8ibeuD8pzZ2oSY6qywpIDPMngaX74e-G71GQmgj10_5_uRzsUZB6VhdHyMiJGPTTzOn9JiZP_1lrURSpBZoTn69jNQfAJxeTttJWYCGnqBqGUulbrvIHMQLEhqS69HF2NJsARpYsHvM4CRqxSG5T3wPY2u8rD6bp5vDXfDg3rFrZbeqoceuGFIivCXL2sF5g_TAFHGzv5XJFD04B1mVBk0vOnM-VnAttZK5KidOkLSm6eLZeCVmPgoJhpzsT8_0NODhlhI3d_iIdcK80OzP3RbgS8UG14rp-5iEalyJpfZNjK2ds-9RY6WicZgfHn1J_s2zuCefdfc591oFapEp3WacA-Yy426j8Bfu80FJJN9Mg0pT9isOtnZvdZkNNnYhI1C2e9cJr0vhC25FH4Vmqu0pFtT1FiZ_58tymRcri19CxyeH1S5yGnPwX1UCHn25BLC1zDGVt4cqiOhDu2jrgZaifJp7MlGSxW14s9pxMmLm-8w98WSvTyhhbDHfcS_coWUbdt0gA6HhH3c-KezDeSWlF2Dtt6ChXOJfBjIOq5dPNF6nbISQRneKCXbEudG9lG0sLAQqcGJ8pGlzvNtZdXPoTQTCD9jGNvR2ImjjhUfX83p-9pPH0IywD-eY4kKrhex2dHwbVgF_cKkc_7yysVOM1iIyOhcvEEZXN6Uvn8HMYR0ukYMOWDUamcWs0P10gJOfW7gLWFVGmihty8R63tfkjOV_fxLzdeLqerlogJ4MOTA6RfDaibsVNLMc8DZyFPzBtgry3dy7ujI5m_H_hzaCp-3P5KiOL7O6KbHKwiSYMBCzSMFMDm8RnX5BxhYCQTxt_ce8t4M7DJHVWAlEwG18ElbIa9xEkO4DKoAZ4qBjBs9uZ-G0ZliWBEDIukI9H0AUHow60lKf44TMkKl8wC9hpmmEkTKdyL6jAcYUUtHs8pzcooqRCTkQJ4JxAv7ImCY--tFhijbpjeGktR9l5Hq45Y3qZC3QQ5rpX2u9UKboXqvSFO5RFRruD9SIzYfE6ALn8Kaii7Cayvu2ZsIl2c--nzJzEsZNs3BIu8_7wh1yrqs6wkFMzPu6fcA-B_gE4YmqAKZ1GyEXcga5RYgQETV08W13Oi-Zy0pGMVQdSPUddlTxWgKNPp3j9BQY3bJ6hCZ31g28iWfK2wKwVkm2L6sOFzavzlZpRG9BQyd7QXU5SHsDZaBQ5qfNreSQxGqYjgBfFr2awq5KREaI4cRXJeoXVROAQp0hH1tT8rQtEfcuZNkLUTA"}},"extensions":{},"operationName":"JoinTrades","query":"mutation JoinTrades($input: JoinTradesInput!) { joinTrades(input: $input) { trades { id status totalValue updatedAt expiresAt withdrawer { id steamId avatar displayName steamDisplayName __typename } __typename } __typename }}"}}'
msg_sub_complete = '{"id":"a0d79d83-c9f4-4fac-b7c5-a013ce121920","type":"complete"}'
current = 1
ws = websocket.create_connection("wss://api.csgoroll.com/graphql", header=header, origin="https://www.csgoroll.com", cookie=cookie)
ws.send(msg_con)
print("connection message sent")
while not "connection_ack" in ws.recv():
pass
print("connection ack received")
ws.send(msg_sub_add)
#ws.send(msg_sub_remove)
ws.send(msg_sub_wallet)
#ws.send(msg_sub_complete)
print("subscription messages sent")
trades = {}
balance = 30
def process(data):
try:
if 'createTrade' in data['payload']['data']:
process_create_trade(data)
except Exception:
pass
try:
if 'removeFromListedTrade' in data['payload']['data']:
process_remove_trade(data)
except Exception:
pass
try:
if 'updateWallet' in data['payload']['data']:
process_wallet_update(data)
except Exception:
pass
try:
if 'joinTrades' in data['payload']['data']:
process_success(data)
except Exception:
pass
try:
if 'error' in data['payload']:
process_failure(data)
except Exception:
pass
def process_create_trade(data):
global trades
id = data['payload']['data']['createTrade']['trade']['id']
name = data['payload']['data']['createTrade']['trade']['tradeItems'][0]['marketName']
value = data['payload']['data']['createTrade']['trade']['tradeItems'][0]['value']
if id in trades.keys():
return
trades[id] = (id, name, value)
prices = steam.get(name)
if prices is None or "buy_max_price" not in prices:
current_buy_margin = -1
else:
current_buy_margin = prices["buy_max_price"]/value - 1
if prices is None or "sell_min_price" not in prices:
current_sell_margin = -1
else:
current_sell_margin = prices["sell_min_price"]/value - 1
if current_buy_margin - 0.1 > current_sell_margin:
to_buy = (0.35 <= current_sell_margin and 0.1 < current_buy_margin)
else:
to_buy = (0.2 <= current_buy_margin) or (0.35 <= current_sell_margin and 0.1 < current_buy_margin)
if value > 50:
buy(id)
print(f"Trying to buy: {name:<70} coins: {value:<7} buy margin: {current_buy_margin:<7.2f} sell margin: {current_sell_margin:<7.2f}")
def process_remove_trade(data):
global trades
id = data['payload']['data']['removeFromListedTrade']['tradeId']
def process_wallet_update(data):
global balance
balance = data['payload']['data']['updateWallet']['wallet']['amount']
def process_success(data):
print(f"Success: {data}")
def process_failure(data):
print(f"Failure: {data}")
def buy(id):
global msg_buy1,msg_buy2,current
if current == 1:
msg_buy = msg_buy1
current = 2
else:
msg_buy = msg_buy2
current = 1
msg = msg_buy.replace('--TRADEID--', id)
ws.send(msg)
while True:
new = ws.recv()
data = json.loads(new)
process(data)
except Exception:
pass
Editor is loading...