mirror of
https://gitea.augustin64.fr/piair/MsRewards-Reborn.git
synced 2025-06-25 19:03:56 +02:00
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
808916ddd3 | |||
c51c463338 | |||
a22d1e6ddb | |||
93bb634f7c | |||
31426a1dfd | |||
f862af8699 | |||
78e7342acf | |||
4d8157ba1e | |||
661566aade |
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,3 +12,4 @@ data
|
||||
install.sh
|
||||
nohup.out
|
||||
test.py
|
||||
points.csv
|
||||
|
52
V5.py
52
V5.py
@ -221,9 +221,10 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
if len(driver.window_handles) == 1:
|
||||
driver.get("https://www.bing.com/rewardsapp/flyout")
|
||||
if part2:
|
||||
driver.find_element(
|
||||
By.XPATH, "/html/body/div/div/div[3]/div[2]/div[2]/div[2]/div[1]"
|
||||
).click()
|
||||
row_element = driver.find_elements(By.CSS_SELECTOR, f'[class="i-h rw-sh fp_row"]')[1]
|
||||
expanded = row_element.get_attribute("aria-expanded")
|
||||
if expanded != "true":
|
||||
row_element.click()
|
||||
else:
|
||||
driver.switch_to.window(driver.window_handles[1])
|
||||
printf(f"fermeture : {driver.current_url}")
|
||||
@ -236,7 +237,7 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
def daily_cards(): # cartes de la premiere partie (renouvelées chaque jours).
|
||||
try:
|
||||
# make sure that the daily area is expanded
|
||||
row_element = driver.find_element(By.XPATH, "/html/body/div/div/div[3]/div[2]/div[1]/div[1]")
|
||||
row_element = driver.find_elements(By.CSS_SELECTOR, f'[class="i-h rw-sh fp_row"]')[0]
|
||||
expanded = row_element.get_attribute("aria-expanded")
|
||||
if expanded != "true":
|
||||
row_element.click()
|
||||
@ -244,9 +245,8 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
custom_sleep(uniform(3, 5))
|
||||
try:
|
||||
titre = "Placeholder"
|
||||
driver.find_element(
|
||||
By.XPATH,f"/html/body/div/div/div[3]/div[2]/div[1]/div[2]/div/div[{i+1}]/a",
|
||||
).click()
|
||||
elm = driver.find_elements(By.CLASS_NAME, 'promo_cont')
|
||||
elm[i].click()
|
||||
sleep(1)
|
||||
titre = driver.title
|
||||
try_play(titre)
|
||||
@ -255,7 +255,7 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
printf(f"DailyCard {titre} ok")
|
||||
except Exception as e:
|
||||
log_error(f"all_cards card {titre} error ({format_error(e)})")
|
||||
|
||||
"""
|
||||
try : # devrait renvoyer vrai si la carte i est faite ou pas, a l'aide su symbole en haut a droite de la carte
|
||||
elm = driver.find_element(By.XPATH, f"/html/body/div/div/div[3]/div[2]/div[1]/div[2]/div/div[{i+1}]/a/div/div[2]/div[1]/div[2]/div")
|
||||
if not ("correctCircle" in elm.get_attribute("innerHTML")):
|
||||
@ -266,23 +266,25 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
except Exception as e :
|
||||
printf(format_error(e) + "probablement ok - check card")
|
||||
# if it fail, it's probably okay -> when all three card are done, the pannel fold
|
||||
|
||||
"""
|
||||
except Exception as e:
|
||||
log_error(e)
|
||||
|
||||
def weekly_cards():
|
||||
# make sure that the weekly area is expanded
|
||||
row_element = driver.find_element(By.XPATH, "/html/body/div/div/div[3]/div[2]/div[2]/div[2]")
|
||||
row_element = driver.find_elements(By.CSS_SELECTOR, f'[class="i-h rw-sh fp_row"]')[1]
|
||||
expanded = row_element.get_attribute("aria-expanded")
|
||||
if expanded != "true":
|
||||
row_element.click()
|
||||
|
||||
for i in range(20): # Should raise an error whene there is no card left
|
||||
printf("début de l'une des cartes")
|
||||
driver.find_element(
|
||||
By.XPATH,
|
||||
"/html/body/div/div/div[3]/div[2]/div[2]/div[3]/div/div[1]/a/div/div[2]",
|
||||
).click()
|
||||
elm = driver.find_elements(By.CLASS_NAME, 'promo_cont')
|
||||
try :
|
||||
elm[0].click()
|
||||
except Exception as e :
|
||||
print(f"{e} + {driver.current_url}")
|
||||
break
|
||||
driver.switch_to.window(driver.window_handles[len(driver.window_handles) - 1])
|
||||
sleep(1)
|
||||
titre = driver.title
|
||||
@ -290,13 +292,13 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
try_play(titre)
|
||||
reset(True)
|
||||
sleep(1)
|
||||
try:
|
||||
findall('href="([^<]+)" title=""', driver.page_source)[3] # return error if there is no cards left to do
|
||||
except:
|
||||
break
|
||||
#try:
|
||||
# findall('href="([^<]+)" title=""', driver.page_source)[3] # return error if there is no cards left to do
|
||||
#except:
|
||||
# break
|
||||
|
||||
def top_cards():
|
||||
for _ in range(10):
|
||||
for _ in range(2):
|
||||
try :
|
||||
driver.find_element(By.XPATH, "/html/body/div/div/div[3]/div[1]/div/div[1]/div[2]").click()
|
||||
reset()
|
||||
@ -305,17 +307,20 @@ def all_cards(): # return to the main page and closes all other tabs
|
||||
break
|
||||
|
||||
try :
|
||||
top_cards()
|
||||
#top_cards()
|
||||
print("top card not working really well right now. Disableing them")
|
||||
except Exception as e:
|
||||
log_error(e)
|
||||
|
||||
try:
|
||||
daily_cards()
|
||||
print("daily card")
|
||||
except Exception as e:
|
||||
log_error(e)
|
||||
|
||||
try :
|
||||
weekly_cards()
|
||||
print("weekly card")
|
||||
except Exception as e:
|
||||
log_error(e)
|
||||
|
||||
@ -665,7 +670,6 @@ def fidelity():
|
||||
fidelity_link = fidelity_link_page.content.decode("UTF-8")
|
||||
|
||||
if (fidelity_link.split(":")[0] == "https") or (fidelity_link.split(":")[0] == "http") :
|
||||
|
||||
driver.get(fidelity_link)
|
||||
wait_until_visible(By.CSS_SELECTOR, 'div[class="pull-left spacer-48-bottom punchcard-row"]', browser=driver)
|
||||
try :
|
||||
@ -678,9 +682,10 @@ def fidelity():
|
||||
answer_number = search("([0-9]) de ([0-9]) finalisé", driver.page_source)
|
||||
if answer_number is None :
|
||||
answer_number = search("([0-9]) licence\(s\) sur ([0-9]) disponible\(s\)", driver.page_source)
|
||||
if answer_number is None :
|
||||
answer_number = search("([0-9]) défi\(s\) terminé\(s\) sur ([0-9])", driver.page_source)
|
||||
if answer_number is None :
|
||||
answer_number = [0,0,0]
|
||||
|
||||
for _ in range(int(answer_number[2]) - int(answer_number[1])):
|
||||
driver.refresh()
|
||||
custom_sleep(2)
|
||||
@ -925,6 +930,9 @@ elif UNBAN:
|
||||
elif POINTS_FILE != "":
|
||||
save_points_from_file(POINTS_FILE)
|
||||
else:
|
||||
if UPDATE_VERSION != "None":
|
||||
if DISCORD_ENABLED_ERROR:
|
||||
webhookFailure.send(f"Updated to {UPDATE_VERSION}")
|
||||
for cred in Credentials:
|
||||
_mail = cred[0]
|
||||
_password = cred[1]
|
||||
|
64
database.py
64
database.py
@ -10,9 +10,16 @@ parser.add_argument(
|
||||
help="Choose a file",
|
||||
type=argparse.FileType('r')
|
||||
)
|
||||
parser.add_argument(
|
||||
"-m",
|
||||
"--manual",
|
||||
help="add point manually do database",
|
||||
dest="manual",
|
||||
action="store_true"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
MANUAL = args.manual
|
||||
|
||||
config_path = "./user_data/config.cfg"
|
||||
config = configparser.ConfigParser()
|
||||
@ -47,26 +54,39 @@ def ban_account(name: str, pts = 0):
|
||||
def update_pts(name: str, pts = 0):
|
||||
pass
|
||||
|
||||
|
||||
print("ajouter un compte : 1\nban un compte : 2")
|
||||
i = input()
|
||||
if i == "1":
|
||||
if args.file :
|
||||
l =[x.split(",")[0].split("@")[0] for x in args.file.readlines()]
|
||||
endroit = input("ou est le bot ? ")
|
||||
proprio = input("qui est le proprio ? ")
|
||||
for name in l :
|
||||
if not MANUAL :
|
||||
print("ajouter un compte : 1\nban un compte : 2")
|
||||
i = input()
|
||||
if i == "1":
|
||||
if args.file :
|
||||
l =[x.split(",")[0].split("@")[0] for x in args.file.readlines()]
|
||||
endroit = input("ou est le bot ? ")
|
||||
proprio = input("qui est le proprio ? ")
|
||||
for name in l :
|
||||
add_account(name, endroit, proprio)
|
||||
else :
|
||||
name = input("quel est le nom ? ").split("@")[0]
|
||||
endroit = input("ou est le bot ? ")
|
||||
proprio = input("qui est le proprio ? ")
|
||||
add_account(name, endroit, proprio)
|
||||
else :
|
||||
name = input("quel est le nom ? ").split("@")[0]
|
||||
endroit = input("ou est le bot ? ")
|
||||
proprio = input("qui est le proprio ? ")
|
||||
add_account(name, endroit, proprio)
|
||||
elif i == '2':
|
||||
name = input("quel est le compte qui a été ban ? ")
|
||||
pts = input("il avait combien de points ? ")
|
||||
ban_account(name, pts)
|
||||
elif i == '2':
|
||||
name = input("quel est le compte qui a été ban ? ")
|
||||
pts = input("il avait combien de points ? ")
|
||||
ban_account(name, pts)
|
||||
|
||||
mydb.commit()
|
||||
mycursor.close()
|
||||
mydb.close()
|
||||
mydb.commit()
|
||||
mycursor.close()
|
||||
mydb.close()
|
||||
else :
|
||||
import modules.db as datab
|
||||
config_path = f"{path.abspath(path.dirname(path.dirname( __file__ )))}/MsRewards/user_data/config.cfg"
|
||||
print(config_path)
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
sql_usr = config["SQL"]["usr"]
|
||||
sql_pwd = config["SQL"]["pwd"]
|
||||
sql_host = config["SQL"]["host"]
|
||||
sql_database = config["SQL"]["database"]
|
||||
account_name = input("compte ? ")
|
||||
points = int(input("points ? "))
|
||||
datab.add_to_database(account_name, points, sql_host, sql_usr, sql_pwd, sql_database)
|
13
main.py
13
main.py
@ -154,29 +154,32 @@ def proxy() :
|
||||
edit_config_txt("port",port)
|
||||
|
||||
|
||||
def check_update():
|
||||
def check_update(args):
|
||||
try :
|
||||
latest = requests.get("https://api.github.com/repos/piair338/MsRewards/releases").json()[0]["tag_name"]
|
||||
latest = parse_version(latest)
|
||||
except Exception as e :
|
||||
print(e)
|
||||
return ()
|
||||
return (args)
|
||||
f = open("./version", 'r')
|
||||
txt = f.readlines()[0].replace("\n","")
|
||||
f.close()
|
||||
cur = parse_version(txt)
|
||||
if not (cur < latest) :
|
||||
print("Already up to date.")
|
||||
return(args)
|
||||
else :
|
||||
print(f"updating to {latest}")
|
||||
os.system("git reset --hard")
|
||||
os.system("git pull")
|
||||
print("updated")
|
||||
|
||||
os.system("python3 -m pip install -r requirements.txt > update.result")
|
||||
print(f"updated to {latest}")
|
||||
return(args + f" --version {latest}")
|
||||
|
||||
LogPath = config["PATH"]["logpath"]
|
||||
if LogPath == "/your/path/to/loginandpass.csv" :
|
||||
setup()
|
||||
else :
|
||||
args = " ".join(sys.argv[1::])
|
||||
check_update()
|
||||
args = check_update(args)
|
||||
os.system("python3 V5.py " + args)
|
||||
|
@ -81,6 +81,12 @@ parser.add_argument(
|
||||
default="None"
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--updated",
|
||||
help="display a message on discord to tell that the bot have been updated",
|
||||
dest="update_version",
|
||||
default="None"
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
CUSTOM_START = args.override
|
||||
@ -93,7 +99,7 @@ if CUSTOM_START :
|
||||
VNC_ENABLED = args.vnc != "None"
|
||||
VNC_PORT = args.vnc
|
||||
POINTS_FILE = args.points_file
|
||||
|
||||
UPDATE_VERSION = args.update_version
|
||||
# global variables used later in the code
|
||||
LINUX_HOST = platform == "linux" # if the computer running this program is Linux, it allow more things
|
||||
START_TIME = time()
|
||||
|
Reference in New Issue
Block a user