Difference between revisions of "Free Software Directory:Pywikibot"
m (→Background to using the bot) |
|||
Line 21: | Line 21: | ||
The method of using BotPasswords improves the security overall. However bot's are required due to a CASAuth issue: | The method of using BotPasswords improves the security overall. However bot's are required due to a CASAuth issue: | ||
− | + | See also the '''CASAuth''' issue on this page. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==pywikibot== | ==pywikibot== | ||
Line 69: | Line 50: | ||
==Issue== | ==Issue== | ||
+ | |||
+ | ===CASAuth=== | ||
+ | This issue doesn't have to be fixed since there's a work around, but it would be great if it were fixed to give us more options. | ||
+ | |||
+ | zhuyifei1999: | ||
+ | |||
+ | Pywikibot [1] is a MediaWiki bot library which we are attemting to | ||
+ | utilize to perform batch uploads. However, because of CASAuth, we are | ||
+ | unable [2] to perform main account CAS-based login, and have to resort | ||
+ | to using BotPasswords. However, to upload, permissions to alter "File" | ||
+ | namespace is needed, but it is restricted to the 'editarticles' | ||
+ | permission [4], and there is no grant [5] that gives the permission to | ||
+ | any BotPasswords-based login. Please add 'editarticles' to the 'Edit | ||
+ | protected pages' set [5], or any other set if you deem appropriate, to | ||
+ | allow batch uploading. | ||
+ | |||
+ | # https://www.mediawiki.org/wiki/Manual:Pywikibot | ||
+ | # https://github.com/CWRUChielLab/CASAuth/issues/7 | ||
+ | # https://www.mediawiki.org/wiki/Manual:Pywikibot/BotPasswords | ||
+ | # https://directory.fsf.org/wiki/Special:ListGroupRights | ||
+ | # https://directory.fsf.org/wiki/Special:ListGrants | ||
+ | |||
+ | // zhuyifei1999@gmail.com, zhuyifei1999_ in #pywikibot at | ||
+ | irc.freenode.net, http://commons.wikimedia.org/wiki/User:Zhuyifei1999 | ||
+ | |||
===API issue to create pages=== | ===API issue to create pages=== |
Revision as of 10:02, 22 June 2018
Free Software Directory:Participate/Using pywikibot should be merged to this page.
Contents
MediaWiki
- Add this to LocalSettings.php
# Allow batch uploading for pywikibot $wgGrantPermissions['editprotected']['editarticles'] = true; $wgFileExtensions[] = 'wiki';
Generate a bot account for your user
The bot will be associated with the user name that are logged in.
- Login as WikiSysop in http://directory.fsf.org/
- Visit http://directory.fsf.org/wiki/Special:BotPasswords and generate a new bot.
- Bot name: wikibot
- Store the generated password somewhere
Background to using the bot
The method of using BotPasswords improves the security overall. However bot's are required due to a CASAuth issue:
See also the CASAuth issue on this page.
pywikibot
sudo apt-get install python-pip sudo pip install --upgrade pip git clone https://gerrit.wikimedia.org/r/pywikibot/core pywikibot-core cd pywikibot-core python generate_family_file.py 'http://directory.fsf.org/wiki/Main_Page' 'freesoftwaredirectorydev' python pwb.py generate_user_files # Select family of sites we are working on, just enter the number or name (default: wikipedia): freesoftwaredirectorydev # The only known language: en # The language code of the site we're working on (default: en): # Username on en:freesoftwaredirectorydev: WikiSysop # Do you want to add any other projects? ([y]es, [N]o): n # Do you want to add a BotPassword for WikiSysop? ([y]es, [N]o, [q]uit): y # See https://www.mediawiki.org/wiki/Manual:Pywikibot/BotPasswords to # know how to get codes.Please note that plain text in /home/root # /pywikibot-core/user-password.py and anyone with read access to that # directory will be able read the file. # BotPassword's "bot name" for WikiSysop: wikibot # BotPassword's "password" for "WikiSysop" (no characters will be shown): # '/home/root/pywikibot-core/user-config.py' written.
Test pywikibot on MediaWiki
python pwb.py upload -always -ignorewarn ~/heckert_gnu.transp.small.png "Some description"
Issue
CASAuth
This issue doesn't have to be fixed since there's a work around, but it would be great if it were fixed to give us more options.
zhuyifei1999:
Pywikibot [1] is a MediaWiki bot library which we are attemting to utilize to perform batch uploads. However, because of CASAuth, we are unable [2] to perform main account CAS-based login, and have to resort to using BotPasswords. However, to upload, permissions to alter "File" namespace is needed, but it is restricted to the 'editarticles' permission [4], and there is no grant [5] that gives the permission to any BotPasswords-based login. Please add 'editarticles' to the 'Edit protected pages' set [5], or any other set if you deem appropriate, to allow batch uploading.
- https://www.mediawiki.org/wiki/Manual:Pywikibot
- https://github.com/CWRUChielLab/CASAuth/issues/7
- https://www.mediawiki.org/wiki/Manual:Pywikibot/BotPasswords
- https://directory.fsf.org/wiki/Special:ListGroupRights
- https://directory.fsf.org/wiki/Special:ListGrants
// zhuyifei1999@gmail.com, zhuyifei1999_ in #pywikibot at irc.freenode.net, http://commons.wikimedia.org/wiki/User:Zhuyifei1999
API issue to create pages
There is a problem with creating pages with the API for our specific MediaWiki setup.
cd pywikibot
Create a new file, scripts/simpleedit.py, with this text:
#!/usr/bin/python # -*- coding: utf-8 -*- # WTFPL License or Unlicense. If not legally possible: # MIT License (C) Zhuyifei1999, 2018 from __future__ import absolute_import, unicode_literals import codecs import sys import pywikibot def main(): summary, title, filename = pywikibot.handleArgs() page = pywikibot.Page(pywikibot.Site(), title) with codecs.open(filename, 'r', 'utf-8') as f: page.text = f.read() page.save(summary) if __name__ == '__main__': main()
Then run this
$ echo "Hello world" > test.wiki $ pwb.py simpleedit.py "The edit summary" "The page title" test.wiki
Page render status:
- https://commons.wikimedia.org/w/index.php?title=User:Zhuyifei1999/sandbox&diff=prev&oldid=307483739 - Ok
- http://directory-dev.fsf.org/wiki/The_page_title - Notice: Undefined variable: contentObject in /var/www/directory.fsf.org-new/extensions/ApprovedRevs/ApprovedRevs.hooks.php on line 237 Fatal error: Call to a member function getRedirectTarget() on a non-object in /var/www/directory.fsf.org-new/includes/page/Article.php on line 682
Error code related:
- https://github.com/wikimedia/mediawiki-extensions-ApprovedRevs/blob/REL1_27/ApprovedRevs.hooks.php#L237
- https://github.com/wikimedia/mediawiki/blob/REL1_27/includes/page/Article.php#L682
- https://github.com/wikimedia/mediawiki/blob/REL1_27/includes/page/Article.php#L689 should be where Call to a member function getRedirectTarget() on a non-object. I have no idea why getContentObject would be a non-object.
Perhaps it's configuration / extension related.
Special thanks to zhuyifei1999 for all the text, code, and support.
Further reading
Read https://www.mediawiki.org/wiki/Manual:Importing_XML_dumps#Using_pywikibot,_pagefromfile.py_and_Nokogiri for more information
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.
The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.