import re
import sys

import requests
from requests import Session


remove_ns = re.compile("^[A-Z][a-z]+:")

def fetch_deletes(sess: Session, from_date, to_date, ns):
    params = {
        "action": "query",
        "format": "json",
        "formatversion": "2",
        "list": "logevents",
        "leprop": "title",
        "letype": "delete",
        "lestart": from_date,
        "leend": to_date,
        "ledir": "newer",
        "lenamespace": ns,
        "lelimit": "max",
    }

    base_url = "https://www.wikidata.org/w/api.php"
    cont = None
    ids = []
    while True:
        if cont is not None:
            params.update(cont)
        resp = sess.get(base_url, params=params)
        resp.raise_for_status()
        json = resp.json()
        try:
            cont = json["continue"]
        except KeyError:
            cont = None

        try:
            pages = json["query"]["logevents"];
        except KeyError:
            pages = []

        ids.extend([remove_ns.sub("", page["title"]) for page in pages])
        if cont is None:
            break

    return ids


from_date = sys.argv[1]
to_date = sys.argv[2]

with requests.session() as sess:
    sess.headers = {"User-Agent": "WDQS Updater (bot)"}
    ids = []
    for ns in [0, 120, 146]:
        ids.extend(fetch_deletes(sess, from_date, to_date, ns))
    print(*ids, sep='\n')


