#!/usr/bin/env python3 import requests import re from time import sleep from datetime import datetime, timezone from os import fork from threading import Timer post_cooloff = 7 rs = requests.session() rp = rs.post('https://recolor.me/login?json', data = { 'action':'login', 'account_name':'testingaccount1', 'account_password':'1234', 'account_cookie':'1'}) if not rp.json()['account_id']: print("wrong login info!") exit(1) rp = rs.get('https://recolor.me/') key_pos = rp.text.find("site.my_key = \'") + len("site.my_key = ") #key = rp.text[key_pos:key_pos+32] key = re.search("site.my_key = \'(.*)\';", rp.text).groups()[0] def acheive_limit(): uncaped = True check_space = 20 on_post = check_space while uncaped: print("starting again!!!!") sleep(7) on_post += 1 if on_post > check_space: on_post = 0 rp = rs.get('https://recolor.me/account') bits = re.search("site.my_bits = (\d*);", rp.text).groups()[0] bit_limit = re.search("site.limit_bits = (\d*);", rp.text).groups()[0] daily_limit = re.search("site.daily_limit = (\d*);", rp.text).groups()[0] limit_percentage = int((int(daily_limit) / int(bit_limit)) * 100) print("total bits: {}\nbit cap: {}/{}\t\t{}%".format(bits, daily_limit, bit_limit, limit_percentage)) if daily_limit == bit_limit: uncaped = False rs.post('https://recolor.me/topic/1557621', data={ 'key':key, 'page':'topic', 'action':'reply', 'topic_id':'1557621', 'reply_message':"Done for today!\nSleeping until 06:00 UTC.".format("04:00"), 'box_color':'#0000ff', 'post_color':'#0', 'post_style':'0' }) rs.post('https://recolor.me/topic/1557621', data={ 'key':key, 'page':'topic', 'action':'reply', 'topic_id':'1557621', 'reply_message':"Daily quota: {}/{}\t{}%\nLast checked {} messages ago\nNext check is {} messages from now".format(daily_limit, bit_limit, limit_percentage, on_post, check_space - on_post), 'box_color':'#0000ff', 'post_color':'#0', 'post_style':'0' }) acheive_limit() while True: current_time = datetime.now(timezone.utc) desired_time = current_time.replace(day=current_time.day+1, hour=6, minute=0, second=0, microsecond=0) print("starting next run at {}".format(str(desired_time))) cap_thread = Timer((desired_time - current_time).seconds+1, acheive_limit) cap_thread.start() cap_thread.join() #usually resets at 11