Package: discapty
DisCapTyDisCapTy is a highly type hinted Python module to generate Captcha images without struggling your mind on how to make your own. Everyone can use it!Documentation:https://discapty.readthedocs.io/InstallingDisCapTy is available on PyPi!pip3installdiscaptyTo use DisCapTy, you need a Python version equal or greater to3.7and below3.11.Clone & Test the projectThis project is dependant ofPoetry, a dependency management tool. You are most likely going to require this tool to correctly interact with the project & its dependencies, check outPoetry's documentationfor how to install it.To clone the repository:git clone https://github.com/Predeactor/DisCapTy.gitTo install dependencies:poetry installTo run tests:poetry run python -m unittestCreating CaptchaFor DisCapTy, a Captcha is simply a code with any possible objects that can be returned, for example, it is one code (Like "12345") with an image (Usually aPIL.Image.Imageobject)
This is because DisCapTy uses the concept of generators that are used to generate a captcha from a given code, and it can return anything.DisCapTy comes with 3 builtin generators:TextGenerator : Text based captchaWheezyGenerator : Image based captchaImageGenerator : Image based captchaCreating Captcha manuallyimportdiscaptydefgenerate_a_captcha(initial_input:str)->discapty.Captcha:# This generator returns an obfuscated text.captcha_for_user=discapty.TextGenerator().generate(initial_input)# Create a Captcha object, the first argument is the clear code, the second is the obfuscated code. Anything goes.returndiscapty.Captcha(initial_input,captcha_for_user)# Generate your Captcha.captcha=generate_a_captcha("12345")# Show the obfuscated code. See https://discapty.readthedocs.io for more information on this object.show_captcha_to_user(captcha.captcha)Checking user's inputimportdiscapty# Generate your Captcha.captcha:discapty.Captcha=generate_a_captcha("12345")# This is your user's input hereuser_input:str='12345'ifcaptcha.check(user_input)isTrue:# The user input is correctprint("Correct!")else:# The user input is incorrectprint("Incorrect!")What's great with the.checkmethod is that you can specify if you need to remove space in the user's input and/or check casing.Creating Captcha manually is not a recommended way, because DisCapTy comes with its opinionated challenge runner & is inefficient anyway.Create a Challengeimportdiscaptychallenge=discapty.Challenge(discapty.TextGenerator(),retries=3)captcha=challenge.begin()# We cannot provide typehint here, `captcha` is a `typing.Any` and cannot help you, it'll be your# job to know what you'll get as a captcha.send_captcha_to_user(captcha)user_input:str=get_user_input()is_correct:bool=challenge.check(user_input)# If the user's input is correct, the challenge ends, if not, `challenge.attempted_tries` will get# +1, and if it is greater than the retries that has been set, then an error is raised when using# `.check`Please see thedocumentationfor more information on how the library work.ContactYou can join my Discord server for any help:https://discord.gg/WdcFUH7thsDisCapTy is an open-source project distributed under the MIT license:DisCapTy uses theRobotofont as default font.This fontis licensed underApache-2.0.