🍓 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.
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
|