cidipi


Namecidipi JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryLow-level client for interacting with Chrome Devtools Protocol (CDP) for Python.
upload_time2024-06-21 08:32:54
maintainerNone
docs_urlNone
authorAprila Hijriyan
requires_python<4.0,>=3.9
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # cidipi

Low-level client for interacting with Chrome Devtools Protocol (CDP) for Python.

> [!WARNING]
> This library is in alpha. Use it at your own risk.

## Installation

```bash
pip install cidipi
```

## Usage

```python
import asyncio
import logging
from typing import cast

from cidipi.client import Browser
from cidipi.models import EventResponse, Payload, Tab
from cidipi.protocols import commands, events

logging.basicConfig(
    level=logging.DEBUG, format="[%(levelname)s] [%(name)s] %(message)s"
)
logging.getLogger("websockets.client").disabled = True


async def navigate(tab: Tab, *, url: str, wait_until: str):
    async def wait_for(data: Payload, result: asyncio.Future):
        if data.kind == "result":
            return

        cdp_event_klass = events.Page.lifecycleEvent
        cdp_event_name = cdp_event_klass.get_method_name()
        resp_data = cast(EventResponse, data.data)
        if resp_data["method"] == cdp_event_name:
            obj = cdp_event_klass(**resp_data["params"])
            if obj.name == wait_until:
                result.set_result(None)

    return await tab.execute(
        commands.Page.navigate(url=url), callback=wait_for, timeout=30
    )


async def main():
    async with Browser(headless=False, remote_port=0) as browser:

        async def run(url: str):
            async with browser.new_tab() as tab:
                await tab.execute(commands.Page.enable())
                await tab.execute(commands.Page.setLifecycleEventsEnabled(enabled=True))
                await navigate(tab, url=url, wait_until="load")

        await run("https://www.google.com")


if __name__ == "__main__":
    asyncio.run(main())
```

See the [examples/](https://github.com/aprilahijriyan/cidipi/tree/main/examples) directory to get started.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "cidipi",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": "Aprila Hijriyan",
    "author_email": "hijriyan23@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/17/36/41dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8/cidipi-0.2.0.tar.gz",
    "platform": null,
    "description": "# cidipi\n\nLow-level client for interacting with Chrome Devtools Protocol (CDP) for Python.\n\n> [!WARNING]\n> This library is in alpha. Use it at your own risk.\n\n## Installation\n\n```bash\npip install cidipi\n```\n\n## Usage\n\n```python\nimport asyncio\nimport logging\nfrom typing import cast\n\nfrom cidipi.client import Browser\nfrom cidipi.models import EventResponse, Payload, Tab\nfrom cidipi.protocols import commands, events\n\nlogging.basicConfig(\n    level=logging.DEBUG, format=\"[%(levelname)s] [%(name)s] %(message)s\"\n)\nlogging.getLogger(\"websockets.client\").disabled = True\n\n\nasync def navigate(tab: Tab, *, url: str, wait_until: str):\n    async def wait_for(data: Payload, result: asyncio.Future):\n        if data.kind == \"result\":\n            return\n\n        cdp_event_klass = events.Page.lifecycleEvent\n        cdp_event_name = cdp_event_klass.get_method_name()\n        resp_data = cast(EventResponse, data.data)\n        if resp_data[\"method\"] == cdp_event_name:\n            obj = cdp_event_klass(**resp_data[\"params\"])\n            if obj.name == wait_until:\n                result.set_result(None)\n\n    return await tab.execute(\n        commands.Page.navigate(url=url), callback=wait_for, timeout=30\n    )\n\n\nasync def main():\n    async with Browser(headless=False, remote_port=0) as browser:\n\n        async def run(url: str):\n            async with browser.new_tab() as tab:\n                await tab.execute(commands.Page.enable())\n                await tab.execute(commands.Page.setLifecycleEventsEnabled(enabled=True))\n                await navigate(tab, url=url, wait_until=\"load\")\n\n        await run(\"https://www.google.com\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\nSee the [examples/](https://github.com/aprilahijriyan/cidipi/tree/main/examples) directory to get started.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Low-level client for interacting with Chrome Devtools Protocol (CDP) for Python.",
    "version": "0.2.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e1ffdda08aedfcb5eab11bfe3f2cbbae78e200bdb1e9f0f46a30a70ff4e3d9a9",
                "md5": "24de767c07893adbf2f79041c8169ddb",
                "sha256": "723d3c77c6626412f17b7a1921d5466e5f937e42d65ebc74f978316ee11f1a4e"
            },
            "downloads": -1,
            "filename": "cidipi-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "24de767c07893adbf2f79041c8169ddb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 135668,
            "upload_time": "2024-06-21T08:32:52",
            "upload_time_iso_8601": "2024-06-21T08:32:52.863251Z",
            "url": "https://files.pythonhosted.org/packages/e1/ff/dda08aedfcb5eab11bfe3f2cbbae78e200bdb1e9f0f46a30a70ff4e3d9a9/cidipi-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "173641dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8",
                "md5": "18667b88214100ddc080064c447279be",
                "sha256": "98ed956783517531b3c6ca768b1d4d245e2834e44c00447a526f9bcdc3a7d41e"
            },
            "downloads": -1,
            "filename": "cidipi-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "18667b88214100ddc080064c447279be",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 132582,
            "upload_time": "2024-06-21T08:32:54",
            "upload_time_iso_8601": "2024-06-21T08:32:54.908103Z",
            "url": "https://files.pythonhosted.org/packages/17/36/41dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8/cidipi-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-21 08:32:54",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cidipi"
}
        
Elapsed time: 0.45047s