11import csv
2+ import json
23from os import path
4+
35import requests
4- import json
5- import time
66from lxml .html import fromstring
77
8- dir = path .dirname (__file__ )
8+ directory = path .dirname (__file__ )
9+
910
1011def write_json (data , filename ):
1112 with open (filename , 'w' ) as f :
@@ -14,12 +15,12 @@ def write_json(data, filename):
1415
1516def define_login_details (nick = "" , password = "" , server = "" ):
1617 """Saving nicks, passwords for each server from the user, for later use."""
17- file_name = path .join (dir , 'login_details.csv' )
18+ file_name = path .join (directory , 'login_details.csv' )
1819 if nick and password and server :
1920 file_exist = path .isfile (file_name )
2021 with open (file_name , 'a' , newline = '' ) as csvFile :
2122 writer = csv .writer (csvFile )
22- if not file_exist :
23+ if not file_exist :
2324 writer .writerow (["Server" , "Nick" , "Password" ])
2425 writer .writerow ([server , nick , password ])
2526 if not path .isfile (file_name ) or (server and server != "all" ):
@@ -36,7 +37,8 @@ def define_login_details(nick="", password="", server=""):
3637 if not server :
3738 continue
3839 if nick and password :
39- print (f"If your nick/password for { server } is the same as of the previous server, you can leave that field blank" )
40+ print (
41+ f"If your nick/password for { server } is the same as of the previous server, you can leave that field blank" )
4042 new_nick = input (f"Your nick at { server } (pay attention to uppercase and lowercase letters): " )
4143 new_password = input (f"Your password at { server } (pay attention to uppercase and lowercase letters): " )
4244 if new_nick :
@@ -45,7 +47,7 @@ def define_login_details(nick="", password="", server=""):
4547 password = new_password
4648 writer .writerow ([server , nick , password ])
4749
48- cookies_file_name = path .join (dir , 'cookies.txt' )
50+ cookies_file_name = path .join (directory , 'cookies.txt' )
4951 if not path .isfile (cookies_file_name ):
5052 write_json ({}, cookies_file_name )
5153 with open (cookies_file_name , 'r' ) as file :
@@ -59,9 +61,10 @@ def define_login_details(nick="", password="", server=""):
5961 data .update ({"user_agent" : user_agent })
6062 write_json (data , cookies_file_name )
6163
64+
6265def get_nick_and_pw (server ):
6366 nick , password = "" , ""
64- file_name = path .join (dir , 'login_details.csv' )
67+ file_name = path .join (directory , 'login_details.csv' )
6568 all_nicks = {}
6669 while 1 :
6770 if path .isfile (file_name ):
@@ -87,6 +90,9 @@ def get_nick_and_pw(server):
8790 define_login_details (server = server )
8891
8992
93+ permanent_servers = 'primera' , 'secura' , 'suna' , 'alpha'
94+
95+
9096def login (server ):
9197 """
9298 Saving cookies and user agent string in a local file, and replace the cookies if they are too old.
@@ -96,14 +102,16 @@ def login(server):
96102 """
97103 define_login_details ()
98104 URL = f"https://{ server } .e-sim.org/"
99- cookies_file_name = path .join (dir , 'cookies.txt' )
105+ cookies_file_name = path .join (directory , 'cookies.txt' )
100106 with open (cookies_file_name , 'r' ) as file :
101107 data = json .load (file )
102108 user_agent = data ["user_agent" ]
103109
104110 headers = {"User-Agent" : user_agent , "Referer" : f"{ URL } index.html" }
105- session = requests .session ()
111+ session = requests .session ()
106112 session .headers .update (headers )
113+ if server .lower () not in permanent_servers :
114+ session .verify = False
107115 online_check = False
108116 if server in data :
109117 old_cookies = requests .utils .cookiejar_from_dict (data [server ])
@@ -137,14 +145,15 @@ def double_click(server, queue="", session=""):
137145 payload2 = {'task' : "TRAIN" , "action" : "put" , "submit" : "Add plan" }
138146 session .post (URL + "taskQueue.html" , data = payload1 )
139147 session .post (URL + "taskQueue.html" , data = payload2 )
140-
148+
141149 work_page = session .get (URL + "work.html" )
142150 tree = fromstring (work_page .content )
143151 check = tree .xpath ('//*[@id="taskButtonWork"]//@href' )
144152 if check :
145153 try :
146- region = tree .xpath ('//div[1]//div[2]//div[5]//div[1]//div//div[1]//div//div[4]//a/@href' )[0 ].split ("=" )[1 ]
147- payload = {'countryId' : int (int (region ) / 6 ) + (int (region ) % 6 > 0 ), 'regionId' : region , 'ticketQuality' : 5 }
154+ region = tree .xpath ('//div[1]//div[2]//div[5]//div[1]//div//div[1]//div//div[4]//a/@href' )[0 ].split ("=" )[1 ]
155+ payload = {'countryId' : int (int (region ) / 6 ) + (int (region ) % 6 > 0 ), 'regionId' : region ,
156+ 'ticketQuality' : 5 }
148157 except :
149158 print ("I couldn't find in which region your work is. Maybe you don't have a job" )
150159 session .post (URL + "travel.html" , data = payload )
@@ -161,6 +170,7 @@ def double_click(server, queue="", session=""):
161170 print ("Already worked" )
162171 return session
163172
173+
164174if __name__ == "__main__" :
165175 print (define_login_details .__doc__ )
166176 define_login_details ()
@@ -172,7 +182,7 @@ def double_click(server, queue="", session=""):
172182 for server in servers :
173183 double_click (server .strip ())
174184 else :
175- with open (path .join (dir , 'login_details.csv' ), 'r' ) as file :
185+ with open (path .join (directory , 'login_details.csv' ), 'r' ) as file :
176186 reader = csv .reader (file )
177187 for row in reader :
178188 if row [0 ] != "Server" :
0 commit comments