aboutsummaryrefslogtreecommitdiffstats
path: root/bot.py
blob: 4f3eb6399685530d98c735d18fe85cdfba559c08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from utils import (
    draw_with_border,
    get_colors,
    get_quote,
    messages_multiline,
    randomize_location,
    set_font,
)
from PIL import Image, ImageDraw
from twython import Twython
import csv
import random
import os
from api import consumer_key, consumer_secret, access_token, access_token_secret
from datetime import datetime
twitter = Twython(consumer_key, consumer_secret, access_token, access_token_secret)


def post():
    with open("files.csv") as f:
        reader = csv.reader(f)
        chosen_row = random.choice(list(reader))
        source = chosen_row[1]
        file_extension = chosen_row[2].split(".")[1]
        filename = "pics/" + chosen_row[2]

    text = get_quote("texts/quotes.txt")
    image = Image.open(filename)
    font = set_font(image, text)  # get font size based on image size
    draw = ImageDraw.Draw(image)
    lines = messages_multiline(text, font, image)  # split up lines for text wrapping
    colors = get_colors(image.filename)  # get colors

    (x, y,faces) = randomize_location(image, lines, font)  # where to start drawing text

    for line in lines:
        height = font.getsize(line[1])[1]
        draw_with_border(x, y, line, colors[0], colors[1], font, draw)
        y = y + height

    image.save(f"to_tweet.{file_extension}")
    photo = open(f"to_tweet.{file_extension}", "rb")
    response = twitter.upload_media(media=photo)
    message = f"{text} ({source})"
    print(filename, message)
    twitter.update_status(status=message, media_ids=[response["media_id"]])
    photo.close()
    os.remove(photo.name)
    with open("log","a") as f:
        f.write(f"{datetime.now().strftime('%d-%m-%Y %H:%M:%S')}\t{filename}\t({image.size[0]} {image.size[1]})\t{font.size} ({max((font.size // 25), 2)})\t{text}\n")

post()