semvec/pypi-packages huggingface dataset:
pymotivaxmc2 0.6.7
Async Python library for Emotiva XMC-2 and related devices
License: MIT
Requires Python: >=3.11
Keywords: emotiva, xmc-2, avr, home-automation, async

# pymotivaxmc2

A slim asynchronous Python library for controlling Emotiva XMC‑2 (and compatible) devices over their UDP remote interface.

## Features

- Asynchronous API for non-blocking operation
- Type-safe command and property access via enums
- Automatic protocol version negotiation
- Property change notifications
- Command-line interface for quick testing

## Installation

```bash
pip install pymotivaxmc2
```

## Quick Start

```python
import asyncio
from pymotivaxmc2 import EmotivaController, Property, Command, Zone

async def main():
    # Create controller for device at 192.168.1.50
    ctrl = EmotivaController("192.168.1.50")
    
    # Connect to the device
    await ctrl.connect()
    
    # Subscribe to volume changes
    await ctrl.subscribe(Property.VOLUME)
    
    # Register callback for volume changes
    @ctrl.on(Property.VOLUME)
    async def vol_changed(value):
        print(f"Volume is now {value} dB")
    
    # Set volume to -25 dB
    await ctrl.set_volume(-25.0)
    
    # Power on the device
    await ctrl.power_on()
    
    # Wait a minute
    await asyncio.sleep(60)
    
    # Disconnect
    await ctrl.disconnect()

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

## Command-Line Interface

The package includes a command-line interface for quick testing:

```bash
# Power control
emu-cli --host 192.168.1.50 power on
emu-cli --host 192.168.1.50 power toggle

# Volume control
emu-cli --host 192.168.1.50 volume up --step 2
emu-cli --host 192.168.1.50 volume set -28.5

# Zone 2 control
emu-cli --host 192.168.1.50 zone2 power on
emu-cli --host 192.168.1.50 zone2 volume down

# Input selection
emu-cli --host 192.168.1.50 input set hdmi3

# Status query
emu-cli --host 192.168.1.50 status power volume mute input
```

## Documentation

For more detailed documentation, visit [pymotivaxmc2.readthedocs.io](https://pymotivaxmc2.readthedocs.io/).

## Requirements

- Python 3.11 or higher
- typing-extensions 3.7.4 or higher

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Version History

- 0.6.0: Added full enums and high-level helpers
- 0.5.0: Improved notification handling
- 0.4.0: Added command-line interface
- 0.3.0: Added property subscription
- 0.2.0: Initial public release
tf-playwright-stealth 1.2.0
Makes playwright stealthy like a ninja!
License: MIT
Requires Python: <4.0,>=3.9

# 🥷🏻 tf-playwright-stealth [![PyPI version](https://img.shields.io/pypi/v/tf-playwright-stealth)](https://pypi.org/project/tf-playwright-stealth/) [![AgentQL](https://img.shields.io/badge/AgentQL-AgentQL-informational)](https://agentql.com) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://discord.gg/agentql)



> Transplanted from [puppeteer-extra-plugin-stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth).

This is a package that makes playwright stealthy like a ninja by spoofing browser features in order to reduce the chance of detection.

## Install

```
pip install tf-playwright-stealth
```

## Usage

### sync
```python
from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync

with sync_playwright() as p:
    browser = p.chromium.launch(
            headless=True,
        )
    page = browser.new_page()
    stealth_sync(page)
    page.goto("https://bot.sannysoft.com/")
    page.screenshot(path=f"example_with_stealth.png", full_page=True)
    browser.close()
```


### async

```python
from playwright.async_api import async_playwright
from playwright_stealth import stealth_async

with async_playwright() as p:
    browser = await p.chromium.launch(
            headless=True,
        )
    page = await browser.new_page()
    await stealth_async(page)
    await page.goto("https://bot.sannysoft.com/")
    await page.screenshot(path=f"example_with_stealth_async.png", full_page=True)
    await browser.close()
```
## Results
From [bot.sannysoft.com](https://bot.sannysoft.com/)
| Headless | Headful |
|----------|---------|
| ![Headless](./images/example_with_stealth_headless.png) | ![Headful](./images/example_with_stealth_headful.png) |