Skip to content

Instantly share code, notes, and snippets.

@airtonzanon
Last active April 8, 2022 13:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save airtonzanon/920d6bb6cce9fc8b55aa11f8d7231c24 to your computer and use it in GitHub Desktop.
Save airtonzanon/920d6bb6cce9fc8b55aa11f8d7231c24 to your computer and use it in GitHub Desktop.
Show languages used on the day and time spent on them - Pimorony Inky
#!/usr/bin/env python3
import argparse
import socket
import requests
import datetime
from PIL import Image, ImageFont, ImageDraw
from datetime import date
from font_hanken_grotesk import HankenGroteskBold, HankenGroteskMedium
from font_intuitive import Intuitive
from inky.auto import auto
from base64 import b64encode
inky_display = auto()
inky_display.set_border(inky_display.WHITE)
scale_size = 1
padding = 0
img = Image.new("P", (inky_display.WIDTH, inky_display.HEIGHT))
draw = ImageDraw.Draw(img)
font_footer = ImageFont.truetype(HankenGroteskMedium, 12)
font = ImageFont.truetype(HankenGroteskMedium, 20)
wakatime_api_key = ""
wakatime_user_id = ""
wakatime_api_key = wakatime_api_key.encode()
wakatime_headers = {"Authorization": "Basic " +
b64encode(wakatime_api_key).decode()}
today = date.today()
d1 = today.strftime("%Y-%m-%d")
wakatime_stats = requests.get(
"https://wakatime.com/api/v1/users/" + wakatime_user_id + "/durations?slice_by=language&date=" + d1, headers=wakatime_headers)
wakatime_languages = wakatime_stats.json()['data']
language_time = {}
for wakadata in wakatime_languages:
try:
language_time[wakadata['language']] += wakadata['duration']
except KeyError:
language_time[wakadata['language']] = wakadata['duration']
language_time = dict(sorted(language_time.items(), key=lambda item: item[1], reverse=True))
data = ""
for key, value in language_time.items():
data += "{} - {}\n".format(key, str(datetime.timedelta(seconds=value)).split(".")[0])
x = 0
y = 0
draw.text((x, y), data, inky_display.BLACK, font)
x = 0
y = 110
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
local_ip = s.getsockname()[0]
draw.text((x, y), d1, inky_display.BLACK, font_footer)
x = 175
draw.text((x, y), local_ip, inky_display.BLACK, font_footer)
inky_display.set_image(img)
inky_display.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment