#!/usr/bin/python3

import os
import pathlib
import sys
import urllib.request
import io
import tarfile


DBURL = "https://freewvsdb.schokokeks.org/"
dbpaths = ['/var/lib/freewvs/', str(pathlib.Path.home()) + "/.cache/freewvs/"]

target = False
for dbpath in dbpaths:
    if not os.path.isdir(dbpath):
        try:
            os.makedirs(dbpath)
        except PermissionError:
            continue
    if os.access(dbpath, os.W_OK):
        target = dbpath
        break

if not target:
    sys.exit("Can't write to " + " or ".join(dbpaths))

old = 0
if os.path.isfile(target + "timestamp"):
    with open(target + "timestamp", encoding="ascii") as f:
        old = int(f.read())

new = int(urllib.request.urlopen(DBURL + "freewvsdb.timestamp").read())

if new == old:
    # nothing to do
    sys.exit()

tarball = urllib.request.urlopen(DBURL + str(new) + ".tar.xz").read()

tf = tarfile.open(fileobj=io.BytesIO(tarball))
tf.extractall(path=target)
with open(target + "timestamp", "w", encoding="ascii") as f:
    f.write(str(new))