A REST API client for pihole v6
Project description
pyhole6 API Client
pyhole6 is an asynchronous Python client for interacting with the Pi-hole v6.0 REST API. It provides a simple interface to perform various operations on your Pi-hole server.
Features
- Asynchronous API calls using aiohttp
- Automatic session management
- Logging with local timestamps
- Easy-to-use methods for common Pi-hole operations
Installation
pip install pyhole6
Usage
Initializing the Client
from pyhole6 import Pyhole6
import asyncio
async def main():
client = Pyhole6("http://pi.hole", "your_password")
await client.connect()
# Use the client here
await client.disconnect()
asyncio.run(main())
Using as a Context Manager
async with Pyhole6("http://pi.hole", "your_password") as client:
# Use the client here
Available Methods
Statistics
stats = await client.stats.summary()
print(stats)
now = datetime.datetime.now()
_from = int(datetime.datetime.timestamp(now - datetime.timedelta(days=3)))
until = int(datetime.datetime.timestamp(now))
top_clients = await client.stats.top_clients(blocked=True, count=5)
# Top 10 clients in the last 3 days
top_clients_date_range = await client.stats.database('top_clients', (_from, until), blocked=False, count=10)}")
DNS - Disable Blocking
# Disable blocking for 5 minutes (300 seconds)
result = await client.dns.disable(timer=300)
# Disable blocking for indefinitely
result = await client.dns.disable()
DNS - Enable Blocking
# Enable blocking for 5 minutes (300 seconds
result = await client.dns.enable(timer=300)
# Enable blocking indefinitely
result = await client.dns.disable()
DNS - Get Blocking Status
status = await client.dns.status()
print(status)
Logging
The client includes built-in logging with local timestamps. You can access the logger through client.logger:
client.logger.info("Custom log message")
Error Handling
The client will raise exceptions for authentication failures and other API errors. It's recommended to use try-except blocks when making API calls:
try:
await client.connect()
stats = await client.get_stats()
except Exception as e:
print(f"An error occurred: {e}")
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GPLv3 License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyhole6-0.0.3.tar.gz.
File metadata
- Download URL: pyhole6-0.0.3.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d6015acea63c19bfec2a65ba0121fefacfe47633c0b63dbd4ff3901d08e381c
|
|
| MD5 |
1444f7026ac9b441707ad5c0f4764848
|
|
| BLAKE2b-256 |
3f8daad873a4b144716b4c754a65fc417aa72f1ab701d760d9a1595eacbb1e1f
|
File details
Details for the file pyhole6-0.0.3-py3-none-any.whl.
File metadata
- Download URL: pyhole6-0.0.3-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.9.6 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61eae0af15a633f4ae710717535a3e34a7d1e217b3d2fd37cd0d9085844e1904
|
|
| MD5 |
5f3be4375f612c46ba9851da7ec505b4
|
|
| BLAKE2b-256 |
209996dd63acbfd5e708d1d3880a0248d3e025f42d797899257f5dd23576c7be
|