Example #1
0
 def test_get_partner_inventory(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password, self.steam_guard_file)
     partner_id = ''
     game = GameOptions.CS
     client.get_my_inventory(game)
     inventory = client.get_partner_inventory(partner_id, game)
     self.assertIsNotNone(inventory)
Example #2
0
 def test_create_and_remove_sell_listing(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password,
                  self.steam_guard_file)
     game = GameOptions.DOTA2
     inventory = client.get_my_inventory(game)
     asset_id_to_sell = None
     for asset_id, item in inventory.items():
         if item.get("marketable") == 1:
             asset_id_to_sell = asset_id
             break
     self.assertIsNotNone(
         asset_id_to_sell,
         "You need at least 1 marketable item to pass this test")
     response = client.market.create_sell_order(asset_id_to_sell, game,
                                                "10000")
     self.assertTrue(response["success"])
     sell_listings = client.market.get_my_market_listings()["sell_listings"]
     listing_to_cancel = None
     for listing in sell_listings.values():
         if listing["description"]["id"] == asset_id_to_sell:
             listing_to_cancel = listing["listing_id"]
             break
     self.assertIsNotNone(listing_to_cancel)
     response = client.market.cancel_sell_order(listing_to_cancel)
Example #3
0
 def test_make_offer(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password, self.steam_guard_file)
     partner_id = ''
     game = GameOptions.CS
     my_items = client.get_my_inventory(game)
     partner_items = client.get_partner_inventory(partner_id, game)
     my_first_item = next(iter(my_items.values()))
     partner_first_item = next(iter(partner_items.values()))
     my_asset = Asset(my_first_item['id'], game)
     partner_asset = Asset(partner_first_item['id'], game)
     response = client.make_offer([my_asset], [partner_asset], partner_id, 'TESTOWA OFERTA')
     self.assertIsNotNone(response)
Example #4
0
 def test_make_offer_with_trade_url(self):
     sample_trade_url="https://steamcommunity.com/tradeoffer/new/?partner=314218906&token=sgA4FdNm"
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password, self.steam_guard_file)
     partner_id = '76561198274484634'
     game = GameOptions.CS
     my_items = client.get_my_inventory(game)
     partner_items = client.get_partner_inventory(partner_id, game)
     my_first_item = next(iter(my_items.values()))
     partner_first_item = next(iter(partner_items.values()))
     my_asset = Asset(my_first_item['id'], game)
     partner_asset = Asset(partner_first_item['id'], game)
     response = client.make_offer_url([my_asset], [partner_asset],sample_trade_url, 'TESTOWA OFERTA')
     self.assertIsNotNone(response)
Example #5
0
 def test_make_offer_url(self):
     partner_account_id = '32384925'
     partner_token = '7vqRtBpC'
     sample_trade_url = 'https://steamcommunity.com/tradeoffer/new/?partner=' + partner_account_id + '&token=' + partner_token
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password,
                  self.steam_guard_file)
     client._session.request('HEAD', 'http://steamcommunity.com')
     partner_steam_id = account_id_to_steam_id(partner_account_id)
     game = GameOptions.CS
     my_items = client.get_my_inventory(game, merge=False)['rgInventory']
     partner_items = client.get_partner_inventory(
         partner_steam_id, game, merge=False)['rgInventory']
     my_first_item = next(iter(my_items.values()))
     partner_first_item = next(iter(partner_items.values()))
     my_asset = Asset(my_first_item['id'], game)
     partner_asset = Asset(partner_first_item['id'], game)
     response = client.make_offer_with_url([my_asset], [partner_asset],
                                           sample_trade_url,
                                           'TESTOWA OFERTA')
     self.assertIsNotNone(response)
