· 6 years ago · Apr 04, 2020, 05:00 PM
1from os import listdir as files
2from threading import Thread
3from json import JSONDecodeError
4from enum import Enum
5
6import requests as r
7import colorama as cl
8import time as t
9from steampy.client import SteamClient
10from steampy.exceptions import ConfirmationExpected
11
12
13
14
15
16
17api_key = str(input('Введите apikey tm: '))
18maFile = tuple(filter(lambda str: str.endswith('maFile'), files()))
19
20login = maFile[0].split('-')[0]
21password = maFile[0].split('-')[1][:-7]
22key = input(
23 cl.Fore.YELLOW +
24 'Введите Steam API Key: ' +
25 cl.Fore.MAGENTA
26)
27
28steam_client = ''
29t.sleep(2)
30def update():
31 while True:
32 global steam_client
33 steam_client = SteamClient(key)
34 steam_client.login(login, password, maFile[0])
35 t.sleep(2)
36
37 URL_ping = 'https://market.csgo.com/api/v2/ping?key=' + api_key
38 t.sleep(2)
39 response_ping = r.get(URL_ping).json()
40 if response_ping['success'] == True :
41 print(cl.Fore.GREEN + 'Включил продажи ')
42 print(cl.Fore.YELLOW + 'Перезапустил продажи ')
43
44 URL_get_money = 'https://market.csgo.com/api/v2/get-money?key=' + api_key
45 t.sleep(2)
46 response_get_money = r.get(URL_get_money).json()
47 print(cl.Fore.RED + '---------------------------------')
48 print(cl.Fore.RED + 'Ваш баланс ' + str(response_get_money['money']) + str(response_get_money['currency']) )
49 t.sleep(3600)
50
51
52
53
54
55
56def mainFunc():
57 while True:
58 global steam_client
59 #узнаем какие предметы у нас выставлены на продажу и запоминаем о них информацию.
60 def rename_prices():
61 URL_rename_prices = 'https://market.csgo.com/api/v2/items?key='+ api_key
62 t.sleep(2)
63 respone_items = r.get(URL_rename_prices).json()
64
65 if respone_items['items'] == None:
66 print('Предметы не выставлены вами на продажу')
67
68 #начинается проверка на то что расположен ли ваш лот первый
69 for save_data_items in respone_items['items']:
70 if save_data_items['position'] >1: #проверка поняла что наш предмет перебили, начинаем находить минимальную стоимость по последнему выставленному лоту
71 t.sleep(2)
72 response_price_last_lot = r.get('https://market.csgo.com/api/v2/search-item-by-hash-name?key='+ api_key + '&hash_name=' + save_data_items['market_hash_name']).json()['data'][0]['price']
73 #происходит уменьшение цены на 1 копейку
74 URL_set_price = 'https://market.csgo.com/api/v2/set-price?key='+ api_key + '&item_id='+ save_data_items['item_id']+ '&price=' + str(response_price_last_lot - 1)+'&cur=RUB'
75 t.sleep(2)
76 respone_set_price = r.get(URL_set_price).json()
77 if respone_set_price['success']: #проверка что мы получили в ответ на наш гет запросс, если цена изменилась успешно, мы получим информацию через print
78 print(cl.Fore.GREEN + 'Цена обновлена',save_data_items['market_hash_name'],str((response_price_last_lot - 1)/100))
79
80 def check_na_status2(): #пытаемся найти предмет, который у вас купили
81 URL_check_na_status2 = 'https://market.csgo.com/api/v2/items?key=' + api_key
82 t.sleep(2)
83 response_check_na_status2 = r.get(URL_check_na_status2).json()
84 print(response_check_na_status2)
85 for i in response_check_na_status2['items']:
86 if i['status'] == '2' : #если статус предмета равен 2 , значит предмет куплен и мы начинаем процесс передачи предмета,начиная с того что бы маркет отправил нам трейд.
87 URL_sent_market_trade = 'https://market.csgo.com/api/v2/trade-request-give-p2p?key=' + api_key
88 t.sleep(2)
89 response_trade_tm = r.get(URL_sent_market_trade).json() #отправляем запросс на то что бы маркет скинул нам трейд, который нам останется потвердить.
90 print(response_trade_tm)
91 if response_trade_tm['success']: #проверяем успешно ли был создан трейд и идем дальше
92 message_tm = response_trade_tm['offer']['tradeoffermessage']
93 partner_tm = response_trade_tm['offer']['partner']
94 t.sleep(2)
95 resp = r.get('http://api.steampowered.com/IEconService/GetTradeOffers/v1/?key=' + key + '&get_sent_offers=1&time_historical_cutoff=100').json()
96 for k in resp['response']['trade_offers_sent']:
97
98 if message_tm == k['message']:
99 partner = k['accountid_other']
100 message = k['message']
101 offer_id = k['tradeofferid']
102 t.sleep(2)
103 try:
104 steam_client._confirm_transaction(offer_id)
105 except ConfirmationExpected:
106 pass
107 t.sleep(2)
108 else:
109 t.sleep(2)
110 check_na_status2()
111 t.sleep(2)
112
113 else:
114 t.sleep(2)
115 rename_prices() #возвращаемся к методу проверка цены на 1 место, что бы опять сделать все проверки.
116 t.sleep(2)
117 rename_prices()
118 check_na_status2()
119 t.sleep(60)
120Thread(target=update).start()
121Thread(target=mainFunc).start()