# APiHole
This is an easy python API module for comunicating with Pi Hole through API.
Works with AdminLTE v. 3
## Install:
```bash
pip install APiHole
```
## Get your Pi Hole API key from here:
```bash
sudo cat /etc/pihole/setupVars.conf | grep PASSWORD
```
## Usage
```python
from APiHole import PiHole
PiHoleAPI='your pi hole API key'
PiIP='your pi hole IP'
# Print API version (good for testing communication), (return string)
print(PiHole.GetVer(PiIP))
# get PiHole summary style format, (return dict)
print(PiHole.GetSummary(PiIP,PiHoleAPI,False))
# get PiHole summary raw format, (return dict)
print(PiHole.GetSummary(PiIP,PiHoleAPI,True))
# Get PiHole gravity status , (return dict)
print(PiHole.GetGravity(PiIP,PiHoleAPI))
# Get PiHole status, (return string)
PiHole.GetStatus(PiIP)
# Get PiHole 7 top items, split and convert to list (return dict)
Items=PiHole.GetTopItems(PiIP,PiHoleAPI,7)
if not len(Items) == 0:
ItemsTop=Items['top_queries']
resultListTOP = list(ItemsTop.items())
rtnTOP=[]
ItemsADS=Items['top_ads']
resultListADS = list(ItemsTop.items())
rtnTOP=[]
rtnADS=[]
for l in range(len(resultListTOP)):
rtnTOP.append(str(resultListTOP[l][0])+' : '+str(resultListTOP[l][1]))
rtnADS.append(str(resultListADS[l][0])+' : '+str(resultListADS[l][1]))
print('top_queries\n'+str(rtnTOP))
print('top_ads\n'+str(rtnADS))
# Enable PiHole (return string)
PiHole.Enable(PiIP,PiHoleAPI)
# Disable PiHole for 2 sec (return string)
PiHole.Disable(PiIP,PiHoleAPI,2)
# Get top clients (return string)
PiHole.GetTopClients(PiIP,PiHoleAPI)
# Add google.com to white list (return boolean)
PiHole.AddWhite(PiIP,PiHoleAPI,'google.com')
# Add google.com to block list (return boolean)
PiHole.AddBlack(PiIP,PiHoleAPI,'google.com')
# Get recent blocked domain, (return string)
PiHole.GetRecentBlocked(PiIP,PiHoleAPI)
# Get destinations in %, (return dict)
PiHole.GetDestination(PiIP,PiHoleAPI)
# Get query types in %, (return dict)
PiHole.GetQueryTypes(PiIP,PiHoleAPI)
# Get clients names, (return dict)
PiHole.GetClientNames(PiIP,PiHoleAPI)
# Get data of clients over time, (return dict)
PiHole.GetOverTimeDataClients(PiIP,PiHoleAPI)
# Get pi hole DNS port, (return string)
PiHole.GetDnsPort(PiIP,PiHoleAPI)
# Get pi hole chche info, (return dict)
PiHole.GetCacheInfo(PiIP,PiHoleAPI)
# Get pi hole data of 10 min
PiHole.GetOverTimeData10mins(PiIP,PiHoleAPI)
# Remove 'google.com' from block list
PiHole.RemoveBlock(PiIP,PiHoleAPI,'google.com')
# Add facebook regex to block list (return boolean)
PiHole.AddRegexBlock(PiIP,PiHoleAPI,'facebook')
# Remove facebook regex from block list (return boolean)
PiHole.RemoveRegexBlock(PiIP,PiHoleAPI,'facebook')
```
### TODOs
### Change log
* rev 0.0.1 - Initial release.
* rev 0.0.2 (by Dan Taeyoung)
* Typo fix.
* Add RemoveBlock function.
* Add AddRegexBlock function.
* Add RemoveRegexBlock function.
* rev 0.0.3 - Add raw syle summary (asked by GalFawkes)
## Feedback
If you have any feedback, please reach out to us at shmulik.debby@gmail.com
Raw data
{
"_id": null,
"home_page": "https://github.com/sdebby/APiHole",
"name": "APiHole",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "PiHole, pi.hole, API",
"author": "Shmulik Debby",
"author_email": "shmulik.debby@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c2/36/f990387c4c2592cb5e5e539941561fc0519d10e24b2b818e1fed61c553aa/APiHole-0.0.3.tar.gz",
"platform": null,
"description": "\r\n# APiHole\r\n\r\nThis is an easy python API module for comunicating with Pi Hole through API.\r\nWorks with AdminLTE v. 3\r\n\r\n## Install:\r\n\r\n```bash\r\npip install APiHole\r\n```\r\n\r\n## Get your Pi Hole API key from here:\r\n\r\n```bash\r\nsudo cat /etc/pihole/setupVars.conf | grep PASSWORD\r\n```\r\n\r\n## Usage\r\n```python\r\nfrom APiHole import PiHole\r\n\r\nPiHoleAPI='your pi hole API key'\r\nPiIP='your pi hole IP'\r\n\r\n# Print API version (good for testing communication), (return string)\r\nprint(PiHole.GetVer(PiIP))\r\n\r\n# get PiHole summary style format, (return dict)\r\nprint(PiHole.GetSummary(PiIP,PiHoleAPI,False))\r\n\r\n# get PiHole summary raw format, (return dict)\r\nprint(PiHole.GetSummary(PiIP,PiHoleAPI,True))\r\n\r\n# Get PiHole gravity status , (return dict)\r\nprint(PiHole.GetGravity(PiIP,PiHoleAPI))\r\n\r\n# Get PiHole status, (return string)\r\nPiHole.GetStatus(PiIP)\r\n\r\n# Get PiHole 7 top items, split and convert to list (return dict)\r\nItems=PiHole.GetTopItems(PiIP,PiHoleAPI,7)\r\nif not len(Items) == 0:\r\n ItemsTop=Items['top_queries']\r\n resultListTOP = list(ItemsTop.items())\r\n rtnTOP=[]\r\n ItemsADS=Items['top_ads']\r\n resultListADS = list(ItemsTop.items())\r\n rtnTOP=[]\r\n rtnADS=[]\r\n for l in range(len(resultListTOP)):\r\n rtnTOP.append(str(resultListTOP[l][0])+' : '+str(resultListTOP[l][1]))\r\n rtnADS.append(str(resultListADS[l][0])+' : '+str(resultListADS[l][1]))\r\n\r\n print('top_queries\\n'+str(rtnTOP))\r\n print('top_ads\\n'+str(rtnADS))\r\n\r\n# Enable PiHole (return string)\r\nPiHole.Enable(PiIP,PiHoleAPI)\r\n\r\n# Disable PiHole for 2 sec (return string)\r\nPiHole.Disable(PiIP,PiHoleAPI,2)\r\n\r\n# Get top clients (return string)\r\nPiHole.GetTopClients(PiIP,PiHoleAPI)\r\n\r\n# Add google.com to white list (return boolean)\r\nPiHole.AddWhite(PiIP,PiHoleAPI,'google.com')\r\n\r\n# Add google.com to block list (return boolean)\r\nPiHole.AddBlack(PiIP,PiHoleAPI,'google.com')\r\n\r\n# Get recent blocked domain, (return string)\r\nPiHole.GetRecentBlocked(PiIP,PiHoleAPI)\r\n\r\n# Get destinations in %, (return dict)\r\nPiHole.GetDestination(PiIP,PiHoleAPI)\r\n\r\n# Get query types in %, (return dict)\r\nPiHole.GetQueryTypes(PiIP,PiHoleAPI)\r\n\r\n# Get clients names, (return dict)\r\nPiHole.GetClientNames(PiIP,PiHoleAPI)\r\n\r\n# Get data of clients over time, (return dict)\r\nPiHole.GetOverTimeDataClients(PiIP,PiHoleAPI)\r\n\r\n# Get pi hole DNS port, (return string)\r\nPiHole.GetDnsPort(PiIP,PiHoleAPI)\r\n\r\n# Get pi hole chche info, (return dict)\r\nPiHole.GetCacheInfo(PiIP,PiHoleAPI)\r\n\r\n# Get pi hole data of 10 min \r\nPiHole.GetOverTimeData10mins(PiIP,PiHoleAPI)\r\n\r\n# Remove 'google.com' from block list\r\nPiHole.RemoveBlock(PiIP,PiHoleAPI,'google.com')\r\n\r\n# Add facebook regex to block list (return boolean)\r\nPiHole.AddRegexBlock(PiIP,PiHoleAPI,'facebook')\r\n\r\n# Remove facebook regex from block list (return boolean)\r\nPiHole.RemoveRegexBlock(PiIP,PiHoleAPI,'facebook')\r\n```\r\n### TODOs\r\n\r\n\r\n### Change log\r\n* rev 0.0.1 - Initial release.\r\n* rev 0.0.2 (by Dan Taeyoung)\r\n\t* Typo fix.\r\n\t* Add RemoveBlock function.\r\n\t* Add AddRegexBlock function.\r\n\t* Add RemoveRegexBlock function.\r\n* rev 0.0.3 - Add raw syle summary (asked by GalFawkes)\r\n\r\n## Feedback\r\n\r\nIf you have any feedback, please reach out to us at shmulik.debby@gmail.com\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "API module for Pi Hole",
"version": "0.0.3",
"project_urls": {
"Homepage": "https://github.com/sdebby/APiHole"
},
"split_keywords": [
"pihole",
" pi.hole",
" api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c236f990387c4c2592cb5e5e539941561fc0519d10e24b2b818e1fed61c553aa",
"md5": "74c901f2703b0244fce14b6af2f51966",
"sha256": "0d9c0eaef2a97950e62486694ad2ed939d1e8cd30541fea686d763896096c226"
},
"downloads": -1,
"filename": "APiHole-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "74c901f2703b0244fce14b6af2f51966",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5184,
"upload_time": "2024-06-24T18:31:28",
"upload_time_iso_8601": "2024-06-24T18:31:28.764396Z",
"url": "https://files.pythonhosted.org/packages/c2/36/f990387c4c2592cb5e5e539941561fc0519d10e24b2b818e1fed61c553aa/APiHole-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-24 18:31:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sdebby",
"github_project": "APiHole",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "apihole"
}