{ "info": { "author": "Fahreev Eldar", "author_email": "fahreeve@yandex.ru", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "vk.com API python wrapper for asyncio\n=====================================\nfor old version of python you can use https://github.com/dimka665/vk\n\nFeatures\n--------\n* asynchronous\n* support python 3.5+ versions\n* have only one dependency - ``aiohttp``\n* support two-factor authentication\n* support socks proxy with ``aiosocks``\n* support rate limit of requests\n* support Long Poll connection\n\nInstall\n-------\n\n.. code-block:: bash\n\n pip install aiovk\n\nExamples\n========\nAnnotation\n----------\nIn all the examples below, I will give only the ``{code}``\n\n.. code-block:: python\n\n async def func():\n {code}\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(func())\n\n\nAuthorization\n-------------\n**TokenSession** - if you already have token or you use requests which don't require token\n\n.. code-block:: python\n\n session = TokenSession()\n session = TokenSession(access_token='asdf123..')\n\n**ImplicitSession** - client authorization in js apps and standalone (desktop and mobile) apps\n\n.. code-block:: python\n\n >>> session = ImplicitSession(USER_LOGIN, USER_PASSWORD, APP_ID)\n >>> await session.authorize()\n >>> session.access_token\n asdfa2321afsdf12eadasf123...\n\nWith scopes:\n\n.. code-block:: python\n\n ImplicitSession(USER_LOGIN, USER_PASSWORD, APP_ID, 'notify')\n ImplicitSession(USER_LOGIN, USER_PASSWORD, APP_ID, 'notify,friends')\n ImplicitSession(USER_LOGIN, USER_PASSWORD, APP_ID, ['notify', 'friends'])\n ImplicitSession(USER_LOGIN, USER_PASSWORD, APP_ID, 3) # notify and friends\n\nAlso you can use ``SimpleImplicitSessionMixin`` for entering confirmation code\nor captcha key\n\n**AuthorizationCodeSession** - authorization for server apps or Open API\n\nSee https://vk.com/dev/authcode_flow_user for getting the CODE\n\n.. code-block:: python\n\n >>> session = AuthorizationCodeSession(APP_ID, APP_SECRET, REDIRECT_URI, CODE)\n >>> await session.authorize()\n >>> session.access_token\n asdfa2321afsdf12eadasf123...\n\nOr:\n\n.. code-block:: python\n\n >>> session = AuthorizationCodeSession(APP_ID, APP_SECRET, REDIRECT_URI)\n >>> await session.authorize(CODE)\n >>> session.access_token\n asdfa2321afsdf12eadasf123...\n\n**Authorization using context manager** - you won't need to use session.close() after work\n\n.. code-block:: python\n\n async with aiovk.TokenSession(access_token=YOUR_VK_TOKEN) as ses:\n api = API(ses)...\n\nAnd your session will be closed after all done or code fail(similar to simple \"with\" usage)\nWorks with all types of authorization\n\nDrivers\n-------\n**HttpDriver** - default driver for using ``aiohttp``\n\n.. code-block:: python\n\n >>> driver = HttpDriver()\n >>> driver = HttpDriver(timeout=10) # default timeout for all requests\n\n.. code-block:: python\n\n >>> driver = Socks5Driver(PROXY_ADDRESS, PORT) # 1234 is port\n >>> driver = Socks5Driver(PROXY_ADDRESS, PORT, timeout=10)\n >>> driver = Socks5Driver(PROXY_ADDRESS, PORT, PROXY_LOGIN, PROXY_PASSWORD, timeout=10)\n\nHow to use custom driver with session:\n\n.. code-block:: python\n\n >>> session = TokenSession(..., driver=HttpDriver())\n\nHow to use driver with own loop:\n\n.. code-block:: python\n\n >>> loop = asyncio.get_event_loop()\n >>> asyncio.set_event_loop(None)\n >>> session = TokenSession(driver=HttpDriver(loop=loop)) # or Socks5Driver\n\nHow to use driver with custom http session object:\n\nSolve next problem: https://stackoverflow.com/questions/29827642/asynchronous-aiohttp-requests-fails-but-synchronous-requests-succeed\n\n.. code-block:: python\n\n >>> connector = aiohttp.TCPConnector(verify_ssl=False)\n >>> session = aiohttp.ClientSession(connector=connector)\n >>> driver = HttpDriver(loop=loop, session=session)\n\n\n**LimitRateDriverMixin** - mixin class what allow you create new drivers with speed rate limits\n\n.. code-block:: python\n\n >>> class ExampleDriver(LimitRateDriverMixin, HttpDriver):\n ... requests_per_period = 3\n ... period = 1 #seconds\n\nVK API\n------\nFirst variant:\n\n.. code-block:: python\n\n >>> session = TokenSession()\n >>> api = API(session)\n >>> await api.users.get(user_ids=1)\n [{'first_name': 'Pavel', 'last_name': 'Durov', 'id': 1}]\n\nSecond variant:\n\n.. code-block:: python\n\n >>> session = TokenSession()\n >>> api = API(session)\n >>> await api('users.get', user_ids=1)\n [{'first_name': 'Pavel', 'last_name': 'Durov', 'id': 1}]\n\nAlso you can add ``timeout`` argument for each request or define it in the session\n\nSee https://vk.com/dev/methods for detailed API guide.\n\nLazy VK API\n-----------\nIt is useful when a bot has a large message flow\n\n.. code-block:: python\n\n >>> session = TokenSession()\n >>> api = LazyAPI(session)\n >>> message = api.users.get(user_ids=1)\n >>> await message()\n [{'first_name': 'Pavel', 'last_name': 'Durov', 'id': 1}]\n\nSupports both variants like API object\n\nLong Poll\n---------\nUse exist API object\n\n.. code-block:: python\n\n >>> api = API(session)\n >>> lp = LongPoll(api, mode=2) # default wait=25\n >>> await lp.wait()\n {\"ts\":1820350345,\"updates\":[...]}\n >>> await lp.wait()\n {\"ts\":1820351011,\"updates\":[...]}\n\nUse Session object\n\n.. code-block:: python\n\n >>> lp = LongPoll(session, mode=2) # default wait=25\n >>> await lp.wait()\n {\"ts\":1820350345,\"updates\":[...]}\n >>> await lp.get_pts() # return pts\n 191231223\n >>> await lp.get_pts(need_ts=True) # return pts, ts\n 191231223, 1820350345\n\nNotice that ``wait`` value only for long pool connection.\n\nReal pause could be more ``wait`` time because of need time\nfor authorization (if needed), reconnect and etc.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Fahreeve/aiovk", "keywords": "vk.com api vk wrappper asyncio", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "aiovk-varnar-fork", "package_url": "https://pypi.org/project/aiovk-varnar-fork/", "platform": "", "project_url": "https://pypi.org/project/aiovk-varnar-fork/", "project_urls": { "Homepage": "https://github.com/Fahreeve/aiovk" }, "release_url": "https://pypi.org/project/aiovk-varnar-fork/2.1.0/", "requires_dist": [ "aiohttp (>=2.3.10)" ], "requires_python": "", "summary": "vk.com API python wrapper for asyncio", "version": "2.1.0" }, "last_serial": 4546368, "releases": { "2.1.0": [ { "comment_text": "", "digests": { "md5": "c6d136ba08dab42e3fcec95b921fb536", "sha256": "e17e97338b1a03b406cf8b7dedbda7d07e55cb929ca41984793a6c64e188c297" }, "downloads": -1, "filename": "aiovk_varnar_fork-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c6d136ba08dab42e3fcec95b921fb536", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13966, "upload_time": "2018-11-30T09:13:45", "url": "https://files.pythonhosted.org/packages/b6/0f/858b33f672fc6a3934b4419e47f8420a3d19bdd4989fa8c76e89679af6fe/aiovk_varnar_fork-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b52f2b3d8e41bfa1d1ad750a10156e1", "sha256": "7ec6ce58924c3425e9abb93da9fbebf17102d65103e4c3d9422285c2b00dd450" }, "downloads": -1, "filename": "aiovk_varnar_fork-2.1.0.tar.gz", "has_sig": false, "md5_digest": "8b52f2b3d8e41bfa1d1ad750a10156e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10449, "upload_time": "2018-11-30T09:13:47", "url": "https://files.pythonhosted.org/packages/6d/b4/94a13c7bd67fab5f67ff1feff4bb434c86d4d430c3408b34688e63c2e73d/aiovk_varnar_fork-2.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c6d136ba08dab42e3fcec95b921fb536", "sha256": "e17e97338b1a03b406cf8b7dedbda7d07e55cb929ca41984793a6c64e188c297" }, "downloads": -1, "filename": "aiovk_varnar_fork-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c6d136ba08dab42e3fcec95b921fb536", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13966, "upload_time": "2018-11-30T09:13:45", "url": "https://files.pythonhosted.org/packages/b6/0f/858b33f672fc6a3934b4419e47f8420a3d19bdd4989fa8c76e89679af6fe/aiovk_varnar_fork-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b52f2b3d8e41bfa1d1ad750a10156e1", "sha256": "7ec6ce58924c3425e9abb93da9fbebf17102d65103e4c3d9422285c2b00dd450" }, "downloads": -1, "filename": "aiovk_varnar_fork-2.1.0.tar.gz", "has_sig": false, "md5_digest": "8b52f2b3d8e41bfa1d1ad750a10156e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10449, "upload_time": "2018-11-30T09:13:47", "url": "https://files.pythonhosted.org/packages/6d/b4/94a13c7bd67fab5f67ff1feff4bb434c86d4d430c3408b34688e63c2e73d/aiovk_varnar_fork-2.1.0.tar.gz" } ] }