Advertisement
ElegantAlchemist

Untitled

Jul 9th, 2019
827
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. import os
  2. import json
  3. import urllib2
  4. import sys
  5. import requests
  6. from inky import InkyWHAT
  7. from PIL import Image, ImageFont, ImageDraw
  8. from font_fredoka_one import FredokaOne
  9. from font_source_serif_pro import SourceSerifProSemibold
  10. from font_source_sans_pro import SourceSansProSemibold
  11. from time import gmtime, strftime
  12.  
  13. # Set current directory
  14.  
  15. os.chdir(os.path.dirname(os.path.abspath(__file__)))
  16.  
  17. # Set up the correct display and scaling factors
  18. inky_display = InkyWHAT("red")
  19. inky_display.set_border(inky_display.WHITE)
  20.  
  21. # inky_display.set_rotation(180)
  22.  
  23. w = inky_display.WIDTH
  24. h = inky_display.HEIGHT
  25.  
  26. # Create a new canvas to draw on
  27. img = Image.new("P", (inky_display.WIDTH, inky_display.HEIGHT))
  28. draw = ImageDraw.Draw(img)
  29.  
  30. # get api data
  31.  
  32. try:
  33. f = urllib2.urlopen('http://pi.hole/admin/api.php')
  34. json_string = f.read()
  35. parsed_json = json.loads(json_string)
  36. adsblocked = parsed_json['ads_blocked_today']
  37. ratioblocked = parsed_json['ads_percentage_today']
  38. domainsblocked = parsed_json['domains_being_blocked']
  39. status = parsed_json['status']
  40. queries = parsed_json['dns_queries_today']
  41. gravity = parsed_json['gravity_last_updated']
  42. f.close()
  43. except:
  44. queries = '?'
  45. adsblocked = '?'
  46. ratio = '?'
  47.  
  48. try:
  49. f = urllib2.urlopen('http://pi.hole/admin/api.php?topItems=1&auth=*insertyourpiAPIkeyhere*')
  50. json_string = f.read()
  51. parsed_json = json.loads(json_string)
  52. topquery = parsed_json['top_queries']
  53. topad = parsed_json['top_ads']
  54. f.close()
  55. except:
  56. topclient = '?'
  57. topad = '?'
  58.  
  59. try:
  60. lastblocked = requests.get('http://pi.hole/admin/api.php?recentBlocked&auth=*insertyourpiAPIkeyhere*')
  61. except:
  62. response = '?'
  63.  
  64. catfont = ImageFont.truetype(SourceSerifProSemibold, 20)
  65. datafont = ImageFont.truetype(SourceSansProSemibold, 20)
  66. titlefont = ImageFont.truetype(FredokaOne,22)
  67.  
  68. inky_display = InkyWHAT("red")
  69. inky_display.set_border(inky_display.WHITE)
  70.  
  71. draw.text((10,10), "Pi-Hole Monitor", inky_display.RED, titlefont)
  72.  
  73. draw.text((10,40), "HOSTNAME:", inky_display.BLACK, catfont)
  74. draw.text((130,40), "MY-HOST-NAME", inky_display.RED, datafont)
  75.  
  76. draw.text((10,70), "Status:", inky_display.BLACK, catfont)
  77. draw.text((85,70), str(status), inky_display.RED, datafont)
  78. draw.text((200,70), str(strftime("%d-%m-%y %H:%M:%S", gmtime())), inky_display.RED, datafont)
  79.  
  80. draw.text((10,100), "Queries/24h:", inky_display.BLACK, catfont)
  81. draw.text((135,100), str(queries), inky_display.RED, datafont)
  82.  
  83. draw.text((200,100), "Blocked:", inky_display.BLACK, catfont)
  84. draw.text((300,100), str(adsblocked), inky_display.RED, datafont)
  85.  
  86. draw.text((10,130), "Percentage blocked:", inky_display.BLACK, catfont)
  87. draw.text((200,130), str("%.1f" % round(ratioblocked,2)) + "%", inky_display.RED, datafont)
  88.  
  89. draw.text((10,160), "Domains in Gravity:", inky_display.BLACK, catfont)
  90. draw.text((200,160), str(domainsblocked), inky_display.RED, datafont)
  91.  
  92. draw.text((10,190), "Top Query:", inky_display.BLACK, catfont)
  93. draw.text((200,190), str(topquery), inky_display.RED, datafont)
  94.  
  95. #draw.text((10,220), "Updated:", inky_display.BLACK, catfont)
  96. #draw.text((200,220), str(strftime("%d-%m-%Y %H:%M:%S", gmtime())), inky_display.RED, datafont)
  97.  
  98. draw.text((10,250), "Last Blocked:", inky_display.BLACK, catfont)
  99. draw.text((140,250), str(lastblocked.text), inky_display.RED, datafont)
  100.  
  101.  
  102. inky_display.set_image(img)
  103.  
  104. inky_display.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement