Source code for coto.captcha.iterm_solver
import uuid
import sys
import base64
import urllib.request
def url_to_base64(url):
return base64.b64encode(urllib.request.urlopen(url).read()).decode()
def show_image(b64):
sys.stdout.write("\033]1337;File=")
sys.stdout.write("name=captcha;inline=1:")
sys.stdout.write(b64)
sys.stdout.write("\a\n")
[docs]class iTermSolver:
def __init__(self):
self.jobs = {}
[docs] def solve(self, base64=None, url=None):
job_id = uuid.uuid4()
if base64:
b64 = base64
elif url:
b64 = url_to_base64(url)
else:
raise Exception("pass `url` or `base64`")
self.jobs[job_id] = None
show_image(b64)
self.jobs[job_id] = input("Guess: ")
return job_id
[docs] def result(self, job_id):
job_id = uuid.UUID(str(job_id))
if job_id in self.jobs:
return self.jobs[job_id]
else:
return None
[docs] def incorrect(self, job_id):
print("You guessed wrong!")