| 1 | < | {\rtf1\mac\ansicpg10000\cocoartf\nisusversion50300 {\*\nisusorigapp Cocoa}{\*\nisusorigdate\yr2023\mo12\dy3\hr14\min15 }{\*\nisussysvers 14.1.2}\deff0 | 
 
 
 
 
 
 
 
 
 | 1 | > | {\rtf1\mac\ansicpg10000\cocoartf\nisusversion50401 {\*\nisusorigapp Cocoa}{\*\nisusorigdate\yr2023\mo12\dy3\hr14\min15 }{\*\nisussysvers 15.4.1}\deff0 | 
 
 
 
 
 
 
 
 
 
 
 | 2 |  | {\*\fonttbl | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 3 |  | {\f0\fswiss\fcharset77 Helvetica;} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 4 |  | {\f1\fswiss\fcharset77 Helvetica-Bold{\*\falt Helvetica};} | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 11 |  | {\stylesheet | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 12 |  | {\s104\snext104 \ltrpar\pardirnatural\ql\widctlpar\sb0\sa0\sl240\slmult1\hyphpar1\li0\lin0\fi0\ri0\rin0 Header;} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 13 |  | {\s105\snext105 \ltrpar\pardirnatural\ql\widctlpar\sb0\sa0\sl240\slmult1\hyphpar1\li0\lin0\fi0\ri0\rin0 Footer;}} | 
 
 
 
 
 
 
 
 
 
 
 | 14 | < | \defformat {\*\generator Nisus Writer Express 4.3 [0503.0004.01]}{\info {\*\nisusgmtoffset -5:00}{\author Admin}{\creatim\yr2021\mo2\dy5\hr17\min6 }{\revtim\yr2023\mo12\dy3\hr14\min16 }} | 
 
 
 
 
 
 
 
 
 | 14 | > | \defformat {\*\generator Nisus Writer Express 4.4.1 [0504.0104.01]}{\info {\*\nisusgmtoffset -4:00}{\author Admin}{\creatim\yr2021\mo2\dy5\hr17\min6 }{\revtim\yr2025\mo4\dy24\hr12\min10 }} | 
 
 
 
 
 
 
 
 
 
 
 | 15 |  | {\*\userprops }\nisusrulerunits0\nisusstatusbar1\nisusareaid1\viewkind4\viewscale100\nisusviewruler1\nisusviewrulerh1\nisusviewrulerv0\nisusviewtoolbar1\nisusviewtooldrawer0\nisusviewtoolswidth0\nisusviewpagenumtype1\nisusviewrulericons0\donotshowcomments1 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 16 |  | {\*\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}}} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 17 |  | {\*\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}}} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 18 |  | \nisusareasplitv0 | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 19 |  | {\*\nisuswindow\x128\y132\w613\actualw613\h631 } | 
 
 
 
 
 
 
 
 
 
 
 | 20 | < | \nshwinv0\nshwpg1\nisusinlinespell0\nisushyphnone\spltpgpar\nisusselectstart1204\nisusselectlength0\fet2\ftnbj\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\pgnstart1\nocolbal \f0 | 
 
 
 
 
 
 
 
 
 | 20 | > | \nshwinv0\nshwpg1\nisusinlinespell0\nisushyphnone\spltpgpar\nisusselectstart1326\nisusselectlength0\fet2\ftnbj\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\pgnstart1\nocolbal \f0 | 
 
 
 
 
 
 
 
 
 
 
 | 21 |  | \sectd\endnhere\cols1\ltrsect\colbalsxn0\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\guttersxn0\headery720\footery360\pgncont\pgndec\sxnstarts1\sxnrestart\sxndec | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 22 |  | {\header\plain\pard\s104\ltrpar\pardirnatural\ql\widctlpar\f0\fs28 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 23 |  | {\footer\plain\pard\s105\ltrpar\pardirnatural\ql\widctlpar\f0\fs28 } | 
 
 
 
 
 
 
 
 
 
 
 | 24 | < | \deftab720 {\*\nisusscroll\nisusarea1\xoffset0\yoffset2 }{\pard\ltrpar\pardirnatural\qc {\f1\fs28\b Advice and Commands for Pywikibot}{\fs28 \par | 
 
 
 
 
 
 
 
 
 | 24 | > | \deftab720 {\pard\ltrpar\pardirnatural\qc {\f1\fs28\b Advice and Commands for Pywikibot}{\fs28 \par | 
 
 
 
 
 
 
 
 
 
 
 | 25 |  | based on https://www.mediawiki.org/wiki/Manual:Pywikibot/Scripts\par }} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 26 |  | {\pard\ltrpar\pardirnatural\ql {\fs28 \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 27 |  | {\ul Logging in\par } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 32 |  | For safety's sake and to not overload the wiki, you should limit the rate of your API calls.  Bot scripts will automatically throttle themselves according to the value of "put_throttle" in user-config.py, but if you are performing an operation by calling a bot script multiple times then you must implement your own external throttle.  For working examples, see my Bash scripts.\par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 33 |  | \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 34 |  | {\ul Running a script}\par | 
 
 
 
 
 
 
 
 
 
 
 | 35 | < | See "Read-me.rtf".\par | 
 
 
 
 
 
 
 
 
 | 35 | > | {\*\nisusscroll\nisusarea1\xoffset0\yoffset7 }See "Read-me.rtf".\par | 
 
 
 
 
 
 
 
 
 
 
 | 36 |  | \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 37 |  | {\ul Category renaming}\par | 
 
 
 
 
 
 
 
 
 
 
 | 38 | < | {\f2\fs24 python pwb.py category move -from:"Art by Okita" -to:"Art by Alex Okita"}\par | 
 
 
 
 
 
 
 
 
 | 38 | > | \f2\fs24 python pwb.py category move -from:"Art by Okita" -to:"Art by Alex Okita"\f0\fs28 \par | 
 
 
 
 
 
 
 
 
 
 
 | 39 |  | \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 40 |  | {\ul General text replacement}\par | 
 
 
 
 
 
 
 
 
 
 
 | 41 | < | {\f2\fs24 python pwb.py replace -page:pagetitle "old text" "new text" -summary:"something"}\par | 
 
 
 
 
 
 
 
 
 | 41 | > | \f2\fs24 python pwb.py replace -page:pagetitle "old text" "new text" -summary:"something"\f0\fs28 \par | 
 
 
 
 
 
 
 
 
 
 
 | 42 |  | Use "-simulate" to perform a dry-run.\par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 43 |  | Add "-always" to save edit without prompting.  {\ul Not} using this will allow a -simulate run to show you what changes will actually be made.  For working examples of how to use "replace", see my Bash scripts.\par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 44 |  | \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 45 |  | {\ul Batch uploading}\par | 
 
 
 
 
 
 
 
 
 
 
 | 46 | < | \f2\fs24 python pwb.py upload -keep -noverify -abortonwarn /folder/with/imgs/ "[[Category:Some image cat]]"{\f0\fs28\nisusselectcaret \par } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 47 | < | \f0\fs28 \par | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 46 | > | \f2\fs24 python pwb.py upload -keep -noverify -abortonwarn /folder/with/imgs/ "[[Category:Some image cat]]"\par | 
 
 
 
 
 | 47 | > | \par | 
 
 
 
 
 | 48 | > | {\f0\fs28\ul Batch renaming (moving)}\f0\fs28 \par | 
 
 
 
 
 | 49 | > | \f2\fs24 python pwb.py movepages -noredirect -pairsfile:/full/path/to/name_changes.txt\par | 
 
 
 
 
 | 50 | > | \f0\fs28 The .txt file must{\nisusselectcaret  }contain a series of lines like so:\par | 
 
 
 
 
 | 51 | > | \fs24 [[frompage1]]\par | 
 
 
 
 
 | 52 | > | [[topage1]]\par | 
 
 
 
 
 | 53 | > | [[frompage2]]\par | 
 
 
 
 
 | 54 | > | [[topage2]]\fs28 \par | 
 
 
 
 
 | 55 | > | \par | 
 
 
 
 
 
 
 
 
 
 
 | 56 |  | {\ul Page scope arguments}\par | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 57 |  | There are a ton of ways to select pages on which to run a Pywikibot script on besides specifying a single page with "-page".  Not only are there -cat and -catr (all pages recursively under that cat), but also -ns, -grep, -subpage, -titleregex, -wantedpages, -transcludes, -start (proceeds from that point alphabetically), -imagesused (on a given page), -links (to other pages from a given page), -filelinks (image links on given page), and much more.  See "Generator and replace options.txt" for details.\par }} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 58 |  | } |