· 5 years ago · May 07, 2020, 10:46 AM
1import requests
2import json
3from time import sleep
4from threading import Thread
5from steampy.client import SteamClient
6
7api = '********'
8api2 = '*******'
9i = 2
10# Set steam API key
11api_key = '*******'
12# Set path to SteamGuard file
13steamguard_path = 'C:/pytest/3/maFiles/********.maFile'
14# Steam username
15username = '*****'
16# Steam password
17password = '*******'
18
19
20def trades(): # Проверка на наличие трейдов
21 client = SteamClient(api_key)
22 client.login(username, password, steamguard_path)
23 print('Вошли в аккаунт. Проверяем наличие трейдов..')
24 Checking_trades()
25
26
27def Checking_trades():
28 while i > 1:
29 sleep(5)
30 try:
31 sleep(5)
32 a = requests.get('https://market.csgo.com/api/v2/trade-request-give-p2p-all?key=' + f'{api}').json()
33 print(a)
34 if a['success'] == False:
35 sleep(30)
36 print('Офферов пока нету, ждем когда что-то появится...')
37 elif a['success'] == True:
38 b = requests.get('https://market.csgo.com/api/ItemRequest/in/1/?key=' + f'{api}').json()
39 print(b)
40 print('Создал запрос на передачу! Ждем пока sda подтвердит...')
41 sleep(15)
42 except json.decoder.JSONDecodeError:
43 print('Ошибка при проверке трейд офферов. Возможно лагают сервера тма или стима')
44 sleep(10)
45 Checking_trades()
46
47
48def updating():
49 try:
50 i = 2
51 while i > 1: # Обновление ивентаря и включение продаж каждые 3 минуты
52 inventUpdate()
53 ping()
54 sleep(160)
55 except json.decoder.JSONDecodeError:
56 print('Вылезла ошибка! Отдыхаю 15 секунд')
57 sleep(15)
58 Thread(target=updating).start()
59
60
61def ping():
62 status = requests.get('https://market.csgo.com/api/v2/ping?key=' + f'{api2}')
63 status2 = status.json()
64 print(status2)
65 if status2['success'] == True:
66 print('Продажи были успешно включены!')
67
68 elif status2['success'] == False and status2['message'] == 'too early for pong':
69 print('Продажи и так были включены')
70
71 else:
72 print('Ошибка включения продаж! Попробую еще раз через 160 секунд...')
73
74
75def inventUpdate():
76 status = requests.get('https://market.csgo.com/api/v2/update-inventory/?key=' + f'{api2}').json()
77 print(status)
78 if status['success'] == True:
79 print('Инвентарь был успешно обновлен!')
80 elif status['success'] == False:
81 print('Ошибка обновления инвентаря! Попробую еще раз через 160 секунд...')
82
83
84def Invet_check(): # Загрузка инвента
85 response = requests.get('https://market.csgo.com/api/v2/my-inventory/?key=' + f'{api}')
86 b = response.json()
87 userData = json.load((open('C:\\pytest\\api.json')))
88 userData.update(b)
89 with open('C:\\pytest\\api.json', 'w') as file:
90 json.dump(userData, file, indent=4)
91 file.close()
92
93
94def itemsOnSale():
95 j = json.load((open('C:\\pytest\\api.json')))
96 for x in j['items']:
97 try:
98 response4 = requests.get(
99 'https://market.csgo.com/api/BestSellOffer/' + x['classid'] + '_' + x[
100 'instanceid'] + '?key=' + f'{api}')
101 b4 = response4.json()
102 try:
103 item_name = x['market_hash_name']
104 item_price = b4['best_offer']
105 item_priceRUB = float(item_price) / 100
106 item = f'{item_name}' + ' по цене ' + f'{item_priceRUB}' + ' rub' + ' был успешно выставлен на продажу!'
107 if int(item_price) > 1000000:
108 pass
109 else:
110 requests.get('https://market.csgo.com/api/SetPrice/new_' + x['classid'] + '_' + x[
111 'instanceid'] + '/' + f'{item_price}' + '/?key=' + f'{api}')
112 print(item)
113 except KeyError:
114 pass
115 except json.decoder.JSONDecodeError:
116 pass
117
118
119bot_action = input(
120 '"0" - включить продажи и обновление инвентаря' + '\n'
121 + '"1" - автоматичестки выставить все предметы по минимальной цене, включить передачу продажи' + '\n'
122 + '"2" - выставить предметы на продажу по минимальной цене' + '\n'
123 + 'Что нужно сделать?: ')
124
125if bot_action == '0':
126 Thread(target=updating).start()
127
128if bot_action == '1':
129 Thread(target=updating).start()
130 Thread(target=trades).start()
131 Invet_check()
132 itemsOnSale()
133
134if bot_action == '2':
135 Thread(target=updating).start()
136 Invet_check()
137 itemsOnSale()