User:GemmaBot/southernantiques.py

From Wikisource
Jump to navigation Jump to search
import re
import time
print("Importing pywikibot...")
import pywikibot
print("Imported!")

pagename = "Page:The Star in the Window.pdf/347"
site = pywikibot.Site()

page = pywikibot.Page(site, pagename)
text = page.text

book_name = "SOUTHERN ANTIQUES"
pageroot = "Southern Antiques - Burroughs - 1931.djvu"

jobs = ["add/fix headers and footers", "convert en dashes to em dashes", "templatize quote-apostrophe combinations", "convert double em dash to [[Template:bar]]", "convert two returns to [[Template:dhr]]", "take out spaces before returns", "shrink plate image size to 500px, since that seems more accurate throughout"]

chapters = {
    "THE FIVE COLONIES": 1,
    "SOUTHERN CABINETMAKERS": 5,
    "WOODS USED IN SOUTHERN FURNITURE": 13,
    "FURNITURE OF THE PIONEERS": 15,
    "STYLE DEVELOPMENT IN FURNITURE": 19,
    "CHIPPENDALE AND REVOLUTION": 22,
    "CLASSICISM AND THE REPUBLIC": 26,
    "SEEKING SOUTHERN ANTIQUES": 31,
    "SIDEBOARDS": 35,
    "GATE-LEGGED AND DINING TABLES": 50,
    "HUNTING BOARDS": 61,
    "CELLARETS": 68,
    "TABLES": 76,
    "DESKS AND SECRETARIES": 105,
    "CUPBOARDS": 127,
    "CHESTS": 144,
    "CHAIRS": 159,
    "BEDS": 182,
    "MISCELLANEOUS PIECES": 190,
}

# IF "{{c|PLATE " in

start_num = 24
# CHANGE THIS BACK NEXT TIME
num = 62
chapter_num = 9
extra = 0

while 1:
    num += 1
    if num > 221:
        break
    jobs_done = []
    pagename = f"Page:{pageroot}/{num}"
    site = pywikibot.Site()
    page = pywikibot.Page(site, pagename)
    print(f"Checking {pagename}...")
    #functions just didn't work for this, for some STUPID reason, so here we do this uglier thing...
    # ----
    #finding extra pages and subtracting them from page_num
    nextpagename = f"Page:{pageroot}/{num+1}"
    nextpage = pywikibot.Page(site, nextpagename)
    # if not page.text.endswith("<noinclude></noinclude>") and not page.text.endswith("<noinclude>\n<references/></noinclude>") and not page.text.endswith("<noinclude>\n<references /></noinclude>") and not page.text.endswith("<noinclude>{{smallrefs}}</noinclude>") and not page.text.endswith("{{fine block/e}}</noinclude>"):
    #     print(page.text)
    #     continueornot = input(f"Found something new in a footer. Continue running? ")
    # if "[[File:" in page.text and "pagequality level=\"0\"" in nextpage.text:
    #     print("Not a page. Skipping...")
    #     print("----")
    #     extra +=1
    #     continue
    if "pagequality level=\"0\"" in page.text:
        print("Not a page. Skipping...")
        print("----")
        extra +=1
        continue
    #endash to emdash
    if "–" in page.text:
        page.text = page.text.replace("–", "—")
        jobs_done.insert(0, jobs[1])
    #quotes to templates
    if "\"'" in page.text or "'\"" in page.text:
        ogpage = page.text
        page.text = page.text.replace("\"'\"", "{{\" ' \"}}")
        page.text = page.text.replace("'\"'", "{{' \" '}}")
        page.text = page.text.replace("\"'", "{{\" '}}")
        page.text = page.text.replace("'\"", "{{' \"}}")
        page.text = page.text.replace("'{{' \"}}", "''\"")
        page.text = page.text.replace("{{\" '}}'", "\"''")
        if ogpage != page.text:
            jobs_done.insert(0, jobs[2])
    if "——" in page.text:
        page.text = page.text.replace("——", "{{bar|2}}")
        jobs_done.insert(0, jobs[3])
    if "\n\n\n" in page.text:
        page.text = page.text.replace("\n\n\n", "\n{{dhr}}\n")
        jobs_done.insert(0, jobs[4])
    if " \n" in page.text:
        page.text = page.text.replace(" \n", "\n")
        jobs_done.insert(0, jobs[5])
    #logic for headers/footers
    page_num = num - start_num - extra
    try:
        chapter_end = chapters[list(chapters.keys())[chapter_num]]
        if chapter_end == page_num:
            chapter_num +=1
    except:
        pass
    chapter_begin = chapters[list(chapters.keys())[chapter_num-1]]
    chapter_name = list(chapters.keys())[list(chapters.values()).index(chapter_begin)]
    if "{{c|PLATE " in page.text:
        header = ""
        footer = ""
        page.text = page.text.replace("|700px|", "|500px|")
        jobs_done.insert(0, jobs[6])
    else:
        if page_num == chapter_begin:
            header = ""
            if page_num % 2 == 0:
                footer = f"{{{{rh|{page_num}||}}}}"
            else:
                footer = f"{{{{rh|||{page_num}}}}}"
            jobs_done.insert(0, jobs[0])
        else:
            footer = ""
            if page_num % 2 == 0:
                header = f"{{{{rh|{{{{larger|{page_num}}}}}|{{{{larger|{book_name}}}}}|}}}}  [[File:Southern Antiques line.png|700px|center]]"
            else:
                header = f"{{{{rh||{{{{larger|{chapter_name}}}}}|{{{{larger|{page_num}}}}}}}}}  [[File:Southern Antiques line.png|700px|center]]"
            jobs_done.insert(0, jobs[0])
    # if {{fine block/s}} or /e in header/footer
    if "{{fine block/s}}</noinclude>" in page.text:
        header = header + "{{fine block/s}}"
    if "{{fine block/e}}</noinclude>" in page.text:
        footer = "{{fine block/e}}" + footer
    if "{{smallrefs}}</noinclude>" in page.text:
        footer = "{{smallrefs}}" + footer
    parser = page.text.split("<")
    headerplace = parser[2]
    # headerplace comes out as, fx, <pagequality level="3" user="PseudoSkull" />{{rh|2|A WILD-GOOSE CHASE}}
    headerparse = headerplace.split(">")
    parser.pop(2)
    headerparse.pop(1)
    headerparse.insert(1, header)
    headerparse = ">".join(headerparse)
    parser.insert(2, headerparse)
    # print(parser)
    # footers
    parser.pop(len(parser) - 1)
    parser.pop(len(parser) - 1)
    parser = "<".join(parser)
    final_list = [parser, f"<noinclude>{footer}</noinclude>"]
    page.text = "".join(final_list)
    if len(jobs_done) > 0:
        jobs_done = ", ".join(jobs_done)
    else:
        jobs_done = "absolutely nothing!"
    # print(header)
    # print(footer)
    print(f"Chapter: {chapter_num}")
    print(f"Page number: {page_num}")
    print(f"Extra: {extra}")
    edit_summary = f"Bot: {jobs_done}"
    print(edit_summary)
    print("Sleeping 50 seconds...")
    time.sleep(50)
    page.save(edit_summary)
    print("----")

I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:

I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.

Public domainPublic domainfalsefalse