{\rtf1\mac\ansicpg10000\cocoartf\nisusversion50300 {\*\nisusorigapp Cocoa}{\*\nisusorigdate\yr2023\mo4\dy27\hr12\min11 }{\*\nisussysvers 13.5.0}\deff0 {\*\fonttbl {\f0\fswiss\fcharset77 Helvetica;} {\f1\fswiss\fcharset77 Helvetica-Bold{\*\falt Helvetica};} {\f2\fswiss\fcharset77 Helvetica-Oblique{\*\falt Helvetica};}} {\colortbl ;\red0\green0\blue254 ;} {\*\nisustoctable {\nisustoc\tcf68 {\nisustocname Default TOC}{\*\nisustoctabrep }{\*\nisustocretrep }{\nisustoclevelstyle TOC 1}{\nisustoclevelstyle TOC 2}{\nisustoclevelstyle TOC 3}{\nisustoclevelstyle TOC 4}{\nisustoclevelstyle TOC 5}{\nisustoclevelstyle TOC 6}{\nisustoclevelstyle TOC 7}{\nisustoclevelstyle TOC 8}{\nisustoclevelstyle TOC 9}}\nisusactivetoc68 } {\*\nisusxetable {\nisusxe\xef68 {\nisusxename Default Index}{\nisusxeheaderstyle Index Heading}{\nisusxelevelstyle Index 1}{\nisusxelevelstyle Index 2}{\nisusxelevelstyle Index 3}{\nisusxelevelstyle Index 4}{\nisusxelevelstyle Index 5}{\nisusxelevelstyle Index 6}{\nisusxelevelstyle Index 7}{\nisusxelevelstyle Index 8}{\nisusxelevelstyle Index 9}{\*\fldinst INDEX \\k ". " \\g \endash \\e "\tab " \\l ", " \\f D}}\nisusactivexe68 } {\stylesheet {\s104\snext104 \ltrpar\pardirnatural\ql\widctlpar\sb0\sa0\sl240\slmult1\hyphpar1\li0\lin0\fi0\ri0\rin0 Header;} {\s105\snext105 \ltrpar\pardirnatural\ql\widctlpar\sb0\sa0\sl240\slmult1\hyphpar1\li0\lin0\fi0\ri0\rin0 Footer;} {\*\cs106\ul\cf1 Hyperlink;}} \defformat {\*\generator Nisus Writer Express 4.3 [0503.0004.01]}{\info {\*\nisusgmtoffset -4:00}{\author Admin}{\creatim\yr2021\mo3\dy7\hr16\min44 }{\revtim\yr2023\mo8\dy14\hr21\min59 }} {\*\userprops }\nisusrulerunits0\nisusstatusbar1\nisusareaid1\viewkind4\viewscale100\nisusviewruler1\nisusviewrulerh1\nisusviewrulerv0\nisusviewtoolbar1\nisusviewtooldrawer0\nisusviewtoolswidth0\nisusviewpagenumtype1\nisusviewrulericons0\donotshowcomments1 {\*\nisusviewsettings\viewkind4\viewscale100 {\nisusnavsettings {\*\visible 0}{\*\width 160}{\*\isOnRightSide 0}{\*\mode toc}{\*\sort location}}{\nisuscommentsettings {\*\visible 0}{\*\showPane 1}{\*\isOnRightSide 0}{\*\width 180}{\*\titlebarInfo 2}{\*\showTextHighlighting 1}{\*\showGutterIcons 1}}{\nisusrevisionsettings {\*\visible 0}{\*\showPane 1}{\*\isOnRightSide 1}{\*\width 180}{\*\titlebarInfo 4}{\*\showTextHighlighting 1}{\*\showGutterIcons 1}}} {\*\nisusviewsettings\viewkind1\viewscale100 {\nisusnavsettings {\*\visible 0}{\*\width 160}{\*\isOnRightSide 0}{\*\mode toc}{\*\sort location}}{\nisuscommentsettings {\*\visible 0}{\*\showPane 1}{\*\isOnRightSide 0}{\*\width 180}{\*\titlebarInfo 2}{\*\showTextHighlighting 1}{\*\showGutterIcons 1}}{\nisusrevisionsettings {\*\visible 0}{\*\showPane 1}{\*\isOnRightSide 1}{\*\width 180}{\*\titlebarInfo 4}{\*\showTextHighlighting 1}{\*\showGutterIcons 1}}} \nisusareasplitv0 {\*\nisuswindow\x128\y96\w613\actualw613\h631 } \nshwinv0\nshwpg1\nisusinlinespell0\nisushyphnone\spltpgpar\nisusselectstart2878\nisusselectlength0\fet2\ftnbj\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\pgnstart1\nocolbal \f0 \sectd\endnhere\cols1\ltrsect\colbalsxn0\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\guttersxn0\headery720\footery360\pgncont\pgndec\sxnstarts1\sxnrestart\sxndec {\header\plain\pard\s104\ltrpar\pardirnatural\ql\widctlpar\f0\fs28 } {\footer\plain\pard\s105\ltrpar\pardirnatural\ql\widctlpar\f0\fs28 } \deftab720 {\pard\ltrpar\pardirnatural\qc {\f1\fs28\b How to Use these Scripts\par by iritscen@yahoo.com}{\fs28 \par }} {\pard\ltrpar\pardirnatural\ql {\fs28 \par In the course of maintaining the OniGalore wiki, I have written some Python and Bash shell scripts for Pywikibot. My Bash shell scripts call Python scripts which are bundled with Pywikibot. My Python scripts utilize the Pywikibot API to perform new tasks not covered by the bundled scripts. To run the scripts, first }} {\field {\*\fldinst HYPERLINK "https://www.mediawiki.org/wiki/Manual:Pywikibot/Installation"}{\fldrslt {\pard\ltrpar\pardirnatural\ql {\cs106\fs28\ul\cf1 install Pywikibot}}}}{\pard\ltrpar\pardirnatural\ql {\fs28 , then read below for an introduction to each file in the ValBot/ directory.\par \par {\ul Bash/}\par {\f1\b drive_https_upgrade.sh}\par This script was designed to take a TXT report from a Validate External Links session run {\ul without} the --show-https-upgrades argument and use it to mass-change all the URLs for sites that wanted an upgrade from HTTP to HTTPS. In such a TXT report, links which wanted an HTTPS upgrade would have the phrase "Skipping URL {\f2\i x} because I have not been asked to show http->https upgrades" in it, so the script uses regex to search for "http->https". It edits all such links from the one numbered FIX_START to the one numbered FIX_END. This script served its purpose and probably won't be needed again, but it has value as a tutorial.\par \par {\f1\b drive_slash_adding.sh}\par This script was designed to take a TXT report from a Validate External Links session run {\ul without} the --show-added-slashes argument and use it to mass-change all the URLs that wanted a trailing slash added to them. In such a TXT report, URLs where the server asked for a trailing '/' to be added to the URL would have the phrase "Skipping URL {\f2\i x} because I have not been asked to show added trailing slashes", so the script searches for the word "trailing". This script served its purpose and probably won't be needed again, but it has value as a tutorial.\par \par {\ul Docs/\par } {\f1\b Generator and replace options.txt}{\ul \par } This is the help text generated by "python pwb.py replace -help". It shows the many options you have for using the built-in replace.py script and for asking any built-in Pywikibot script to limit its scope to certain pages.{\ul \par } \par {\f1\b Pywikibot commands.rtf}\par General advice on how to use Pywikibot properly.\par \par {\f1\b Read-me.rtf}\par You are here.\par \par {\ul Python/}\par In Terminal, 'cd' into the core/ directory and run the command "python pwb.py /path/to/script [arguments for script]". If you were running a built-in Pywikibot script, you could simply invoke it with "python pwb.py [name of script without suffix] [arguments]", but since these {\*\nisusscroll\nisusarea1\xoffset0\yoffset5 } scripts that you downloaded are outside the core/ directory they need full pathname qualification.\par \par {\f1\b check_interwiki_links.py}\par This script scans the wiki markup of a given page, or all the pages in a given category, for interwiki links such as [[wp:Example]] and [[wikt:definition|some word]]. It then tests those links to make sure they're valid and prints an "ERROR:" message if the page is not found or if the interwiki link specified a section on that page (e.g. [[wp:Article#References]]) and that section cannot be found.{\nisusselectcaret \par } \par Usage:\par python pwb.py path/to/check_interwiki_links.py -page:"Daodan"\par python pwb.py path/to/check_interwiki_links.py -cat:"Wiki Support" \par Adding the argument "-dbg" will print the name of each page as it is being scanned instead of only the pages with bad links.\par \par {\f1\b check_intrawiki_section_links.py}\par This script scans the wiki markup of a given page, or all the pages in a given category, for intrawiki links that have section links in them such as [[Konoko#In-game appearance]]. It then looks for those sections on the relevant pages and prints an "ERROR:" message if a problem is encountered. "ADVICE:" messages are printed when a link cannot be tested because transclusion is being used to build the link in a way that the script cannot unravel.\par \par Usage: The syntax is the same as for check_interwiki_links.py. Adding the argument "-dbg" will print the name of each page as it is being scanned as well as verbose logic explaining how each link is being processed.\par \par {\f1\b find_external_images.py}\par This script scrapes the HTML markup of a given page, or all the pages in a given category, and alerts you to externally-linked images so you can consider uploading them to the wiki. A division is made between images hosted on oni2.net and hosted outside the domain. The script can be asked to show embedded (inline) images and/or images which are externally linked (presented as clickable links).\par \par Usage:\par python pwb.py path/to/find_external_images.py -linked -page:"Press coverage"\par python pwb.py path/to/find_external_images.py -embedded -page:"State of Emergency"\par python pwb.py path/to/find_external_images.py -linked -embedded -cat:"Category:Real World"\par Adding the argument "-dbg" will print the name of each page as it is being scanned instead of only the pages with bad links.\par \par {\f1\b uncapitalize_image_suffixes.py}\par This script checks all the images on the wiki for capitalized file suffixes (.JPG instead of .jpg, etc.) and renames (i.e., moves) them to non-capitalized versions. Note that any pages linking to the images will need to be corrected manually afterward, but the script will tell you which pages link to each image that it renames.\par \par Usage: Simply invoke the script with no arguments.\par }}}