Aliyun OSS

pip install oss2

#!/usr/bin/env python3

import pathlib
import sqlite3
import sys
import time
import oss2

base, custom = "oss-cn-shanghai.aliyuncs.com", "kouzidai"
auth = oss2.Auth('xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
bucket = oss2.Bucket(auth, f"https://{base}", custom)


class KV(object):
    def __init__(self, name=":memory:"):
        conn = sqlite3.connect(name)
        c = conn.cursor()
        c.execute("create table if not exists _(k primary key,v)")
        self.conn, self.c = conn, c

    def get(self, key, default=None):
        try:
            return self[key]
        except KeyError:
            return default

    def __getitem__(self, key):
        sql = "select v from _ where k=?"
        o = self.c.execute(sql, (key,)).fetchone()
        if o:
            return o[0]
        raise KeyError(key)

    def __setitem__(self, key, value):
        sql = "insert or replace into _(k,v) values(?,?)"
        self.c.execute(sql, (key, value))
        self.conn.commit()


kv = KV(".hist")


def upload(name, content):
    bucket.put_object(name, content, headers={'cache-control': 'no-cache'})
    kv[name] = time.strftime("%m%d%H%M%S")


def url(key):
    s = f"https://{custom}.{base}/{key}"
    flag = kv.get(key)
    if flag:
        s += f"?v={flag}"
    return s


if __name__ == '__main__':
    for fn in sys.argv[1:]:
        with open(fn, "rb") as f:
            print(fn)
            upload(fn, f.read())