Example #6
0
 def test_create_and_remove_sell_listing(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password, self.steam_guard_file)
     game = GameOptions.DOTA2
     inventory = client.get_my_inventory(game)
     asset_id_to_sell = None
     for asset_id, item in inventory.items():
         if item.get("marketable") == 1:
             asset_id_to_sell = asset_id
             break
     self.assertIsNotNone(asset_id_to_sell, "You need at least 1 marketable item to pass this test")
     response = client.market.create_sell_order(asset_id_to_sell, game, "10000")
     self.assertTrue(response["success"])
     sell_listings = client.market.get_my_market_listings()["sell_listings"]
     listing_to_cancel = None
     for listing in sell_listings.values():
         if listing["description"]["id"] == asset_id_to_sell:
             listing_to_cancel = listing["listing_id"]
             break
     self.assertIsNotNone(listing_to_cancel)
     response = client.market.cancel_sell_order(listing_to_cancel)
Example #7
0
def executeTrade(u1, u2, item_ID):
    success = False
    MY_API_KEY = os.environ['MY_API_KEY']
    PATH_TO_STEAMGUARD_FILE = os.environ['PATH_TO_STEAMGUARD_FILE']
    OFFER_NAME = getTradeID(u1, u2, item_ID)

    u1_username = u1.steam
    u1_password = u1.pwd
    u1_id = u1.steam_ID

    u2_username = u2.steam
    u2_password = u2.pwd
    u2_id = u2.steam_ID

    steam_client_u1 = SteamClient(MY_API_KEY)
    steam_client_u1.login(u1_username, u1_password, PATH_TO_STEAMGUARD_FILE)

    steam_client_u2 = SteamClient(MY_API_KEY)
    steam_client_u2.login(u2_username, u2_password, PATH_TO_STEAMGUARD_FILE)

    game = GameOptions.CS
    my_items = steam_client_u1.get_my_inventory(game)
    partner_items = steam_client_u1.get_partner_inventory(u2_id, game)
    my_first_item = next(iter(my_items.values()))
    partner_first_item = next(iter(partner_items.values()))
    my_asset = Asset(my_first_item['id'], game)
    partner_asset = Asset(partner_first_item['id'], game)
    retDict = steam_client_u1.make_offer([my_asset], [partner_asset],
                                         partner_id, OFFER_NAME)

    if retDict:
        tradeofferid = retDict['tradeofferid']
        steam_client_u2.accept_trade_offer(tradeofferid)

        success = True  # return success

    steam_client_u1.logout()
    steam_client_u2.logout()
    return success
Example #8
0
 def test_get_my_inventory(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password,
                  self.steam_guard_file)
     inventory = client.get_my_inventory(GameOptions.CS)
     self.assertIsNotNone(inventory)
Example #9
0
class TradeBoost:
    GAME = GameOptions.STEAM

    def __init__(self, cfg_account: str, recipient_id: str) -> None:

        self.cfg_account = json.load(open(cfg_account))
        self.login = self.cfg_account["login"]
        self.api_token = self.cfg_account['API']
        self.password = self.cfg_account['password']
        self.recipient_id = recipient_id
        self.partner_id = int(self.recipient_id) - 76561197960265728
        self.adapter = CustomAdapter(logger, {'account': self.login})

        try:
            self.account = SteamClient(self.api_token)
            self.account.login(self.login, self.password, cfg_account)
            self.adapter.info(translate.word('good_auth'))
            self.decline_all_trades()

        except steampy.exceptions.InvalidCredentials as e:
            self.adapter.warning(translate.word('bad_auth').format(e))

    def decline_all_trades(self):

        params = {
            'key': self.api_token,
            'get_sent_offers': 1,
            'get_received_offers': 0,
            'get_descriptions': 0,
            'language': 'english',
            'active_only': 1,
            'historical_only': 0,
            'time_historical_cutoff': ''
        }
        response = (self.account.api_call('GET', 'IEconService',
                                          'GetTradeOffers', 'v1',
                                          params).json()['response'])
        count_decline = 0
        if 'trade_offers_sent' in response:
            for offer in response['trade_offers_sent'][:5]:
                if offer['accountid_other'] == self.partner_id:
                    self.account.cancel_trade_offer(offer['tradeofferid'])
                    count_decline += 1
        self.adapter.info(
            translate.word('trade_decline').format(count_decline))

    def get_item(self) -> str:

        try:
            items = self.account.get_my_inventory(game=self.GAME, count=15)
            item_id = choice(list(items.keys()))
            about_item = items[item_id]
            if item_id and state.not_in(
                    item_id) and about_item['tradable'] == 1:
                self.adapter.info(
                    translate.word('item_received').format(
                        item_id, about_item["name"]))
                state.add(item_id)
                return item_id
            else:
                return ''
        except Exception as e:
            self.adapter.warning(translate.word('bad_send').format(e))
            return ''

    def send_trades(self) -> str:
        item_id = ''
        while item_id in ['', None]:
            item_id = self.get_item()

        asset_one = Asset(item_id, self.GAME)

        trade = self.account.make_offer([asset_one], [], self.recipient_id)
        if validate_api_response(trade):
            self.adapter.info(
                translate.word('sent_trade').format(trade["tradeofferid"]))
            return trade['tradeofferid']
        else:
            self.adapter.warning(
                translate.word('bad_send').format(list(trade.values())[0]))
            self.decline_all_trades()

    def accept_trade(self, trade_id: str) -> None:
        trade_info = self.account.get_trade_offer(trade_id)
        if 'offer' in trade_info['response']:
            if int(trade_info['response']['offer']
                   ['accountid_other']) == self.partner_id:
                resp = self.account.accept_trade_offer(trade_id)
                if validate_api_response(resp):
                    self.adapter.info(
                        translate.word('accepted_trade').format(trade_id))
                    item = trade_info['response']['offer']['items_to_receive'][
                        0]['assetid']
                    state.remove(item)
                else:
                    self.adapter.warning(
                        translate.word('bad_accept').format(
                            trade_id,
                            list(resp.values())[0]))
        else:
            self.adapter.warning(translate.word('bad_send').format(trade_info))
