Open 1e0n-xx opened 11 months ago
308 talks about this if you read to the end, I am currently having the same issue but dont have time to look at the code and make a pr
Really appreciate it. I have maFile for each account, I want to know if there are any useful info in maFile session part
you should after login save cookies in file json or txt and for next time use cookies file and without try login and next do other's work you need
from steampy.client import SteamClient
steam = SteamClient(API_KEY)
steam.login(USERNAME,PASSWORD,STEAM_GAURD)
steam._session.cookies.get_dict()
...
try: with open('steam_cookies.json', 'r', encoding='utf-8') as f: cookies = json.load(f) print('loaded cookies',flush=True) except: cookies = None
steam_client = SteamClient(<bot_api_key>)
steam_client._session.cookies.set("steamRememberLogin", cookies)
try:
steam_client.login(username, pswrd, steam_guard)
print('logged in',flush=True)
except:
steam_client = None
if not session_alive: if cookies != None: steam_client.set_login_cookies(cookies) print('logged in with set_login_cookies',flush=True) else: print('logout - login method',flush=True) steam_client.logout()
steam_client = SteamClient(<bot_api_key>)
steam_client._session.cookies.set("steamRememberLogin", 'true')
steam_client.login(username, pswrd, steam_guard)
this is my example code for help you fast solutions:
import json
with open("file_cookies.json") as file_cookie:
cookie = json.load(file_cookie)
if cookie["LoginSteamSource"] == "":
### do Login
### after login save login cookies in file_cookies.json
else:
if cookie["LoginSteamSource"]: ## check is alive or not
....
else:
### do login again and save cookies in file_cookies.json
steamClient = SteamClient("apikey",username,cookie) # cookie type(dict)
### go next work you need
######################################
any time first check file cookie and next do if need login again else do any work you need for bot ... good luck ;) mybe this example helped you if ... :D
What function do you use for login ? Because when I use login() first time and try to use it second time afte the session expires it doesnt work, it only works the first time.
What function do you use for login ? Because when I use login() first time and try to use it second time afte the session expires it doesnt work, it only works the first time.
class SteamBot():
_game = GameOptions
def __init__(self,steamid:str,limit:int,game:str):
self.steamid = steamid
self.limit = limit
self.cookies = {}
self.bot = None
self.game = None
if game == "dota2": self.game = GameOptions.DOTA2
elif game == "cs2": self.game = GameOptions.CS
elif game == "pubg": self.game = GameOptions.PUBG
elif game == "rust": self.game = GameOptions.RUST
else : self.game = GameOptions.STEAM
def _login(self):
bot = SteamClient(API_KEY)
bot.login(USERNMAE,PASSWORD,STEAM_GUARD)
cookie = bot._session.cookies.get_dict()
cookie['next_login']=f"{dt.datetime.now() + dt.timedelta(days=7)}"
json_update(cookie,COOKIE_FILE) # json file cookie updated
self.bot = bot
self.cookies.update(cookie)
def _login_cookie(self):
bot = SteamClient(API_KEY,username=USERNMAE,steam_guard=STEAM_GUARD,login_cookies=self.cookies)
self.bot = bot
def _check_login(self):
cookie = json_read(COOKIE_FILE)
# cookie haved or if haved is alive token bot or not
if cookie['next_login'] == "" or fix_datetime(cookie['next_login']) < dt.datetime.now():
self._login()
else:
self.cookies.update(cookie)
self._login_cookie()
def get_items_inventory_user(self):
self._check_login()
inventory_user = self.bot.get_partner_inventory(
partner_steam_id=self.steamid,
game=self.game,
merge=True,
count=self.limit
)
# with open("steambot/items.json", 'w') as file:
# json.dump(inventory_user,file,cls=PrettyJSONEncoder)
# file.close()
return inventory_user
this is my code use for bot and worked for me ... anyway you can read this and used ...
I just tried it and it worked as a login the first time after the bot logged off but after that it stopped working again.
If I have a login session already how should I handle when is_session_alive() returns False and I want to relogin again. Since doing login() the second time doesnt work.
you just first time login save cookies in a file and second you do not need login again . use cookies before saved use:
login_cookies = {} ## saved before with first time login ...
SteamClient(API_KEY,username=USERNMAE,steam_guard=STEAM_GUARD,login_cookies=self.cookies)
...
cookies before saved use:
how long do these cookies alive, 1week or longer?
Basically, when you login in and save the pkl. But the validating time is only for 24 hours. How to keep a living session for long time