Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import math
- import urllib
- import time
- from datetime import datetime
- effect_dict={'6':'Green Confetti','7':'Purple Confetti','8':'Haunted Ghosts','9':'Green Energy','10':'Purple Energy','11':'Circling TF Logo','12':'Massed Flies','13':'Burning Flames','14':'Scorching Flames','17':'Sunbeams','29':'Stormy Storm','33':'Orbiting Fire','34':'Bubbling','35':'Smoking','36':'Steaming','38':'Cloudy Moon','56':'Kill-a-Watt','57':'Terror-Watt','58':'Cloud9','70':'Time Warp','15':'Searing Plasma','16':'Vivid Plasma','18':'Circling PeaceSign','19':'Circling Heart','30':'Blizzardy Storm','31':'Nutsn Bolts','32':'Orbiting Planets','37':'Flaming Lantern','39':'Cauldron Bubbles','40':'Eerie Orbiting Fire','43':'Knifestorm','44':'Misty Skull','45':'Harvest Moon','46':'Its A Secret To Everybody','47':'Stormy 13th Hour','59':'Aces High','60':'Dead Presidents','61':'Miami Nights','62':'Disco Beat Down','63':'Phosphorous','64':'Sulphurous','65':'Memory Leak','66':'Overclocked','67':'Electrostatic','68':'Power Surge','69':'Anti-Freeze','71':'Green Black Hole','72':'Roboactive','73':'Arcana','74':'Spellbound','75':'Chiroptera Venenata','76':'Poisoned Shadows','77':'Something Burning This Way Comes','78':'Hellfire','79':'Darkblaze','80':'Demonflame','3001':'Showstopper','3003':'Holy Grail','3004':'72','3005':'Fountain of Delight','3006':'Screaming Tiger','3007':'Skill Gotten Gains','3008':'Midnight Whirlwind','3009':'Silver Cyclone','3010':'Mega Strike','81':'Bonzo The All-Gnawing','82':'Amaranthine','83':'Stare From Beyond','84':'The Ooze','85':'Ghastly Ghosts Jr','86':'Haunted Phantasm Jr','3011':'Haunted Phantasm','3012':'Ghastly Ghosts','87':'Frostbite','88':'Molten Mallard','89':'Morning Glory','90':'Death at Dusk','91':'Abduction','92':'Atomic','93':'Subatomic','94':'Electric Hat Protector','95':'Magnetic Hat Protector','96':'Voltaic Hat Protector','97':'Galactic Codex','98':'Ancient Codex','99':'Nebula','100':'Death by Disco','101':'Its a mystery to everyone','102':'Its a puzzle to me','103':'Ether Trail','104':'Nether Trail','105':'Ancient Eldritch','106':'Eldritch Flame','701':'Weapon Effect','702':'Weapon Effect','703':'Weapon Effect','704':'Weapon Effect','107':'Neutron Star','108':'Tesla Coil','109':'Startstorm Slumber','110':'Starstorm Insomnia','3014':'Spectral Swirl','3015':'Infernal Flame','3013':'Hellish Inferno','3016':'Infernal Smoke'}
- with open('steam_id.txt', 'r') as myfile:
- s = str(myfile.read().replace('\n', ''))
- steam_id = s
- open('output.txt','w').close()
- with open('api_key.txt', 'r') as myfile:
- backpack_api_token = myfile.read().replace('\n', '')
- defindex_dict = eval(open('defindex_map.json').read())
- def unusual_buyorder_scan():
- open('output.txt','a').write('UNUSUAL BUYORDERS'+'\n')
- curr_page = 1
- while True:
- payload = {'key':backpack_api_token,'item_names':1,'intent':'buy','fold':1,'page_size':'30','steamid':s,'quality':'5','page':curr_page}
- #print(payload)
- url = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload)
- r1 = requests.get(url)
- ret1 = r1.json()
- for hats in ret1['buy']['listings']:
- #print(defindex_dict[listing['item']])
- if 'metal' not in hats['currencies'].keys():
- hats['currencies']['metal'] = 0;
- if 'keys' not in hats['currencies'].keys():
- hats['currencies']['keys'] = 0;
- my_keys = hats['currencies']['keys']
- my_metal = hats['currencies']['metal']
- curr_page1 = 1
- encoded_name = defindex_dict[hats['item']['defindex']]
- while True:
- if 'attributes' in hats['item'].keys():
- #print(hats['item']['name']+str(hats['item']['attributes'][0]['float_value']))
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'buy','fold':1,'page_size':'30','item':encoded_name,'quality':'5','particle':hats['item']['attributes'][0]['float_value'],'page':curr_page1}
- else:
- #print(hats['item']['name'])
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'buy','fold':1,'page_size':'30','item':encoded_name,'quality':'5','page':curr_page1}
- iurl = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload1)
- ir1 = requests.get(iurl)
- iret1 = ir1.json()
- for buyers in iret1['buy']['listings']:
- if 'metal' not in buyers['currencies'].keys():
- buyers['currencies']['metal'] = 0
- if 'keys' not in buyers['currencies'].keys():
- buyers['currencies']['keys'] = 0
- buyers_keys = buyers['currencies']['keys']
- buyers_metal = buyers['currencies']['metal']
- buyers_name = buyers['steamid']
- if 'attributes' in hats['item'].keys():
- effect = effect_dict[str(hats['item']['attributes'][0]['float_value'])]
- else:
- effect = 'None'
- if 'attributes' in hats['item'].keys() and 'attributes' in buyers['item'].keys():
- if hats['item']['attributes'][0]['float_value'] == buyers['item']['attributes'][0]['float_value']:
- #print(buyers)
- if buyers_keys > my_keys or (buyers_keys == my_keys and buyers_metal > my_metal):
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(encoded_name+' '+effect, str(my_keys),str(my_metal),buyers_name,str(buyers_keys),str(buyers_metal))
- open('output.txt','a').write(output+'\n')
- print(output)
- elif 'attributes' not in hats['item'].keys() and 'attributes' not in buyers['item'].keys():
- if buyers_keys > my_keys or (buyers_keys == my_keys and buyers_metal > my_metal):
- #print(buyers)
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(encoded_name+' '+effect, str(my_keys),str(my_metal),buyers_name,str(buyers_keys),str(buyers_metal))
- print(output)
- open('output.txt','a').write(output+'\n')
- buyers_name = ''
- buyers_keys = ''
- buyers_metal = ''
- curr_page1 = curr_page1 + 1
- if curr_page1 > math.ceil(iret1['total'] / 30) or iret1['total'] < 31:
- break
- curr_page = curr_page + 1
- if curr_page > math.ceil(ret1['total'] / 30) or ret1['total'] < 31:
- break
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : '+'UNUSUAL BUYORDER SEARCH COMPLETED')
- def unusual_sellorder_scan():
- open('output.txt','a').write('UNUSUAL SELLORDERS'+'\n')
- curr_page = 1
- while True:
- payload = {'key':backpack_api_token,'item_names':1,'intent':'sell','fold':1,'page_size':'30','steamid':s,'quality':'5','page':curr_page}
- #print(payload)
- url = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload)
- r1 = requests.get(url)
- ret1 = r1.json()
- for hats in ret1['sell']['listings']:
- #print(defindex_dict[listing['item']])
- if 'metal' not in hats['currencies'].keys():
- hats['currencies']['metal'] = 0;
- my_keys = hats['currencies']['keys']
- my_metal = hats['currencies']['metal']
- curr_page1 = 1
- encoded_name = defindex_dict[hats['item']['defindex']]
- while True:
- if 'attributes' in hats['item'].keys():
- #print(hats['item']['name']+str(hats['item']['attributes'][0]['float_value']))
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'sell','fold':1,'page_size':'30','item':encoded_name,'quality':'5','particle':hats['item']['attributes'][0]['float_value'],'page':curr_page1}
- else:
- #print(hats['item']['name'])
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'sell','fold':1,'page_size':'30','item':encoded_name,'quality':'5','page':curr_page1}
- iurl = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload1)
- ir1 = requests.get(iurl)
- iret1 = ir1.json()
- for buyers in iret1['sell']['listings']:
- if 'metal' not in buyers['currencies'].keys():
- buyers['currencies']['metal'] = 0
- if 'keys' not in buyers['currencies'].keys():
- buyers['currencies']['keys'] = 0
- buyers_keys = buyers['currencies']['keys']
- buyers_metal = buyers['currencies']['metal']
- buyers_name = buyers['steamid']
- if 'attributes' in hats['item'].keys():
- effect = effect_dict[str(hats['item']['attributes'][0]['float_value'])]
- else:
- effect = 'None'
- if 'attributes' in hats['item'].keys() and 'attributes' in buyers['item'].keys():
- if hats['item']['attributes'][0]['float_value'] == buyers['item']['attributes'][0]['float_value']:
- #print(buyers)
- if buyers_keys < my_keys or (buyers_keys == my_keys and buyers_metal < my_metal):
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(encoded_name+' '+effect, str(my_keys),str(my_metal),buyers_name,str(buyers_keys),str(buyers_metal))
- open('output.txt','a').write(output+'\n')
- print(output)
- elif 'attributes' not in hats['item'].keys() and 'attributes' not in buyers['item'].keys():
- if buyers_keys < my_keys or (buyers_keys == my_keys and buyers_metal < my_metal):
- #print(buyers)
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(encoded_name+' '+effect, str(my_keys),str(my_metal),buyers_name,str(buyers_keys),str(buyers_metal))
- print(output)
- open('output.txt','a').write(output+'\n')
- buyers_name = ''
- buyers_keys = ''
- buyers_metal = ''
- curr_page1 = curr_page1 + 1
- if curr_page1 > math.ceil(iret1['total'] / 30) or iret1['total'] < 31:
- break
- curr_page = curr_page + 1
- if curr_page > math.ceil(ret1['total'] / 30) or ret1['total'] < 31:
- break
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : '+ 'UNUSUAL SELLORDER SEARCH COMPLETED')
- def get_buyorders(item_name,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name,item_defindex):
- curr_page1 = 1
- my_keys = item_keys
- my_metal = item_metal
- buyers_list = []
- while True:
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'buy','fold':1,'page_size':'30','item':item_encoded_name,'quality':item_quality,'killstreak_tier':item_killstreaker,'page':curr_page1}
- iurl = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload1)
- ir1 = requests.get(iurl)
- iret1 = ir1.json()
- #print(iret1)
- if curr_page1 > 1:
- time.sleep(2)
- if 'response' in iret1.keys() and 'success' in iret1['response'].keys() and str(iret1['response']['success']) == '0':
- time.sleep(5)
- get_buyorders(item_name,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name,item_defindex)
- return
- else:
- for buyers in iret1['buy']['listings']:
- if 'metal' not in buyers['currencies'].keys():
- buyers['currencies']['metal'] = 0
- if 'keys' not in buyers['currencies'].keys():
- buyers['currencies']['keys'] = 0
- buyers_keys = buyers['currencies']['keys']
- buyers_metal = buyers['currencies']['metal']
- buyers_name = buyers['steamid']
- if buyers_name != steam_id and buyers['item']['name'] == item_name:
- if (buyers_keys < my_keys or (buyers_keys == my_keys and buyers_metal < my_metal)):
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(item_name, str(my_keys),str(my_metal),buyers_name,str(buyers_keys),str(buyers_metal))
- print(output)
- open('output.txt','a').write(output+'\n')
- buyers_name = ''
- buyers_keys = ''
- buyers_metal = ''
- curr_page1 = curr_page1 + 1
- if curr_page1 > math.ceil(iret1['total'] / 30) or iret1['total'] < 31:
- break
- def buyorder_scan():
- open('output.txt','a').write('OTHER BUYORDERS'+'\n')
- curr_page = 1
- while True:
- payload = {'key':backpack_api_token,'item_names':1,'intent':'buy','fold':1,'page_size':'30','steamid':s,'page':curr_page}
- #print(payload)
- url = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload)
- r1 = requests.get(url)
- ret1 = r1.json()
- #print(ret1)
- for item in ret1['buy']['listings']:
- if str(item['item']['quality']) != str(5) and item['item']['defindex'] in defindex_dict.keys():
- if 'metal' not in item['currencies'].keys():
- item['currencies']['metal'] = 0;
- if 'keys' not in item['currencies'].keys():
- item['currencies']['keys'] = 0
- item_keys = item['currencies']['keys']
- item_metal = item['currencies']['metal']
- item_name = item['item']['name']
- item_defindex = item['item']['defindex']
- item_encoded_name = defindex_dict[item['item']['defindex']]
- item_quality = item['item']['quality']
- item_killstreaker = 0
- if 'attributes' in item['item'].keys():
- for stuff in item['item']['attributes']:
- if stuff['defindex'] == 2025:
- item_killstreaker = stuff['float_value']
- item_listing_id = item['id']
- item_listing_message = item['details']
- item_listing_offers = item['offers']
- item_listing_buyout = item['buyout']
- #print(item)
- get_buyorders(item_name,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name,item_defindex)
- curr_page = curr_page + 1
- if curr_page > math.ceil(ret1['total'] / 30) or ret1['total'] < 31:
- break
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : '+ 'OTHER BUYORDERS SEARCH COMPLETED')
- def get_sellorders(item_name,item_id,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name):
- curr_page1 = 1
- my_keys = item_keys
- my_metal = item_metal
- sellers_list = []
- while True:
- payload1 = {'key':backpack_api_token,'item_names':1,'intent':'sell','fold':1,'page_size':'30','item':item_encoded_name,'quality':item_quality,'killstreak_tier':item_killstreaker,'page':curr_page1}
- iurl = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload1)
- ir1 = requests.get(iurl)
- iret1 = ir1.json()
- #print(iret1)
- if curr_page1 > 1:
- time.sleep(2)
- #print(iret1.keys(),iret1['response'].keys(),iret1['response']['success'])
- if 'response' in iret1.keys() and 'success' in iret1['response'].keys() and str(iret1['response']['success']) == '0' and 'This interface has a cooldown of 5 seconds per key.' in iret1['response']['message']:
- time.sleep(5)
- get_sellorders(item_name,item_id,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name)
- return
- else:
- for sellers in iret1['sell']['listings']:
- if 'metal' not in sellers['currencies'].keys():
- sellers['currencies']['metal'] = 0
- if 'keys' not in sellers['currencies'].keys():
- sellers['currencies']['keys'] = 0
- sellers_keys = sellers['currencies']['keys']
- sellers_metal = sellers['currencies']['metal']
- sellers_name = sellers['steamid']
- if sellers_name != steam_id and item_name == sellers['item']['name']:
- if (sellers_keys < my_keys or (sellers_keys == my_keys and sellers_metal < my_metal)):
- output = '{:<45} {:<12} {:<12} {:<30} {:<12} {:<12}'.format(item_name, str(my_keys),str(my_metal),sellers_name,str(sellers_keys),str(sellers_metal))
- print(output)
- open('output.txt','a').write(output+'\n')
- sellers_name = ''
- sellers_keys = ''
- sellers_metal = ''
- curr_page1 = curr_page1 + 1
- if curr_page1 > math.ceil(iret1['total'] / 30) or iret1['total'] < 31:
- break
- def sellorder_scan():
- open('output.txt','a').write('OTHER SELLORDERS'+'\n')
- curr_page = 1
- while True:
- payload = {'key':backpack_api_token,'item_names':1,'intent':'sell','fold':1,'page_size':'30','steamid':s,'page':curr_page}
- #print(payload)
- url = 'https://backpack.tf/api/classifieds/search/v1?' + urllib.parse.urlencode(payload)
- r1 = requests.get(url)
- ret1 = r1.json()
- #print(ret1)
- for item in ret1['sell']['listings']:
- if str(item['item']['quality']) != str(5) and item['item']['defindex'] in defindex_dict.keys():
- if 'metal' not in item['currencies'].keys():
- item['currencies']['metal'] = 0;
- if 'keys' not in item['currencies'].keys():
- item['currencies']['keys'] = 0
- item_id = item['item']['id']
- item_keys = item['currencies']['keys']
- item_metal = item['currencies']['metal']
- item_name = item['item']['name']
- item_encoded_name = defindex_dict[item['item']['defindex']]
- item_quality = item['item']['quality']
- item_killstreaker = 0
- if 'attributes' in item['item'].keys():
- for stuff in item['item']['attributes']:
- if stuff['defindex'] == 2025:
- item_killstreaker = stuff['float_value']
- item_listing_id = item['id']
- item_listing_message = item['details']
- item_listing_offers = item['offers']
- item_listing_buyout = item['buyout']
- #print(item)
- get_sellorders(item_name,item_id,item_quality,item_keys,item_metal,item_killstreaker,item_listing_offers,item_listing_buyout,item_listing_message,item_listing_id,item_encoded_name)
- curr_page = curr_page + 1
- if curr_page > math.ceil(ret1['total'] / 30) or ret1['total'] < 31:
- break
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : '+ 'OTHER SELLORDERS SEARCH COMPLETED')
- def main():
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : '+'Scan Starting...')
- unusual_buyorder_scan()
- unusual_sellorder_scan()
- buyorder_scan()
- sellorder_scan()
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : ALL SCANS COMPLETED')
- print(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))+ ' : Safe to Exit...')
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement