def _draw_listener(self, draw): font_bb = get_font("ter-124b.pcf", 24) font_s = get_font("ter-112b.pcf", 12) font_ss = get_font("tom-thumb.bdf", 6) listener = self.listener if listener: if listener['total_count'] > 0: total_count = "%d" % listener['total_count'] total_count_size = font_bb.getsize(total_count) draw.text((2, -3), total_count, 1, font_bb) offset = total_count_size[0] + 12 per_stream = listener['per_stream'] mp3 = "mp3: %2d" % (per_stream['mp3']['count'] if 'mp3' in per_stream else 0) draw.text((offset, 1), mp3, 1, font=font_ss) ogg = "ogg: %2d" % (per_stream['ogg']['count'] if 'ogg' in per_stream else 0) draw.text((offset, 10), ogg, 1, font=font_ss) row_size = font_ss.getsize(mp3) offset += (row_size[0] + 8) opus = "opus: %2d" % (per_stream['opus']['count'] if 'opus' in per_stream else 0) draw.text((offset, 1), opus, 1, font=font_ss) oggh = "oggh: %2d" % (per_stream['ogghq']['count'] if 'ogghq' in per_stream else 0) draw.text((offset, 10), oggh, 1, font=font_ss) else: draw.text((1, -6), ";__;", 1, font=font_bb) draw.text((60, -3), "NONE", 1, font=font_bb)
def _draw_date(self, draw): font_bb = get_font("ter-124b.pcf", 24) font_s = get_font("ter-112b.pcf", 12) font_ss = get_font("ter-112n.pcf", 12) month = datetime.today().strftime('%d') msize = font_bb.getsize(month) wd = datetime.today().strftime('%b') m = datetime.today().strftime('%Y') draw.text((0, -3), month, 1, font=font_bb) draw.text((msize[0] + 2, -2), wd, 1, font=font_ss) draw.text((msize[0] + 2, 6), m, 1, font=font_s)
def _draw_value(self, draw, width): font = get_font("tom-thumb.bdf", 6) text = "{value}{unit}".format(value=self._current_value, unit=self._unit) textsize = font.getsize(text) draw.text((width-textsize[0]+1, 0), text, 1, font=font) return textsize[0]
def get_view(self, width, height): font_bb = get_font("ter-124b.pcf", 24) font_s = get_font("ter-112b.pcf", 12) font_ss = get_font("ter-112n.pcf", 12) image = Image.new('1', (width, height), (0)) draw = ImageDraw.Draw(image) if time.time() - self._last_fetch > self.api_interval: if self._get_data(): self._last_fetch = time.time() else: draw.text((1, -3), "API ERROR", 1, font=font_bb) return list(image.getdata()) self._draw_listener(draw) return list(image.getdata())
def _draw_clock(self, draw, width): font = get_font("ter-124b.pcf", 24) if datetime.today().second % 2 == 0: self.dot = False text = datetime.today().strftime('%H:%M') else: self.dot = True text = datetime.today().strftime('%H %M') tsize = font.getsize(text) draw.text(((width - tsize[0]) // 2 + 25, -3), text, (1), font=font)
def get_view(self, width, height): image = Image.new('1', (width, height), 0) draw = ImageDraw.Draw(image) status = self._get_status() if status['status'] != 'stopped': draw.line(((0, 14), ((status['position'] / 100) * width, 14)), 1, 2) font_ss = get_font("ter-112n.pcf", 12) tsize = font_ss.getsize(status['title']) draw.text((-self.offset, 0), status['title'], 1, font=font_ss) if time.time() - self._last_offset > self._scrolltime: if tsize[0] - self.offset > width: self.offset += 50 elif tsize[0] - self.offset <= width: self.offset = 0 self._last_offset = time.time() return list(image.getdata())
def _draw_title(self, draw): font = get_font("tom-thumb.bdf", 6) draw.text((0, 0), self._label or self._data.get('id', '<unknown>'), 1, font=font)