Guidelines:Pywikibot: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
Jump to navigation Jump to search
No edit summary
Line 45: Line 45:


==Installing and configuring Pywikibot==
==Installing and configuring Pywikibot==
{{WIP}}
<ol>
<ol>
<li>Install Pywikibot:
<li>Install Pywikibot:

Revision as of 22:34, 6 July 2023

If you have questions about the use of Pywikibot on Zelda Wiki, please let us know in #wiki-tech on Discord.

Pywikibot (PWB) is a collection of Python scripts that allows users to perform actions against several pages with a single command.

Setting up a bot account

  1. If you haven't already, create a bot account separate from your normal account.
  2. Go to Special:BotPasswords/PWB and tick the following checkboxes. Some checkboxes may only be available to admins—tick whichever ones are available to you.
    • High-volume editing
    • Edit existing pages
    • Edit protected pages
    • Create, edit, and move pages
    • Upload new files
    • Upload, replace, and move files
    • Patrol changes to pages
    • Rollback changes to pages
    • Delete pages, revisions, and log entries
  3. Hit the Create button and record the password shown on the next page.

Installing Python

To use Pywikibot you must first install Python.

Windows

  1. Start PowerShell
  2. Install Scoop
  3. Run the following commands in PowerShell:
    scoop bucket add main
    
    scoop install main/python
    

macOS

  1. Open Terminal
  2. Install Homebrew
  3. Install Python by pasting the following into Terminal and hitting Enter:
    brew install python3
    

Installing and configuring Pywikibot

This article is a work in progress.
This guidelines is a work in progress.
The editors are working to update all pertinent information as soon as possible.
Zelda Wiki apologizes for any incomplete or missing information.
  1. Install Pywikibot:
    python3 -m pip install pywikibot
    
  2. Create a base directory for Pywikibot, for example:
    Windows (PowerShell)macOS
    mkdir ~\.pwb
    
    cd ~\.pwb
    
    mkdir ~/.pwb
    
    cd ~/.pwb
    

    You can name the directory whatever you'd like and locate it wherever you please.

  3. Create a family file for Zelda Wiki:
    pwb generate_family_file https://zeldawiki.wiki zeldawiki
    
  4. Create user config files:
    pwb generate_user_files
    

    You will be prompted to fill in some information. For each prompt, type the following and hit Enter:

    Prompt tips

    Pywikibot prompts often display these options or similar:

    ([y]es, [N]o, [q]uit)
    This syntax is standard for command-line interfaces. What the above means is that you can type y as a shortcut for yes, n for no and q for quit. The capital letter indicates the default option. In the above case, if you hit Enter without typing anything, "No" will be selected.
    Family
    zeldawiki
    Site code
    en
    Username
    Enter your bot account's username.
    Do you want to add any other projects?
    no
    Do you want to add a BotPassword?
    yes
    BotPassword's "bot name"
    PWB
    BotPassword's "password" for "PWB"
    Paste the BotPassword created above.
    Do you want to select framework setting sections?
    None
    Do you want to select scripts setting sections?
    None
  5. Append the following line to the user-config.py file that was created in your PWB base directory in the previous step.
    user_script_paths = ["scripts"]
    
  6. Download the Pywikibot scripts and move them to a subfolder named scripts in your PWB base directory.
  7. Log in with Pywikibot:
    pwb login
    

The login is successful if the following message appears:

Logged in on zeldawiki:en as ''username''

The above message may be preceded by the following errors and warnings which can be ignored:

Ignore these
WARNING: API warning (main): Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/> for notice of API deprecations and breaking changes.
WARNING: API warning (login): Fetching a token via "action=login" is deprecated. Use "action=query&meta=tokens&type=login" instead.
ERROR: Received incorrect login token. Forcing re-login.
...It's unfortunate that PWB works this way as it's not very considerate of the user experience.

Using Pywikibot

Pywikibot only works from the Pywikibot base directory. Whenever you open a new terminal session, you must change to the base directory. For example:

Windows (PowerShell)macOS
cd ~\.pwb
cd ~/.pwb

See Manual:Pywikibot/Scripts for a list of scripts. To learn more about how to use a script, you can type the following command:

pwb <command-name> -help

Typing simply pwb -help will show you command options available for all scripts.

By default, PWB waits for 10 seconds before editing the next page. To remove this wait period, add -pt:0 to the command.

Example commands

Below are some examples of some useful Pywikibot commands.

Null-editing all pages using a certain template

pwb touch -pt:0 -transcludes:"Template:BotW Item Properties/Store"

The Template: namespace prefix can be omitted.

Null-editing all pages in a category

pwb touch -pt:0 -cat:"Articles using invalid arguments in template calls"

Replacing text for all pages in a category

pwb replace -pt:0 -pairsfile:replace.txt -cat:"Articles using invalid arguments in template calls"

Where replace.txt is a file in the PWB base directory that looks something like this:

a
b
c
d

Here a would be replaced with b and c would be replaaced with d.

This command supports regex with the regex option. Escape special regex characters with a backslash. For example, \| will match pipe characters. Failing to escape pipe characters when using regex replacements can be quite disastrous.

The script will show you each edit and ask you to confirm before saving each page. At any point you can tell it to save the rest of the pages without confirmation.

Uploading all files in a folder

pwb upload <path-to-folder> -pt:0 -descfile:descfile.txt -ignorewarn -keep -noverify

Where descfile.txt is a file in the PWB base directory containing the Template:FileInfo that will be added to all the uploads. Fill in whichever fields apply to all files—you can fill in the rest once the files have been uploaded.