Example #10
0
                            params={'appid': '730'})
        return resp.json()['response']


if __name__ == '__main__':
    logger.setLevel(level=logging.INFO)
    file_handler = logging.FileHandler('data/skypebot.log', encoding='utf-8')
    formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    ops = OpSkins('e4f2d89cdbac56b132b68cef2c53e5')
    steam_client = SteamClient()
    steam_client.login(
        'immunepzw', 'arigold4172409',
        r'C:\Users\sham\Desktop\sda\maFiles\76561198177211015.maFile')
    my_skins = steam_client.get_my_inventory(game=GameOptions.CS)
    items = []
    lowest_prices = ops.get_lowest_sale_prices()
    prices_db = shelve.open('./data/pricehistory.dat')
    box_classids = ('520025252', '2048553988', '1544067968', '1432174707',
                    '1293508920', '926978479', '1690096482', '991959905',
                    '1797256701', '1923037342')
    for id_, skin_descr in my_skins.items():
        if not skin_descr['tradable'] or skin_descr['classid'] in box_classids:
            continue
        skin_name = skin_descr['market_hash_name']
        lowest_price = lowest_prices[skin_name]['price']
        if lowest_price != 2:  # lowest price on opskins is 2 cents
            lowest_price -= 1
        # average_price = prices_db[skin_name][0]
        # if lowest_price / average_price < 0.99:
Example #11
0
try:
    steam_client.login(username, password, steam_guard_path)
except (ValueError, InvalidCredentials):
    print('Your login credentials are invalid')
    exit(1)
print("Finished! Logged into steam")

#we will ask them for the game's app id and context id of the inventory
if not app_id:
    app_id = input('What is the app id?\n')
if not context_id:
    context_id = input(
        'What is the context id of that game\'s inventory? (usually 2)\n')

#get all the items in inventory, and save each name of item and the amount
print('Obtaining inventory...')
item_amounts = {}
inventory = steam_client.get_my_inventory(GameOptions(app_id, context_id))
for item in inventory.values():
    if item["market_name"] in item_amounts:
        item_amounts[item['market_name']] += 1
    else:
        item_amounts[item['market_name']] = 1
print('Done reading inventory for game: {}'.format(app_id))

#dump all the information into inventory_(app_id)_(context_id).json file
print('Saving information....')
with open('inventory_{0}_{1}.json'.format(app_id, context_id), 'w') as file:
    dump(item_amounts, file)
print('Done! Saved to file: inventory_{0}_{1}.json'.format(app_id, context_id))