72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
#!/home/nonroot/handle_event_rewards/venv/bin/python3
|
|
from settings import (get_connection_events, api_key)
|
|
import requests
|
|
|
|
unloze_user_upgrade_api = f"https://unloze.com/api/private_user_upgrade_api.php?api_key={api_key}&steam_id="
|
|
|
|
def get_all_pending_event_rewards():
|
|
with get_connection_events() as conn:
|
|
with conn.cursor(buffered=True) as cur:
|
|
sql_statement = """
|
|
select steamid, event_reward_days
|
|
from unloze_event.rewards
|
|
where is_processed is false
|
|
"""
|
|
cur.execute(sql_statement)
|
|
res = cur.fetchall()
|
|
conn.close()
|
|
return res
|
|
|
|
def update_is_procssed():
|
|
with get_connection_events() as conn:
|
|
with conn.cursor(buffered=True) as cur:
|
|
sql_statement = """
|
|
update unloze_event.rewards set is_processed = true where is_processed is false
|
|
"""
|
|
cur.execute(sql_statement)
|
|
conn.commit() #pretty gay how contextmanager cant commit and close itself like in psycopg2
|
|
conn.close()
|
|
|
|
def steamid_to_commid(steamid):
|
|
steamid64ident = 76561197960265728
|
|
sid_split = steamid.split(':')
|
|
commid = int(sid_split[2]) * 2
|
|
if sid_split[1] == '1':
|
|
commid += 1
|
|
commid += steamid64ident
|
|
return commid
|
|
|
|
def update_steam_id_has_no_forum_account_with_steam(steamid):
|
|
with get_connection_events() as conn:
|
|
with conn.cursor(buffered=True) as cur:
|
|
sql_statement = """
|
|
update unloze_event.rewards
|
|
set has_no_forum_account_with_associated_steam = true
|
|
where has_no_forum_account_with_associated_steam is not true
|
|
and steamid = %s
|
|
"""
|
|
cur.execute(sql_statement, [steamid])
|
|
conn.commit() #pretty gay how contextmanager cant commit and close itself like in psycopg2
|
|
conn.close()
|
|
|
|
def reward_vip_to_event_winners(res):
|
|
for result in res:
|
|
steamid = result[0]
|
|
days_rewarded = result[1]
|
|
steam_community_id = steamid_to_commid(steamid)
|
|
|
|
r = requests.get(f"{unloze_user_upgrade_api}{steam_community_id}&days_reward={days_rewarded}")
|
|
#print("r.url: ", r.url)
|
|
if r.content.decode('utf8').startswith("NOACCOUNT"): #not registed with associated steam account
|
|
update_steam_id_has_no_forum_account_with_steam(steamid)
|
|
|
|
def main():
|
|
res = get_all_pending_event_rewards()
|
|
#send request to xenforo for giving vip time
|
|
reward_vip_to_event_winners(res)
|
|
update_is_procssed() #we took them all out so we just update all rows where is_processed is false.
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|