{ "info": { "author": "Kelvin Fichter", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "aio-framework\n=============\n\nA Python website bot development framework (WIP)\n\nIntroduction\n------------\n\nThis project was created to aid the development of website bots and API\nwrappers. ``aio-framework`` handles task management and execution,\nsession management, and captcha queue management (with threads!).\nCurrently, captcha queue management supports 2Captcha. ``aio-framework``\nis meant to decrease development time by providing common bot and API\nwrapper functionality.\n\nBasic Usage\n-----------\n\nThis module is available via pip:\n\n::\n\n $ pip install aio-framework\n\nBasic ``ApiWrapper`` and ``Bot`` implementations are shown below.\n``Bot`` implementations *must* implement the ``execute_task`` method.\n\nApiWrapper\n~~~~~~~~~~\n\n.. code:: python\n\n # exampleapiwrapper.py\n from aio import ApiWrapper\n\n class ExampleApiWrapper(ApiWrapper):\n BASE_URL = 'https://example.com'\n\n def get_product_data(self, product_url):\n response = self.get(product_url)\n return response.json()['data'] # Or something\n\n def add_product_to_cart(self, product_data, captcha_token):\n payload = {\n 'product_data': product_data,\n 'captcha': captcha_token\n }\n endpoint = '/add-to-cart'\n response = self.post(endpoint, data=payload)\n return response.json()['success'] # Or something\n\nBot\n~~~\n\n.. code:: python\n\n # examplebot.py\n from aio import Bot\n from aio.captcha import CaptchaManager\n from exampleapiwrapper import ExampleApiWrapper\n\n class ExampleBot(Bot):\n def execute_task(self, task):\n example_api_wrapper = ExampleApiWrapper()\n\n twocaptcha_api_token = '2CAPTCHA_API_TOKEN_HERE'\n site_key = 'SITE_KEY_HERE'\n page_url = 'PAGE_URL_HERE'\n\n captcha_manager = CaptchaManager(twocaptcha_api_token, site_key, page_url)\n captcha_manager.start_captcha_queue(num_threads=5)\n\n task.status = 'STARTED'\n\n product_url = task.data['product_url']\n\n task.logger.info('Getting product data')\n product_data = example_api_wrapper.get_product_data(product_url)\n task.logger.info('Got product data!')\n\n task.logger.info('Waiting for captcha token')\n captcha_token = captcha_manager.wait_for_captcha_token()\n task.logger.info('Got captcha token!')\n\n task.logger.info('Adding product to cart')\n added = example_api_wrapper.add_product_to_cart(product_data, captcha_token)\n task.logger.info('Added product to cart!')\n\n task.status = 'FINISHED'\n\nExecuting\n~~~~~~~~~\n\n.. code:: python\n\n # main.py\n from aio import Task\n from examplebot import ExampleBot\n\n example_bot = ExampleBot()\n task_data = {\n 'product_url': 'https://example.com/product'\n }\n task = Task(task_data)\n example_bot.add_task(task)\n example_bot.start_all_tasks()\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kfichter/aio", "keywords": "sneaker bot development", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aio-framework", "package_url": "https://pypi.org/project/aio-framework/", "platform": "", "project_url": "https://pypi.org/project/aio-framework/", "project_urls": { "Homepage": "https://github.com/kfichter/aio" }, "release_url": "https://pypi.org/project/aio-framework/0.0.5.7/", "requires_dist": null, "requires_python": "", "summary": "Ayinope AIO Framework", "version": "0.0.5.7" }, "last_serial": 3485990, "releases": { "0.0.5.6": [ { "comment_text": "", "digests": { "md5": "813469678b2708f75a942020b1205fde", "sha256": "8d23bb9b0a5a559955e802f0b5c847b837f87b9c39758ab11eed58876d04ddb6" }, "downloads": -1, "filename": "aio-framework-0.0.5.6.tar.gz", "has_sig": false, "md5_digest": "813469678b2708f75a942020b1205fde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5073, "upload_time": "2017-11-25T01:37:26", "url": "https://files.pythonhosted.org/packages/3e/71/30a18c7f279e6c5a116eb9e1c72c33055db4eb105f3a8d49f76221d9e98a/aio-framework-0.0.5.6.tar.gz" } ], "0.0.5.7": [ { "comment_text": "", "digests": { "md5": "d3684ebed9755bfefb0586f95d8508bc", "sha256": "5a2c91ec568f34ad4cbf0868acdf025421b04ed87b0fa395ec73ee1ffa582f73" }, "downloads": -1, "filename": "aio-framework-0.0.5.7.tar.gz", "has_sig": false, "md5_digest": "d3684ebed9755bfefb0586f95d8508bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5092, "upload_time": "2018-01-13T05:07:46", "url": "https://files.pythonhosted.org/packages/1d/87/c4d95b304299977a968928299866b94a65a2a30ae2ab42da0ed43fdf4faa/aio-framework-0.0.5.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3684ebed9755bfefb0586f95d8508bc", "sha256": "5a2c91ec568f34ad4cbf0868acdf025421b04ed87b0fa395ec73ee1ffa582f73" }, "downloads": -1, "filename": "aio-framework-0.0.5.7.tar.gz", "has_sig": false, "md5_digest": "d3684ebed9755bfefb0586f95d8508bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5092, "upload_time": "2018-01-13T05:07:46", "url": "https://files.pythonhosted.org/packages/1d/87/c4d95b304299977a968928299866b94a65a2a30ae2ab42da0ed43fdf4faa/aio-framework-0.0.5.7.tar.gz" } ] }