aboutsummaryrefslogtreecommitdiffstats
path: root/cron/hourly.py
blob: 89a60279843ee89ceb6c364f7a6a394688dd804d (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
import os
import sys

sys.path.insert(1, os.path.join(os.path.dirname(__file__), ".."))

from matplotlib.ticker import EngFormatter
from discord_webhook import DiscordWebhook
from operator import itemgetter
import subprocess
import subreddit
import database
import datetime
import time

def dump():
    subprocess.run(["rm", "-fv", "/tmp/*.sql*"])
    proc1 = subprocess.Popen(
        [
            "mysqldump", subreddit.CONFIG["mysql"]["database"], 
            "--ignore-table", "SmallYTChannel.log", "--verbose", 
            "-u", subreddit.CONFIG["mysql"]["user"], 
            "-h", subreddit.CONFIG["mysql"]["host"], 
            "-p%s" % subreddit.CONFIG["mysql"]["passwd"]
        ],
        stdout = subprocess.PIPE
    )
    proc2 = subprocess.Popen("gzip > /tmp/sytc_nolog.sql.gz", shell = True, stdin = proc1.stdout, stdout = subprocess.PIPE)
    output = proc2.communicate()

def push(fp = "/tmp/sytc_nolog.sql.gz"):
    webhook = DiscordWebhook(
        url = subreddit.CONFIG["discord_webhook"],
        content = "Hourly /u/SmallYTChannelBot database dump from %s" % datetime.datetime.now().astimezone().isoformat()
    )

    with open(fp, "rb") as f:
        webhook.add_file(file = f.read(), filename = os.path.split(fp)[-1])

    response = webhook.execute()
    subreddit.display(str(response))

if __name__ == "__main__":
    fmt = EngFormatter("B")
    starttime = time.time()
    dump()
    subreddit.display("\n\nDumped %s in %.1fs\n" % (fmt(os.path.getsize("/tmp/sytc_nolog.sql.gz")), time.time() - starttime))
    starttime = time.time()
    push()
    subreddit.display("Pushed to discord in %.2fs\n" % (time.time() - starttime))