User:GemmaBot/thesurakarta.py

From Wikisource
Jump to navigation Jump to search
# Spaces between – is COMMENTED OUT for The Surakarta, please put this back for next book
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 = "THE SURAKARTA"
pageroot = "The Surakarta (1913).djvu"

chapters = {'Mr. Hereford Entertains': 1, 'Max Schimmel': 24, 'Lorine': 34, 'A Mystery for the Police': 51, 'A Gunshot Wound': 69, 'The Room at the Tonty': 85, 'The Man Who Shot': 108, 'Mr. McAdams Converses': 118, 'Miss Regan Inquires': 162, 'Max Changed His Lodgings': 178, 'The House of the Man': 184, 'A Fire at the Tonty': 197, 'Farren of the Police': 205, 'The Gunshot Wound Again': 224, 'Hereford Interviews Annis': 249, 'They Settle': 274, 'Miss Regan Will Marry': 296, 'Max Has Kept Out of Jail': 320, 'It Has Been Done Again': 329, 'Max Schimmel Explains': 342, 'Max Makes It Clear': 362}

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",
    "replace ’ with '", "replace ‘ with '",
    "replace ” with \"", "replace “ with \"",
    "\" ?\" -> \"?\"",
    "\" !\" -> \"!\"",
    "\" :\" -> \":\"",
    "\" ;\" -> \";\"",
    "\"\" -> \"\"",
    "\"\" -> \"\"",
    "\" -\" at end of line -> \"\"",
    "\"-\" at end of line -> \"\"",
    "\" - \" -> \"\"",
    ""]

# IF "{{c|PLATE " in

num = 14
last_page = 393
# CHANGE THIS BACK NEXT TIME
start_num = num
chapter_num = 1
extra = 0

while 1:
    num += 1
    if num > last_page:
        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("/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("Not a page. Exiting...")
        extra +=1
        print("----")
        continue
        # extra +=1
        # break
    if "’" in page.text:
        page.text = page.text.replace("’", "'")
        jobs_done.insert(0, jobs[7])
    if "‘" in page.text:
        page.text = page.text.replace("‘", "'")
        jobs_done.insert(0, jobs[8])
    if "”" in page.text:
        page.text = page.text.replace("”", "\"")
        jobs_done.insert(0, jobs[9])
    if "“" in page.text:
        page.text = page.text.replace("“", "\"")
        jobs_done.insert(0, jobs[10])
    #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])
    if " ?" in page.text:
        page.text = page.text.replace(" ?", "?")
        jobs_done.insert(0, jobs[11])
    if " !" in page.text:
        page.text = page.text.replace(" !", "!")
        jobs_done.insert(0, jobs[12])
    if " :" in page.text:
        page.text = page.text.replace(" :", ":")
        jobs_done.insert(0, jobs[13])
    if " ;" in page.text:
        page.text = page.text.replace(" ;", ";")
        jobs_done.insert(0, jobs[14])
    # if " — " in page.text:
    #     page.text = page.text.replace(" — ", "—")
    #     jobs_done.insert(0, jobs[15])
    # if " —" in page.text:
    #     page.text = page.text.replace(" —", "—")
    #     jobs_done.insert(0, jobs[16])
    if " -\n" in page.text:
        page.text = page.text.replace(" -\n", "—\n")
        jobs_done.insert(0, jobs[17])
    if "-\n" in page.text:
        page.text = page.text.replace("-\n", "—\n")
        jobs_done.insert(0, jobs[18])
    if " - " in page.text:
        page.text = page.text.replace(" - ", "—")
        jobs_done.insert(0, jobs[19])
    #logic for headers/footers
    page_num = num - start_num - extra
    try:
        chapter_end = int(chapters[list(chapters.keys())[chapter_num]])
        if chapter_end == page_num:
            chapter_num +=1
    except:
        pass
    chapter_begin = int(chapters[list(chapters.keys())[chapter_num-1]])
    chapter_name = list(chapters.keys())[list(chapters.values()).index(chapter_begin)].upper()
    if " MC" in chapter_name or chapter_name.startswith("MC"):
        chapter_name = chapter_name.replace("MC", "Mc")
    header = ""
    footer = ""
    if page_num == chapter_begin:
        header = ""
        footer = f"{{{{c|{{{{fine|{page_num}}}}}}}}}"
    else:
        footer = ""
        if page_num % 2 == 0:
            header = f"{{{{rh|{{{{fine|{page_num}}}}}|{{{{fine|{book_name}}}}}}}}}"
        else:
            header = f"{{{{rh||{{{{fine|{chapter_name}}}}}|{{{{fine|{page_num}}}}}}}}}"
    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 "{{block center/s}}</noinclude>" in page.text:
        header = header + "{{block center/s}}"
    if "{{block center/e}}</noinclude>" in page.text:
        footer = "{{block center/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_name}")
    print(f"Chapter begin: {chapter_begin}")
    print(f"Chapter end: {chapter_end}")
    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