projects-jenz/event_rewards/python/main.py

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()