goodread-phat/good.py
2018-08-28 21:03:11 -04:00

88 lines
2.3 KiB
Python

import requests
import json
import os
import sys
from selenium import webdriver
import datetime
from PIL import ImageFont
import inkyphat
FAKE = True
def main():
pages = {'2014': 7375, '2015': 23508, '2016': 17696, '2017': 19706, '2018': 9388}
books = {"2018":33,"2017":64,"2016":47,"2015":75,"2014":19}
if not FAKE:
pages, books = get_goodreads_stats()
stats = get_stats(pages, books)
draw(stats)
def get_goodreads_stats():
payload = {
'email': os.environ.get('EMAIL'),
'password': os.environ.get('PASSW'),
}
LOGIN_URL= 'https://www.goodreads.com/user/sign_in'
driver = webdriver.PhantomJS()
driver.get(LOGIN_URL)
username = driver.find_element_by_id('user_email')
password = driver.find_element_by_id('user_password')
username.send_keys(payload['email'])
password.send_keys(payload['password'])
form = driver.find_element_by_name('sign_in')
form.submit()
driver.get('https://www.goodreads.com/review/stats/24381583#pages')
pages = driver.execute_script('return page_stats')
books = driver.execute_script('return year_stats')
return pages, books
def get_stats(pages, books):
coords = {
"year": [
(55, 17),(109,17),(163,17)
],
"books": [
(55, 45),(109,45),(163,45)
],
"pages": [
(55, 75),(109,75),(163,75)
],
}
_stats = []
for idx, year in enumerate(list(reversed(sorted(books.keys())))[:3]):
page_count = pages[year]
book_count = books[year]
_stats.append({
'year': [str(year), coords['year'][idx]],
'books': [str(book_count), coords['books'][idx]],
'pages': [str(page_count), coords['pages'][idx]],
})
return _stats
def draw(stats):
colour = 'red'
inkyphat.set_colour(colour)
inkyphat.set_border(inkyphat.RED)
inkyphat.set_image("./background.png")
font = ImageFont.truetype(inkyphat.fonts.AmaticSCBold, 18)
for column in ('year', 'books', 'pages'):
for year in stats:
count = year[column][0]
x,y = year[column][1]
w, h = font.getsize(count)
inkyphat.text((x, y), count, inkyphat.BLACK, font)
inkyphat.show()
if __name__ == "__main__":
main()