Images scripts#

checkimages script#

Script to check recently uploaded files

This script checks if a file description is present and if there are other problems in the image’s description.

This script will have to be configured for each site. Please submit localisations as addition to the Pywikibot framework.

Everything that needs customisation is indicated by comments.

This script understands the following command-line arguments:

-limit

(int) The number of images to check (default: 80)

-commons

The bot will check if an image on Commons has the same name and if true it reports the image.

-duplicates[:#]

Checking if the image has duplicates (if arg, set how many rollback wait before reporting the image in the report instead of tag the image) default: 1 rollback.

-duplicatesreport

Report the duplicates in a log AND put the template in the images.

-maxusernotify

Maximum notifications added to a user talk page in a single check, to avoid email spamming.

-sendemail

Send an email after tagging.

-break

To break the bot after the first check (default: recursive)

-sleep[:#]

Time in seconds between repeat runs (default: 30)

-wait[:#]

Wait x second before check the images (default: 0)

-skip[:#]

The bot skip the first [:#] images (default: 0)

-start[:#]

Use allimages() as generator (it starts already from File:[:#])

-cat[:#]

Use a category as generator

-regex[:#]

Use regex, must be used with -url or -page

-page[:#]

Define the name of the wikipage where are the images

-url[:#]

Define the url where are the images

-nologerror

If given, this option will disable the error that is risen when the log is full.

Instructions for the real-time settings

For every new block you have to add:

<------- ------->

In this way the bot can understand where the block starts in order to take the right parameter:

Name=     Set the name of the block
Find=     search this text in the image's description
Findonly= search for exactly this text in the image's description
Summary=  That's the summary that the bot will use when it will
          notify the problem.
Head=     That's the incipit that the bot will use for the message.
Text=     This is the template that the bot will use when it will
          report the image's problem.

Changed in version 8.4: Welcome messages are imported from scripts.welcome script.

commons_information script#

This bot adds a language template to the file’s description field

The Information template is commonly used to provide formatting to the basic information for files (description, source, author, etc.). The description field should provide brief but complete information about the image. The description format should use Language templates like {{En}} or {{De}} to specify the language of the description. This script adds these langage templates if missing. For example the description of

{{Information
 | Description = A simplified icon for [[Pywikibot]]
 | Date = 2003-06-14
 | Other fields =
}}

will be analyzed as en language by ~100 % accurancy and the bot replaces its content by

{{Information
 | Description = {{en|A simplified icon for [[Pywikibot]]}}
 | Date = 2003-06-14
 | Other fields =
}}

Note

langdetect package is needed for fully support of language detection. Install it with:

pip install langdetect

This script understands the following command-line arguments:

This script supports use of pagegenerators arguments.

Usage:

python pwb.py commons_information [pagegenerators]

You can use any typical pagegenerator (like categories) to provide with a list of pages. If no pagegenerator is given, transcluded pages from Information template are used.

Hint

This script uses commons site as default. For other sites use the global -site option.

Example for going through all files:

python pwb.py commons_information -start:File:!

Added in version 6.0.

Changed in version 9.2: accelerate script with preloading pages; use commons as default site; use transcluded pages of Information template.

data_ingestion script#

A generic bot to do data ingestion (batch uploading) of photos or other files

In addition it installs related metadata. The uploading is primarily from a url to a wiki-site.

Required configuration files#

  • a ‘Data ingestion’ template on a wiki site that specifies the name of a csv file, and csv configuration values.

  • a csv file that specifies each file to upload, the file’s copy-from URL location, and some metadata.

Required parameters#

The following parameters are required. The ‘csvdir’ and the ‘page:csvFile’ will be joined creating a path to a csv file that should contain specified information about files to upload.

-csvdir

A directory path to csv files

-page

A wiki path to templates. One of the templates at this location must be a ‘Data ingestion’ template with the following parameters.

Required parameters

csvFile

Optional parameters
sourceFormat

options: ‘csv’

sourceFileKey

options: ‘StockNumber’

csvDialect

options: ‘excel’, ‘’

csvDelimiter

options: any delimiter, ‘,’ is most common

csvEncoding

options: ‘utf8’, ‘Windows-1252’

formattingTemplate

titleFormat

Example ‘Data ingestion’ template#

{{Data ingestion
|sourceFormat=csv
|csvFile=csv_ingestion.csv
|sourceFileKey=%(StockNumber)
|csvDialect=
|csvDelimiter=,
|csvEncoding=utf8
|formattingTemplate=Template:Data ingestion test configuration
|titleFormat=%(name)s - %(set)s.%(_ext)s
}}

Csv file#

A full example can be found at tests/data/csv_ingestion.csv The ‘url’ field is the location a file will be copied from.

csv field Headers:

description.en,source,author,license,set,name,url

Usage#

python pwb.py data_ingestion -csvdir:<local_dir/> -page:<cfg_page_on_wiki>

Example

pwb.py data_ingestion -csvdir:"test/data" -page:"User:<Your-Username>/data_ingestion_test_template"

Warning

Put it in one line, otherwise it won’t work correctly.

image script#

This script can be used to change one image to another or remove an image

Syntax:

python pwb.py image image_name [new_image_name]

If only one command-line parameter is provided then that image will be removed; if two are provided, then the first image will be replaced by the second one on all pages.

Command line options:

-summary:

Provide a custom edit summary. If the summary includes spaces, surround it with single quotes, such as: -summary:'My edit summary'

-always

Don’t prompt to make changes, just do them.

-loose

Do loose replacements. This will replace all occurrences of the name of the image (and not just explicit image syntax). This should work to catch all instances of the image, including where it is used as a template parameter or in image galleries. However, it can also make more mistakes. This only works with image replacement, not image removal.

Examples

The image “FlagrantCopyvio.jpg” is about to be deleted, so let’s first remove it from everything that displays it:

python pwb.py image FlagrantCopyvio.jpg

The image “Flag.svg” has been uploaded, making the old “Flag.jpg” obsolete:

python pwb.py image Flag.jpg Flag.svg

imagetransfer script#

Script to copy images to Wikimedia Commons, or to another wiki

Syntax:

python pwb.py imagetransfer {<pagename>|<generator>} [<options>]

The following parameters are supported:

-interwiki

Look for images in pages found through interwiki links.

-keepname

Keep the filename and do not verify description while replacing.

-tolang:x

(str) Copy the image to the wiki in code x.

-tofamily:y

(str) Copy the image to a wiki in the family y.

-tosite:s

(str) Copy the image to the given site like wikipedia:test.

-force_if_shared

Upload the file to the target, even if it exists on that wiki’s shared repo

-asynchronous

Upload to stash.

-chunk_size:n

(int) Upload in chunks of n bytes.

-file:z

(str) Upload many files from textfile z like:

[[Image:x]]
[[Image:y]]

If pagename is an image description page, offers to copy the image to the target site. If it is a normal page, it will offer to copy any of the images used on that page, or if the -interwiki argument is used, any of the images used on a page reachable via interwiki links.

This script supports use of pagegenerators arguments.

nowcommons script#

Script to delete files that are also present on Wikimedia Commons

Do not run this script on Wikimedia Commons itself. It works based on a given array of templates defined below.

Files are downloaded and compared. If the files match, it can be deleted on the source wiki. If multiple versions of the file exist, the script will not delete. If the SHA1 comparison is not equal, the script will not delete.

A sysop rights on the local wiki is required if you want all features of this script to work properly.

This script understands various command-line arguments:

-always

run automatically, do not ask any questions. All files that qualify for deletion are deleted. Reduced screen output.

-replace

replace links if the files are equal and the file names differ

-replacealways

replace links if the files are equal and the file names differ without asking for confirmation

-replaceloose

Do loose replacements. This will replace all occurrences of the name of the file (and not just explicit file syntax). This should work to catch all instances of the file, including where it is used as a template parameter or in galleries. However, it can also make more mistakes.

-replaceonly

Use this if you do not have a local sysop rights, but do wish to replace links from the NowCommons template.

Example

python pwb.py nowcommons -replaceonly -replaceloose -replacealways -replace

Note

This script is a ConfigParserBot. All options can be set within a settings file which is scripts.ini by default.

unusedfiles script#

This bot appends some text to all unused images and notifies uploaders

Parameters:

-limit:n

(int) Specify number of pages to work on where n is the maximum number of articles to work on. If not used, all pages are processe.

-always

Don’t be asked every time.

This script is a ConfigParserBot. The following options can be set within a settings file which is scripts.ini by default:

-nouserwarning

Do not warn uploader about orphaned file.

-filetemplate:

(str) Use a custom template on unused file pages.

-usertemplate:

(str) Use a custom template to warn the uploader.