Python API Client for Pi-hole 6
Project description
🍓 pihole6api
This package provides a simple, modular SDK for the PiHole 6 REST API.
Features
- Automatically handles authentication and renewal
- Graceful error management
- Logically organized modules
- Easily maintained
Installation
Install using pip:
pip install pihole6api
Install from source:
git clone https://github.com/sbarbett/pihole6api.git
cd pihole6api
pip install -e .
Quick Start
Initialize the Client
from pihole6api import PiHole6Client
client = PiHole6Client("https://your-pihole.local/", "your-password")
Example Usage
Get Pi-Hole Metrics
history = client.metrics.get_history()
print(history) # {'history': [{'timestamp': 1740120900, 'total': 0, 'cached': 0 ...}]}
queries = client.metrics.get_queries()
print(queries)
Enable/Disable Blocking
client.dns_control.set_blocking_status(False, 60)
print(client.dns_control.get_blocking_status()) # {'blocking': 'disabled', 'timer': 60 ...}
Manage Groups
client.group_management.add_group("Custom Group", comment="For testing")
client.group_management.delete_group("Custom Group")
Manage Domains
client.domain_management.add_domain("ads.example.com", "deny", "exact")
client.domain_management.delete_domain("ads.example.com", "deny", "exact")
Manage Links
client.list_management.add_list("https://example.com/blocklist.txt", "block")
client.list_management.delete_list("https://example.com/blocklist.txt", "block")
Export/Import PiHole Settings
# Export settings and save as a .zip file
with open("pihole-settings.zip", "wb") as f:
f.write(client.config.export_settings())
client.config.import_settings("pihole-settings.zip", {"config": True, "gravity": {"group": True}})
Flush Logs & Restart DNS
client.actions.flush_logs()
client.actions.restart_dns()
API Modules
| Module | Description |
|---|---|
metrics |
Query history, top clients/domains, DNS stats |
dns_control |
Enable/disable blocking |
group_management |
Create, update, and delete groups |
domain_management |
Allow/block domains (exact & regex) |
client_management |
Manage client-specific rules |
list_management |
Manage blocklists (Adlists) |
config |
Modify Pi-hole configuration |
ftl_info |
Get Pi-hole core process (FTL) info |
dhcp |
Manage DHCP leases |
network_info |
View network devices, interfaces, routes |
actions |
Flush logs, restart services |
Contributing
Please check CONTRIBUTING.md for contribution guidelines.
Changelog
See CHANGELOG.md for a list of changes.
License
This project is license under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pihole6api-0.2.1.tar.gz
(14.1 kB
view details)
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 pihole6api-0.2.1.tar.gz.
File metadata
- Download URL: pihole6api-0.2.1.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbf416bc868dce4076d26780c5495e4496d8960ad2e8a9794cc78e1ab93233f9
|
|
| MD5 |
f961c14f2cac3f8d51d13bf928c6d8d9
|
|
| BLAKE2b-256 |
57e91dd06bee9b41c1b0d83ca8b31330cf21e9cca38d655a97e83a70bef772dc
|
File details
Details for the file pihole6api-0.2.1-py3-none-any.whl.
File metadata
- Download URL: pihole6api-0.2.1-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc8775932cff7cee73d41e4e2ecbebb7b5c92e1c4fed1eab4de1ffbfafecf277
|
|
| MD5 |
eac2583d7bcf22826305dd39ebf3793f
|
|
| BLAKE2b-256 |
cfa316803cf5cf9a62072ed198ceda811ba42bcd74ff8e6e67dced2936573941
|