Wikipedia:Wikipedia Signpost/Technical/Silly bespoke scripts

Add old subtitles to issues edit

  • add subtitles with [[Wikipedia:Wikipedia Signpost/Technical/Silly bespoke scripts#Subtitler|Silly Bespoke Subtitler]]

The long list of retrieve_diff calls has to be filled in manually with issue dates and permalink URLs of Wikipedia:Wikipedia Signpost revisions that reflect what the issue was on that date. Why manually? Mostly, because it's impossible to tell without looking which is the canonical set of blurbs for an issue -- the first revision on that date might have typoes in it that later get fixed, et cetera. Hard to tell what the deal is. And the "new issue" edit summaries aren't consistent enough to use regex to figure it out algorithmically. So it is better to just do by hand.

The following script will give you an appropriate hunk of crap to slap into the individual issue page that adds sub= params to the articles in the issue, and even print an edit link.

Python script to fix old subtitles
import requests
# 2023 Dec 2

def retrieve_and_split_content(api_url):
    print(api_url)
    # Send a GET request to the Wikipedia API
    response = requests.get(api_url)

    # Check if the request was successful (status code 200)
    if response.status_code == 200:
        # Parse the JSON response
        result = response.json()

        # Extract the content from the JSON response
        content = result["query"]["pages"][0]["revisions"][0]["slots"]["main"]["content"]

        # Split the content into lines
        lines = content.split('\n')

        return lines

    else:
        # Print an error message if the request was not successful
        print(f"Error: Unable to retrieve data. Status code: {response.status_code}")

def retrieve_parsed(api_url):
    print(api_url)
    # Send a GET request to the Wikipedia API
    response = requests.get(api_url)

    # Check if the request was successful (status code 200)
    if response.status_code == 200:
        # Parse the JSON response
        result = response.json()

        # Extract the content from the JSON response
        content = result["parse"]["text"]["*"]
        return content

    else:
        # Print an error message if the request was not successful
        print(f"Error: Unable to retrieve data. Status code: {response.status_code}")

def retrieve_diff(revid, date):
    wikitext_api_url = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&revids=" + revid + "&formatversion=2&rvprop=content&rvslots=*"

    # Retrieve and split the content
    lines = retrieve_and_split_content(wikitext_api_url)
    relevant_lines = []
    # Print the lines
    for line in lines:
        # print(line)
        if "signpost-snippet" in line.lower():
            relevant_lines.append(line)
    print(str(len(relevant_lines)) + " lines found")

    #parsed_api_url = "https://en.wikipedia.org/w/api.php?action=parse&oldid=" + revid + "&format=json"
    #print(parsed_api_url)
    #content = retrieve_parsed(parsed_api_url)
    # This won't work because it just uses the issue template to set the date, which won't be constant to what it was then. Uguu.

    thatdate_api_url = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&titles=Wikipedia:Wikipedia_Signpost/" + date + "&formatversion=2&rvprop=content&rvslots=*"
    #print(thatdate_api_url)
    issuepage = retrieve_and_split_content(thatdate_api_url)
    #print(issuepage)

    incrementor = 0
    for line in issuepage:
        #print(line)
        if "{{{1}}}|0|" in line.lower():
            incrementor = -1
            # Incrementor should start at 0, not 1, if the page does:
            # this is what does the speshul formatting for the centered "from the editor" etc columns

    output = ""
    replace = "{{Wikipedia:Signpost/Template:Signpost-snippet|{{Wikipedia:Wikipedia Signpost/Issue|1}}|"
    replacewith = "{{Signpost/item|{{{1}}}|"
    for line in relevant_lines:
        # print(line)
        # {{Wikipedia:Signpost/Template:Signpost-snippet|{{Wikipedia:Wikipedia Signpost/Issue|1}}|Gallery|Love is in the air|Lovey-dovey stuff for Valentine's.|1.3 MB}}
        incrementor += 1;
        line = line.replace(replace, replacewith + str(incrementor) + "|" + date + "|")
        # print(line)
        l = line.split("|")

        if len(l) != 7:
            # {{Signpost/item|{{{1}}}|7|2023-02-20|Gallery|Love is in the air|Lovey-dovey stuff for Valentine's.|1.3 MB}}
            #   0             1       2 3          4       5                  6                                  7
            # {{Signpost/item|{{{1}}}|7|2023-02-20|Gallery|Love is in the air|1.3 MB|sub=Lovey-dovey stuff for Valentine's.}}
            #   0             1       2 3          4       5                  7               6
            line = l[0] + "|" + l[1] + "|" + l[2] + "|" + l[3] + "|" + l[4] + "|" + l[5] + "|" + l[7].replace("}}","") + "|sub=" + l[6] + "}}"
        else:
            line = l[0] + "|" + l[1] + "|" + l[2] + "|" + l[3] + "|" + l[4] + "|" + l[5] + "|sub=" + l[6]
        print(line.replace("<!-- ","").replace(" -->","").replace("<!--","").replace("-->",""))
    print("https://en.wikipedia.org/w/index.php?title=Wikipedia:Wikipedia_Signpost/" + date + "&action=edit")
    print("----------")


if __name__ == "__main__":

    diffs = []

    # diffs.append(["820777324", "2018-01-16"])
    # diffs.append(["824078731", "2018-02-05"])
    # diffs.append(["826735918", "2018-02-20"])
    # diffs.append(["833127031", "2018-03-29"])
    # diffs.append(["838283983", "2018-04-26"])
    # diffs.append(["847193050", "2018-05-24"])
    # diffs.append(["848153543", "2018-06-29"])
    # diffs.append(["852964542", "2018-07-31"])
    # diffs.append(["857225081", "2018-08-30"])
    # diffs.append(["861926973", "2018-10-01"])
    # diffs.append(["866950939", "2018-10-28"])
    # diffs.append(["871451630", "2018-12-01"])
    # diffs.append(["875468955", "2018-12-24"])
    # diffs.append(["881499572", "2019-01-31"])
    # diffs.append(["886108487", "2019-02-28"])
    # diffs.append(["893675237", "2019-03-31"])
    # diffs.append(["894891613", "2019-04-30"])
    # diffs.append(["903814437", "2019-05-31"])
    # diffs.append(["904518301", "2019-06-30"])
    # diffs.append(["909048253", "2019-07-31"])
    # diffs.append(["914531563", "2019-08-30"])
    # diffs.append(["918801796", "2019-09-30"])
    # diffs.append(["923914090", "2019-10-31"])
    # diffs.append(["928760315", "2019-11-29"])
    # diffs.append(["933233310", "2019-12-27"])
    # diffs.append(["937756327", "2020-01-27"])
    # diffs.append(["946235363", "2020-03-01"])
    # diffs.append(["948036758", "2020-03-29"])
    # diffs.append(["953745575", "2020-04-26"])
    # diffs.append(["960157059", "2020-05-31"])
    # diffs.append(["965346020", "2020-06-28"])
    # diffs.append(["970837100", "2020-08-02"])
    # diffs.append(["975834550", "2020-08-30"])
    # diffs.append(["980699882", "2020-09-27"])
    # diffs.append(["980699882", "2020-11-01"])
    # diffs.append(["993043901", "2020-11-29"])
    # diffs.append(["996700532", "2020-12-28"])
    # diffs.append(["1005138548", "2021-01-31"])
    # diffs.append(["1009489391", "2021-02-28"])
    # diffs.append(["1014739821", "2021-03-28"])
    # diffs.append(["1020706834", "2021-04-25"])
    # diffs.append(["1033465399", "2021-06-27"])
    # diffs.append(["1035479760", "2021-07-25"])
    # diffs.append(["1041465735", "2021-08-29"])
    # diffs.append(["1046662909", "2021-09-26"])
    # diffs.append(["1054289016", "2021-10-31"])
    # diffs.append(["1057675523", "2021-11-29"])
    # diffs.append(["1062510735", "2021-12-28"])
    # diffs.append(["1068924896", "2022-01-30"])
    # diffs.append(["1074357607", "2022-02-27"])
    # diffs.append(["1083987625", "2022-03-27"])
    # diffs.append(["1084492205", "2022-04-24"])
    # diffs.append(["1090505125", "2022-05-29"])
    # diffs.append(["1095184567", "2022-06-26"])
    # diffs.append(["1101624049", "2022-08-01"])
    # diffs.append(["1107799905", "2022-08-31"])
    # diffs.append(["1113334346", "2022-09-30"])
    # diffs.append(["1119178263", "2022-10-31"])
    # diffs.append(["1124368652", "2022-11-28"])
    # diffs.append(["1130821218", "2023-01-01"])
    # diffs.append(["1133904318", "2023-01-16"])
    # diffs.append(["1137481351", "2023-02-04"])
    # diffs.append(["1140568603", "2023-02-20"])
    # diffs.append(["1143689119", "2023-03-09"])
    # diffs.append(["1145675251", "2023-03-20"])
    # diffs.append(["1148036183", "2023-04-03"])
    # diffs.append(["1151821801", "2023-04-26"])
    # diffs.append(["1153755153", "2023-05-08"])
    # diffs.append(["1156321293", "2023-05-22"])
    # diffs.append(["1158590270", "2023-06-05"])
    # diffs.append(["1160887554", "2023-06-19"])
    # diffs.append(["1163158814", "2023-07-03"])
    # diffs.append(["1165769449", "2023-07-17"])
    # diffs.append(["1168153610", "2023-08-01"])
    # diffs.append(["1170514187", "2023-08-15"])
    # diffs.append(["1173056112", "2023-08-31"])
    # diffs.append(["1175599041", "2023-09-16"])
    # diffs.append(["1178460319", "2023-10-03"])
    # diffs.append(["1181468695", "2023-10-23"])
    # diffs.append(["1183727590", "2023-11-06"])
    # diffs.append(["1186005807", "2023-11-20"])

    for diff in diffs:
        stwing = "https://en.wikipedia.org/w/index.php?title=Wikipedia:Wikipedia_Signpost/"
        stwing += diff[1]
        stwing += "&action=edit&summary=add%20subtitles%20with%20%5B%5BWikipedia%3AWikipedia%20Signpost%2FTechnical%2FSilly%20bespoke%20scripts%23Subtitler%7CSilly%20Bespoke%20Subtitler%5D%5D"
        print(stwing)

    for diff in diffs:
        retrieve_diff(diff[0], diff[1])