initial release of almost completely automatic event rewarder
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
this is meant to automatically give event rewards through some xenforo API call
|
||||
|
||||
mysql-connector-python
|
||||
requests
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/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()
|
||||
|
||||
Reference in New Issue
Block a user