[Pywikipedia-svn] SVN: [7260] branches/rewrite/scripts/imageuncat.py

multichill at svn.wikimedia.org multichill at svn.wikimedia.org
Thu Sep 17 12:00:47 UTC 2009


Revision: 7260
Author:   multichill
Date:     2009-09-17 12:00:47 +0000 (Thu, 17 Sep 2009)

Log Message:
-----------
First attempt of a port to the rewrite branch

Added Paths:
-----------
    branches/rewrite/scripts/imageuncat.py

Copied: branches/rewrite/scripts/imageuncat.py (from rev 7258, trunk/pywikipedia/imageuncat.py)
===================================================================
--- branches/rewrite/scripts/imageuncat.py	                        (rev 0)
+++ branches/rewrite/scripts/imageuncat.py	2009-09-17 12:00:47 UTC (rev 7260)
@@ -0,0 +1,1382 @@
+# -*- coding: utf-8 -*-
+"""
+Program to add uncat template to images without categories at commons.
+See imagerecat.py (still working on that one) to add these images to categories.
+
+"""
+__version__ = '$Id$'
+#
+#  (C) Multichill 2008
+#
+# Distributed under the terms of the MIT license.
+#
+#
+
+import os, sys, re, codecs
+import pywikibot
+from pywikibot import config
+from pywikibot import pagegenerators
+from pywikibot import config
+#import  query
+from datetime import datetime
+from datetime import timedelta
+
+#Probably unneeded because these are hidden categories. Have to figure it out.
+ignoreCategories = [u'[[Category:CC-BY-SA-3.0]]',
+                    u'[[Category:GFDL]]',
+                    u'[[Category:Media for cleanup]]',
+                    u'[[Category:Media lacking a description]]',
+                    u'[[Category:Media lacking author information]]',
+                    u'[[Category:Media lacking a description]]',
+                    u'[[Category:Self-published work]]']
+
+#Dont bother to put the template on a image with one of these templates
+skipTemplates = [u'Delete',
+                 u'Nocat',
+                 u'No license',
+                 u'No permission since',
+                 u'No source',
+                 u'No source since',
+                 u'Uncategorized',
+                 u'Uncat']
+
+#Ignore the templates in this really long list when looking for relevant categories
+ignoreTemplates = [ u'1000Bit',
+                    u'1922 cyc',
+                    u'2MASS',
+                    u'Aa',
+                    u'Ab',
+                    u'AbuGhraibPic',
+                    u'ADRM',
+                    u'ADRM2',
+                    u'AerialPhotograph-mlitJP',
+                    u'Af',
+                    u'Agência Brasil',
+                    u'AgenciaBrasil',
+                    u'AgenciaCamaraBr',
+                    u'AgenciaSenadoBr',
+                    u'Ak',
+                    u'AL2TB',
+                    u'Alabordache',
+                    u'Alexj2002C220PD',
+                    u'Alexj2002InkscapePD',
+                    u'Aln',
+                    u'Als',
+                    u'Am',
+                    u'An',
+                    u'Ang',
+                    u'Anonymous work',
+                    u'AnotherAuthor',
+                    u'Apache',
+                    u'Ar',
+                    u'Arc',
+                    u'Arn',
+                    u'Artistic-2',
+                    u'As',
+                    u'Ashipilin',
+                    u'AskedForInfo',
+                    u'Ast',
+                    u'AstronautPhoto',
+                    u'Attribution',
+                    u'Attribution Entomart',
+                    u'Attribution-Ubisoft',
+                    u'Auroranorthlicense',
+                    u'Author-de',
+                    u'Autorisation photos aériennes Francis Leroy',
+                    u'Autotravel',
+                    u'Av',
+                    u'Avk',
+                    u'Ay',
+                    u'Az',
+                    u'Ba',
+                    u'BadJPEG',
+                    u'Bar',
+                    u'BArch-License',
+                    u'BArch-link',
+                    u'Bat-smg',
+                    u'Bcl',
+                    u'Be',
+                    u'Be-tarask',
+                    u'Be-x-old',
+                    u'BeeldbankVenW',
+                    u'Bg',
+                    u'Bh',
+                    u'Bi',
+                    u'Blue Marble',
+                    u'Bm',
+                    u'Bmz',
+                    u'Bn',
+                    u'Bo',
+                    u'Botev license',
+                    u'Botev relicensed',
+                    u'BotMoveToCommons',
+                    u'Bpy',
+                    u'Br',
+                    u'Bs',
+                    u'BSD',
+                    u'BSDwithdisclaimer',
+                    u'Byp',
+                    u'C0',
+                    u'Ca',
+                    u'CatedralDeSal',
+                    u'Cc',
+                    u'CC-AR-Presidency',
+                    u'Cc-by',
+                    u'Cc-by-1.0',
+                    u'Cc-by-1.0-nl',
+                    u'Cc-by-2.0',
+                    u'Cc-by-2.0-at',
+                    u'Cc-by-2.0-be',
+                    u'Cc-by-2.0-br',
+                    u'Cc-by-2.0-cl',
+                    u'Cc-by-2.0-de',
+                    u'Cc-by-2.0-es',
+                    u'Cc-by-2.0-fr',
+                    u'Cc-by-2.0-it',
+                    u'Cc-by-2.0-kr',
+                    u'Cc-by-2.0-nl',
+                    u'Cc-by-2.0-uk',
+                    u'Cc-by-2.1-au',
+                    u'Cc-by-2.1-es',
+                    u'Cc-by-2.1-jp',
+                    u'Cc-by-2.5',
+                    u'Cc-by-2.5-bg',
+                    u'Cc-by-2.5-br',
+                    u'Cc-by-2.5-dk',
+                    u'Cc-by-2.5-es',
+                    u'Cc-by-2.5-in',
+                    u'Cc-by-2.5-it',
+                    u'Cc-by-2.5-my',
+                    u'Cc-by-2.5-nl',
+                    u'Cc-by-2.5-pl',
+                    u'Cc-by-2.5-se',
+                    u'Cc-by-2.5,2.0,1.0',
+                    u'Cc-by-3.0',
+                    u'Cc-by-3.0-gr',
+                    u'Cc-by-3.0-IndiaFM',
+                    u'Cc-by-3.0-nl',
+                    u'Cc-by-3.0-rs',
+                    u'Cc-by-3.0-us',
+                    u'Cc-by-3.0,2.5,2.0,1.0',
+                    u'Cc-by-all',
+                    u'Cc-by-nc-sa-2.0-dual',
+                    u'Cc-by-sa',
+                    u'Cc-by-sa-1.0',
+                    u'Cc-by-sa-1.0-fi',
+                    u'Cc-by-sa-1.0-tw',
+                    u'Cc-by-sa-2.0',
+                    u'Cc-by-sa-2.0-at',
+                    u'Cc-by-sa-2.0-au',
+                    u'Cc-by-sa-2.0-be',
+                    u'Cc-by-sa-2.0-br',
+                    u'Cc-by-sa-2.0-ca',
+                    u'Cc-by-sa-2.0-cl',
+                    u'Cc-by-sa-2.0-de',
+                    u'Cc-by-sa-2.0-es',
+                    u'Cc-by-sa-2.0-fr',
+                    u'Cc-by-sa-2.0-it',
+                    u'Cc-by-sa-2.0-kr',
+                    u'Cc-by-sa-2.0-nl',
+                    u'Cc-by-sa-2.0-tw',
+                    u'Cc-by-sa-2.0-uk',
+                    u'Cc-by-sa-2.1-au',
+                    u'Cc-by-sa-2.1-es',
+                    u'Cc-by-sa-2.1-jp',
+                    u'Cc-by-sa-2.5',
+                    u'CC-BY-SA-2.5',
+                    u'Cc-by-sa-2.5-ar',
+                    u'Cc-by-sa-2.5-au',
+                    u'Cc-by-sa-2.5-bg',
+                    u'Cc-by-sa-2.5-br',
+                    u'Cc-by-sa-2.5-ca',
+                    u'Cc-by-sa-2.5-ch',
+                    u'Cc-by-sa-2.5-cl',
+                    u'Cc-by-sa-2.5-cn',
+                    u'Cc-by-sa-2.5-de',
+                    u'Cc-by-sa-2.5-dk',
+                    u'Cc-by-sa-2.5-es',
+                    u'Cc-by-sa-2.5-hu',
+                    u'Cc-by-sa-2.5-in',
+                    u'Cc-by-sa-2.5-it',
+                    u'Cc-by-sa-2.5-mx',
+                    u'Cc-by-sa-2.5-my',
+                    u'Cc-by-sa-2.5-nl',
+                    u'Cc-by-sa-2.5-pl',
+                    u'Cc-by-sa-2.5-pt',
+                    u'Cc-by-sa-2.5-se',
+                    u'Cc-by-sa-2.5-si',
+                    u'Cc-by-sa-2.5-tw',
+                    u'Cc-by-sa-2.5,1.0',
+                    u'Cc-by-sa-2.5,2.0,1.0',
+                    u'Cc-by-sa-2.5,2.0,1.0-no-link',
+                    u'Cc-by-sa-3.0',
+                    u'Cc-by-sa-3.0-gr',
+                    u'Cc-by-sa-3.0-nl',
+                    u'Cc-by-sa-3.0-rs',
+                    u'Cc-by-sa-3.0-tw',
+                    u'Cc-by-sa-3.0-us',
+                    u'Cc-by-sa-3.0,2.5,2.0,1.0',
+                    u'Cc-by-sa-3.0,2.5,2.0,1.0-no-link',
+                    u'Cc-by-sa-all',
+                    u'Cc-by-sa-jul',
+                    u'CC-LukeFord',
+                    u'Cc-pd',
+                    u'Cc-sa-1.0',
+                    u'Cdo',
+                    u'Ce',
+                    u'Ceb',
+                    u'CeCILL',
+                    u'CERN-CMS',
+                    u'Ch',
+                    u'China-PD',
+                    u'Cho',
+                    u'Chr',
+                    u'Chuck',
+                    u'Chy',
+                    u'Cityview',
+                    u'Cityview2',
+                    u'Civertan license',
+                    u'Claude',
+                    u'CNG',
+                    u'Co',
+                    u'Coa-Germany-b1945',
+                    u'Coloured SVG boxes',
+                    u'Common Public License',
+                    u'Contact-VP',
+                    u'Convert to SVG',
+                    u'CopyAttribEmail',
+                    u'Copyright by Wikimedia',
+                    u'Copyright jalpeyrie',
+                    u'Copyrighted free use',
+                    u'Copyrighted free use provided that',
+                    u'Copyrighted IOC',
+                    u'CopyrightedFreeUse',
+                    u'CopyrightedFreeUse-Link',
+                    u'Cr',
+                    u'Created by ForrestSjap',
+                    u'Created with Inkscape',
+                    u'Creator',
+                    u'Credits-panoramafotos.net',
+                    u'Crh',
+                    u'Crh-cyrl',
+                    u'Croatian currency',
+                    u'Cs',
+                    u'Csb',
+                    u'Cu',
+                    u'Cv',
+                    u'Cy',
+                    u'Cz',
+                    u'Da',
+                    u'Date',
+                    u'De',
+                    u'De-cc-by-sa-2.0',
+                    u'Debora Cordeiro',
+                    u'Diq',
+                    u'DMonniaux',
+                    u'DMonniaux-DADVSI-20060507',
+                    u'Dsb',
+                    u'DSL',
+                    u'Dum',
+                    u'Dv',
+                    u'Dz',
+                    u'EdwardCurtis',
+                    u'Ee',
+                    u'EEK banknote',
+                    u'EEK coin',
+                    u'El',
+                    u'Elephants Dream',
+                    u'Eml',
+                    u'En',
+                    u'En icon',
+                    u'Eo',
+                    u'EPL',
+                    u'Erin Silversmith Licence',
+                    u'Es',
+                    u'EST-Land Board',
+                    u'Estremeñu',
+                    u'Et',
+                    u'Eu',
+                    u'EU location',
+                    u'Euro coin common face',
+                    u'Europe location',
+                    u'Expat',
+                    u'Ext',
+                    u'Fa',
+                    u'FAL',
+                    u'Fancyfootworklicense',
+                    u'Faroe stamps',
+                    u'Fcb981c',
+                    u'Ff',
+                    u'Fi',
+                    u'FirefoxWiki',
+                    u'Fiu-vro',
+                    u'Fj',
+                    u'Flag-Germany-b1945',
+                    u'Flickr',
+                    u'Flickr-change-of-license',
+                    u'Flickr-unfree-but',
+                    u'Flickrreview',
+                    u'Fo',
+                    u'FOLP',
+                    u'FOP',
+                    u'Fr',
+                    u'Fr icon',
+                    u'Frc',
+                    u'Free screenshot',
+                    u'Frp',
+                    u'Fur',
+                    u'FWL',
+                    u'Fy',
+                    u'Ga',
+                    u'Gag',
+                    u'Gakk Copyright',
+                    u'Gan',
+                    u'Gd',
+                    u'Geograph',
+                    u'GFDL',
+                    u'GFDL or cc-by-nc-sa',
+                    u'GFDL or cc-by-nc-sa/2.5',
+                    u'GFDL-1.2',
+                    u'GFDL-1.2-en',
+                    u'GFDL-CC-triple',
+                    u'GFDL-DD',
+                    u'GFDL-en',
+                    u'GFDL-GMT',
+                    u'GFDL-Institut de Qualitat Agroalimentària',
+                    u'GFDL-IS',
+                    u'GFDL-it',
+                    u'GFDL-ja',
+                    u'GFDL-Landsat-Kashmir3d',
+                    u'GFDL-OpenGeoDB',
+                    u'GFDL-retouched',
+                    u'GFDL-Samoborac',
+                    u'GFDL-self',
+                    u'GFDL-Self',
+                    u'GFDL-self-en',
+                    u'GFDL-user',
+                    u'GFDL-user-als',
+                    u'GFDL-user-ar',
+                    u'GFDL-user-bat-smg',
+                    u'GFDL-user-bs',
+                    u'GFDL-user-cs',
+                    u'GFDL-user-da',
+                    u'GFDL-user-de',
+                    u'GFDL-user-el',
+                    u'GFDL-user-en',
+                    u'GFDL-user-en-no-disclaimers',
+                    u'GFDL-user-en-note',
+                    u'GFDL-user-en-with-disclaimers',
+                    u'GFDL-user-es',
+                    u'GFDL-user-fa',
+                    u'GFDL-user-fi',
+                    u'GFDL-user-fr',
+                    u'GFDL-user-gl',
+                    u'GFDL-user-he',
+                    u'GFDL-user-hi',
+                    u'GFDL-user-hu',
+                    u'GFDL-user-id',
+                    u'GFDL-user-it',
+                    u'GFDL-user-ja',
+                    u'GFDL-user-ko',
+                    u'GFDL-user-lt',
+                    u'GFDL-user-nl',
+                    u'GFDL-user-nn',
+                    u'GFDL-user-no',
+                    u'GFDL-user-pl',
+                    u'GFDL-user-pt',
+                    u'GFDL-user-ru',
+                    u'GFDL-user-sk',
+                    u'GFDL-user-sq',
+                    u'GFDL-user-tr',
+                    u'GFDL-user-uk',
+                    u'GFDL-user-vi',
+                    u'GFDL-user-vls',
+                    u'GFDL-user-w',
+                    u'GFDL-user-zh',
+                    u'Giovannino Copyright',
+                    u'Gl',
+                    u'Glk',
+                    u'Gloumouth1Credit',
+                    u'Gn',
+                    u'GNOME-icon-theme',
+                    u'Got',
+                    u'GPL',
+                    u'GPLv2 only',
+                    u'GPLv3',
+                    u'Gr',
+                    u'Grays Anatomy plate',
+                    u'Gu',
+                    u'Gv',
+                    u'GWArt',
+                    u'GWArtOld',
+                    u'GWPDA',
+                    u'Ha',
+                    u'HAER',
+                    u'Hak',
+                    u'Halibutt Copyright GFDL',
+                    u'Halibutt Copyright Ogg',
+                    u'HALS',
+                    u'Harry',
+                    u'Harry2',
+                    u'Haw',
+                    u'He',
+                    u'Heraldic Badge',
+                    u'Hi',
+                    u'Hiuppo Copyright GFDL',
+                    u'Ho',
+                    u'Hr',
+                    u'Hsb',
+                    u'Ht',
+                    u'Hu',
+                    u'Hy',
+                    u'Hz',
+                    u'Ia',
+                    u'Ibiblio-Hyperwar.org',
+                    u'Icelandic currency',
+                    u'Icelandic stamp',
+                    u'Id',
+                    u'Ie',
+                    u'Ig',
+                    u'Ii',
+                    u'Ik',
+                    u'Ike-latn',
+                    u'Ilo',
+                    u'ImageUpload',
+                    u'Img-confirmation',
+                    u'INewton',
+                    u'Information',
+                    u'Information Picswiss',
+                    u'Inkscape',
+                    u'Insignia',
+                    u'Insignia Catalonia',
+                    u'Insignia Navarre',
+                    u'Io',
+                    u'IPPAR',
+                    u'Is',
+                    u'It',
+                    u'It icon',
+                    u'Iu',
+                    u'Ja',
+                    u'Ja2',
+                    u'James K. Lindsey permission',
+                    u'Jbo',
+                    u'Jean-PolGRANDMONTCredit',
+                    u'JewishEncyclopedia',
+                    u'Joergens.mi licence',
+                    u'JPEG version of PNG',
+                    u'Jv',
+                    u'Ka',
+                    u'Kaa',
+                    u'Kab',
+                    u'Kameno doba',
+                    u'Kg',
+                    u'Ki',
+                    u'Kirkeinfo',
+                    u'Kirkenorge',
+                    u'Kj',
+                    u'Kk',
+                    u'Kl',
+                    u'Km',
+                    u'Kn',
+                    u'Ko',
+                    u'Kopimi',
+                    u'Kr',
+                    u'Krj',
+                    u'Ks',
+                    u'Ksh',
+                    u'Ku',
+                    u'Kv',
+                    u'Kw',
+                    u'Ky',
+                    u'La',
+                    u'LA2-Blitz',
+                    u'Lad',
+                    u'Lan',
+                    u'LarsenCopyright',
+                    u'Lb',
+                    u'Lbe',
+                    u'Lfn',
+                    u'Lg',
+                    u'LGPL',
+                    u'Li',
+                    u'LibriVox public domain',
+                    u'License',
+                    u'Lij',
+                    u'LinuxeristCopyright',
+                    u'Lld',
+                    u'Lmo',
+                    u'Ln',
+                    u'Lo',
+                    u'LOC-image',
+                    u'LOC-pchrom',
+                    u'LOC-prok',
+                    u'LOC-prokc',
+                    u'Location',
+                    u'Location dec',
+                    u'Location dms',
+                    u'LocationRequired',
+                    u'Lothar1976',
+                    u'Loz',
+                    u'Ls',
+                    u'Lt',
+                    u'Lueger',
+                    u'Lv',
+                    u'LviatourCredit',
+                    u'Map of Japan-Shigenobu AOKI',
+                    u'Map-Austria-GNu',
+                    u'Marine-marchande.net',
+                    u'MartinX',
+                    u'Master son',
+                    u'MdB',
+                    u'Mdf',
+                    u'Met.no',
+                    u'Mg',
+                    u'Mh',
+                    u'Mi',
+                    u'Mildenhall',
+                    u'MindInfo',
+                    u'MIT',
+                    u'Mk',
+                    u'Ml',
+                    u'MLDoan',
+                    u'Mn',
+                    u'Mo',
+                    u'MoengCredit',
+                    u'Money-EU banknote',
+                    u'Money-Eu',
+                    u'Money-REAL',
+                    u'MORS',
+                    u'MPL',
+                    u'Mr',
+                    u'Ms',
+                    u'Mt',
+                    u'MTL',
+                    u'Museum.ru',
+                    u'My',
+                    u'Myv',
+                    u'Mzn',
+                    u'Na',
+                    u'Nah',
+                    u'Namespace',
+                    u'NAMESPACE',
+                    u'Nap',
+                    u'NAUMANN',
+                    u'Nb',
+                    u'Nds',
+                    u'Nds-nl',
+                    u'Ne',
+                    u'NetMarine',
+                    u'New',
+                    u'Newsflash Photo',
+                    u'Ng',
+                    u'NGC7000',
+                    u'NGruev',
+                    u'NGW',
+                    u'Ngw2',
+                    u'Nickshanks-cc-by-2.0-email',
+                    u'Njegos.org',
+                    u'Nl',
+                    u'Nl icon',
+                    u'Nn',
+                    u'Nn icon',
+                    u'No',
+                    u'No icon',
+                    u'Non',
+                    u'Norges Golfforbund',
+                    u'Norwegian coat of arms',
+                    u'Not-PD-US-URAA',
+                    u'Nov',
+                    u'Nrbelex Photo',
+                    u'Nrbelex Photo 400D',
+                    u'Nrm',
+                    u'Nso',
+                    u'Nv',
+                    u'Ny',
+                    u'NYC Subway map',
+                    u'NYPL-image-full',
+                    u'OAL',
+                    u'Object location',
+                    u'Oc',
+                    u'OldOS',
+                    u'Olessi Copyright Ogg',
+                    u'Om',
+                    u'Open Beelden',
+                    u'Open Font',
+                    u'Openphotoreview',
+                    u'Or',
+                    u'Originally uploaded',
+                    u'Os',
+                    u'OsborneFossils',
+                    u'OTrondal',
+                    u'OTRS',
+                    u'Otrs pending',
+                    u'OTRS pending',
+                    u'Own',
+                    u'Pa',
+                    u'Pag',
+                    u'PAGENAME',
+                    u'PAGENAMEE',
+                    u'Painting',
+                    u'Pam',
+                    u'Pap',
+                    u'Parlament.ch',
+                    u'PAshieldsource',
+                    u'PBresseler',
+                    u'PCL',
+                    u'PD',
+                    u'PD Colombia',
+                    u'PD patents',
+                    u'PD-1923',
+                    u'PD-AB-exempt',
+                    u'PD-Abdul Hamid',
+                    u'PD-AIGA',
+                    u'PD-Albania-exempt',
+                    u'PD-Algeria',
+                    u'PD-AM-exempt',
+                    u'PD-ancient-script',
+                    u'PD-AR-Anonymous',
+                    u'PD-AR-Movie',
+                    u'PD-AR-Photo',
+                    u'PD-Archivesnormandie',
+                    u'PD-Armenia',
+                    u'PD-Art',
+                    u'PD-art',
+                    u'PD-art-life-70',
+                    u'PD-art-US',
+                    u'PD-Art-YorckProject',
+                    u'PD-Australia',
+                    u'PD-AustrianGov',
+                    u'PD-author',
+                    u'PD-AZ-exempt',
+                    u'PD-Azerbaijan',
+                    u'PD-Bahrain',
+                    u'PD-Bain',
+                    u'PD-Bangladesh',
+                    u'PD-because',
+                    u'PD-BH-exempt',
+                    u'PD-BnFMandragorePic',
+                    u'PD-Brady-Handy',
+                    u'PD-Brazil-media',
+                    u'PD-BrazilGov',
+                    u'PD-Britannica',
+                    u'PD-Brockhaus&Efron',
+                    u'PD-BulgarianGov',
+                    u'PD-BW',
+                    u'PD-BY-exempt',
+                    u'PD-Canada',
+                    u'PD-Canada-creator',
+                    u'PD-Canada-Crown',
+                    u'PD-Canada-photo',
+                    u'PD-Canada-stamp',
+                    u'PD-Challenger Report',
+                    u'PD-chem',
+                    u'PD-Chile',
+                    u'PD-China',
+                    u'PD-Coa-Finland',
+                    u'PD-Coa-Germany',
+                    u'PD-Coa-Hungary',
+                    u'PD-Coins-Krenzer',
+                    u'PD-collective anonymous work',
+                    u'PD-copyright holder',
+                    u'PD-Croatia',
+                    u'PD-CroatiaGov',
+                    u'PD-CSIRO',
+                    u'PD-Cuba',
+                    u'PD-CzechGov',
+                    u'PD-DAUI',
+                    u'PD-DBZ stamps',
+                    u'PD-Demis',
+                    u'PD-Denmark50',
+                    u'PD-DenmarkEVH',
+                    u'PD-Detroit',
+                    u'PD-Deutsche Bundespost stamps',
+                    u'PD-Edison Records',
+                    u'PD-EE-exempt',
+                    u'PD-EEA',
+                    u'PD-Egypt',
+                    u'PD-EstoniaPub',
+                    u'PD-EU-no author disclosure',
+                    u'PD-Feldman-1905',
+                    u'PD-Fiji',
+                    u'PD-Finland',
+                    u'PD-Finland50',
+                    u'PD-FinlandGov',
+                    u'PD-flag',
+                    u'PD-Flag',
+                    u'PD-flag-50',
+                    u'PD-Flag-Germany',
+                    u'PD-FLGov',
+                    u'PD-font',
+                    u'PD-FOP-DE',
+                    u'PD-Fröléens konversationslexikon',
+                    u'PD-GallicaPic',
+                    u'PD-GDR stamps',
+                    u'PD-GE-exempt',
+                    u'PD-Generic',
+                    u'PD-German Empire stamps',
+                    u'PD-German postmarks',
+                    u'PD-German stamps',
+                    u'PD-GermanGov',
+                    u'PD-Google books',
+                    u'PD-Gottscho',
+                    u'PD-GreekGov',
+                    u'PD-Gutenberg',
+                    u'PD-heirs',
+                    u'PD-Highsmith',
+                    u'PD-HK',
+                    u'PD-HK-PR',
+                    u'PD-HU-exempt',
+                    u'PD-Hubble',
+                    u'PD-IDGov',
+                    u'PD-IDOld-Art29',
+                    u'PD-IDOld-Art30',
+                    u'PD-imf.org',
+                    u'PD-India',
+                    u'PD-ineligible',
+                    u'PD-Internationale',
+                    u'PD-Iran',
+                    u'PD-Iraq',
+                    u'PD-Ireland',
+                    u'PD-IrishGov',
+                    u'PD-Israel',
+                    u'PD-Israel-Photo',
+                    u'PD-ItalyGov',
+                    u'PD-Japan',
+                    u'PD-Japan-exempt',
+                    u'PD-Japan-film',
+                    u'PD-Japan-oldphoto',
+                    u'PD-Japan-organization',
+                    u'PD-Jordan',
+                    u'PD-Jordan-Photo',
+                    u'PD-JORF',
+                    u'PD-JORF-nor-conso',
+                    u'PD-Kenya',
+                    u'PD-KG-exempt',
+                    u'PD-Kuwait',
+                    u'PD-KZ-exempt',
+                    u'PD-Lebanon',
+                    u'PD-Libya',
+                    u'PD-link',
+                    u'PD-LOC',
+                    u'PD-Look',
+                    u'PD-LosAlamos',
+                    u'PD-Lozinski',
+                    u'PD-LT-exempt',
+                    u'PD-LV-exempt',
+                    u'PD-MacaoGov',
+                    u'PD-magic',
+                    u'PD-Malawi',
+                    u'PD-Manchukuo-stamps',
+                    u'PD-MapLibrary',
+                    u'PD-Mauritius',
+                    u'PD-MD-exempt',
+                    u'PD-Mexico',
+                    u'PD-Mexico-NIP',
+                    u'PD-Meyers',
+                    u'PD-Meyers-5th-edition',
+                    u'PD-Meyers-6th-edition',
+                    u'PD-MNGov',
+                    u'PD-MO',
+                    u'PD-money-Romania',
+                    u'PD-Morocco',
+                    u'PD-Namibia',
+                    u'PD-National Photo Company',
+                    u'PD-Nigeria',
+                    u'PD-NL-gemeentevlag',
+                    u'PD-NL-gemeentewapen',
+                    u'PD-NL-Gov',
+                    u'PD-NL-verkeersbord',
+                    u'PD-Nordens Flora',
+                    u'PD-North Korea',
+                    u'PD-Norway50',
+                    u'PD-NorwayGov',
+                    u'PD-NTBB',
+                    u'PD-NZ',
+                    u'PD-NZ-50-years',
+                    u'PD-old',
+                    u'Pd-old',
+                    u'PD-Old',
+                    u'PD-old-100',
+                    u'PD-old-50',
+                    u'PD-old-70',
+                    u'PD-old-75',
+                    u'PD-old-80',
+                    u'PD-old-Edition',
+                    u'PD-Oman',
+                    u'PD-OpenClipart',
+                    u'PD-Orgelbrand',
+                    u'PD-Ornament1898',
+                    u'PD-Pakistan',
+                    u'PD-PCL-portraits',
+                    u'PD-PDFnet',
+                    u'PD-PDphoto.org',
+                    u'PD-Peru',
+                    u'PD-Philippines',
+                    u'PD-PhilippinesPubDoc',
+                    u'PD-PMR-exempt',
+                    u'PD-Polish',
+                    u'PD-Polishsymbol',
+                    u'PD-PRC-exempt',
+                    u'PD-PT',
+                    u'PD-retouched-user',
+                    u'PD-retouched-user-w',
+                    u'PD-RO-exempt',
+                    u'PD-ROC-exempt',
+                    u'PD-ROC-Traffic Indicating Lines',
+                    u'PD-ROC-Traffic Signs',
+                    u'PD-RU-exempt',
+                    u'PD-RusEmpire',
+                    u'PD-Russia',
+                    u'PD-Russia-2008',
+                    u'PD-SAGov',
+                    u'PD-Saudi Arabia',
+                    u'PD-SBH',
+                    u'PD-scan',
+                    u'PD-Scan',
+                    u'PD-SCGGov',
+                    u'PD-ScottForesman',
+                    u'PD-ScottForesman-raw',
+                    u'PD-script',
+                    u'PD-Seal-Germany',
+                    u'PD-Seattle-Neighborhood-Atlas',
+                    u'PD-SeaWiFS',
+                    u'PD-self',
+                    u'PD-self2',
+                    u'PD-SerbiaGov',
+                    u'PD-Seychelles',
+                    u'PD-SFJ',
+                    u'PD-shape',
+                    u'PD-Sjöfartsverket',
+                    u'PD-SlovakGov',
+                    u'PD-South Korea',
+                    u'PD-South-Africa',
+                    u'PD-Soviet-revised',
+                    u'PD-SRBGov',
+                    u'PD-STFP',
+                    u'PD-StVZVO',
+                    u'PD-Sudan',
+                    u'PD-Suomen',
+                    u'PD-Sweden',
+                    u'PD-Sweden-1969',
+                    u'PD-Sweden-photo',
+                    u'PD-Sweden-self',
+                    u'PD-Switzerland-official',
+                    u'PD-Switzerland-photo',
+                    u'PD-Syria',
+                    u'PD-Taiwan',
+                    u'PD-text',
+                    u'PD-textlogo',
+                    u'PD-TH-exempt',
+                    u'PD-Thailand',
+                    u'PD-TJ-exempt',
+                    u'PD-TK-exempt',
+                    u'PD-TR-Gov',
+                    u'PD-Traditional',
+                    u'PD-Tunisia',
+                    u'PD-UA-exempt',
+                    u'PD-UEA',
+                    u'PD-Uganda',
+                    u'PD-Ugglan',
+                    u'PD-UK-known',
+                    u'PD-UK-unknown',
+                    u'PD-UKGov',
+                    u'PD-Ukraine',
+                    u'PD-UN',
+                    u'PD-United Arab Emirates',
+                    u'PD-URAA',
+                    u'PD-Uruguay',
+                    u'PD-US',
+                    u'PD-US-1978-89',
+                    u'PD-US-flag',
+                    u'PD-US-no notice',
+                    u'PD-US-not renewed',
+                    u'PD-US-patent',
+                    u'PD-US-patent-no notice',
+                    u'PD-US-record',
+                    u'PD-user',
+                    u'PD-User',
+                    u'PD-user-als',
+                    u'PD-user-ar',
+                    u'PD-user-ca',
+                    u'PD-user-cs',
+                    u'PD-user-da',
+                    u'PD-user-de',
+                    u'PD-user-en',
+                    u'PD-user-fa',
+                    u'PD-user-fr',
+                    u'PD-user-he',
+                    u'PD-user-hi',
+                    u'PD-user-hr',
+                    u'PD-user-hu',
+                    u'PD-user-it',
+                    u'PD-user-ja',
+                    u'PD-user-lt',
+                    u'PD-user-nl',
+                    u'PD-user-nn',
+                    u'PD-user-no',
+                    u'PD-user-pl',
+                    u'PD-user-pt',
+                    u'PD-user-ro',
+                    u'PD-user-ru',
+                    u'PD-user-sk',
+                    u'PD-user-sl',
+                    u'PD-user-th',
+                    u'PD-user-uk',
+                    u'PD-user-vls',
+                    u'PD-user-w',
+                    u'PD-user-zh',
+                    u'PD-USGov',
+                    u'PD-USGov-ARM',
+                    u'PD-USGov-Atlas',
+                    u'PD-USGov-Award',
+                    u'PD-USGov-BLM',
+                    u'PD-USGov-CIA',
+                    u'PD-USGov-CIA-WF',
+                    u'PD-USGov-Congress',
+                    u'PD-USGov-Congress-AOC',
+                    u'PD-USGov-Congress-Bio',
+                    u'PD-USGov-DEA',
+                    u'PD-USGov-DHS',
+                    u'PD-USGov-DHS-CG',
+                    u'PD-USGov-DHS-CGAUX',
+                    u'PD-USGov-DOC',
+                    u'PD-USGov-DOC-Census',
+                    u'PD-USGov-DOE',
+                    u'PD-USGov-DOJ',
+                    u'PD-USGov-DOL',
+                    u'PD-USGov-DOS',
+                    u'PD-USGov-DOT',
+                    u'PD-USGov-DVA',
+                    u'PD-USGov-ED',
+                    u'PD-USGov-EPA',
+                    u'PD-USGov-FAA',
+                    u'PD-USGov-FBI',
+                    u'PD-USGov-FDA',
+                    u'PD-USGov-Federal Reserve',
+                    u'PD-USGov-FEMA',
+                    u'PD-USGov-FSA',
+                    u'PD-USGov-FWS',
+                    u'PD-USGov-HHS',
+                    u'PD-USGov-HHS-CDC',
+                    u'PD-USGov-HHS-NIH',
+                    u'PD-USGov-Interior',
+                    u'PD-USGov-Interior-HABS',
+                    u'PD-USGov-Interior-MMS',
+                    u'PD-USGov-Interior-USBR',
+                    u'PD-USGov-Interior-USGS-Minerals',
+                    u'PD-USGov-Military',
+                    u'PD-USGov-Military award',
+                    u'PD-USGov-Military-Air Force',
+                    u'PD-USGov-Military-Air Force Auxiliary',
+                    u'PD-USGov-Military-Army',
+                    u'PD-USGov-Military-Army-USACE',
+                    u'PD-USGov-Military-Army-USACMH',
+                    u'PD-USGov-Military-Army-USAIOH',
+                    u'PD-USGov-Military-Badge',
+                    u'PD-USGov-Military-Coast Guard',
+                    u'PD-USGov-Military-DVIC',
+                    u'PD-USGov-Military-Marines',
+                    u'PD-USGov-Military-MDA',
+                    u'PD-USGov-Military-National Guard',
+                    u'PD-USGov-Military-Navy',
+                    u'PD-USGov-Military-NGA',
+                    u'PD-USGov-money',
+                    u'PD-USGov-MUTCD',
+                    u'PD-USGov-NASA',
+                    u'PD-USGov-NASA/copyright',
+                    u'PD-USGov-NCBI-scienceprimer',
+                    u'PD-USGov-NIH',
+                    u'PD-USGov-NIST',
+                    u'PD-USGov-NOAA',
+                    u'PD-USGov-NPS',
+                    u'PD-USGov-NRO',
+                    u'PD-USGov-NSA',
+                    u'PD-USGov-NSF',
+                    u'PD-USGov-NTSB',
+                    u'PD-USGov-POTUS',
+                    u'PD-USGov-State',
+                    u'PD-USGov-Treasury',
+                    u'PD-USGov-TVA',
+                    u'PD-USGov-USAID',
+                    u'PD-USGov-USDA',
+                    u'PD-USGov-USDA-ARS',
+                    u'PD-USGov-USDA-FS',
+                    u'PD-USGov-USDA-NAL',
+                    u'PD-USGov-USDA-NRCS',
+                    u'PD-USGov-USGS',
+                    u'PD-USGov-USIA',
+                    u'PD-USGov-VOA',
+                    u'PD-USGov-WPA',
+                    u'PD-USNWR',
+                    u'PD-UZ-exempt',
+                    u'PD-Van Vechten',
+                    u'PD-Vegagerdin',
+                    u'PD-Venezuela',
+                    u'PD-Vietnam',
+                    u'PD-VL-shield',
+                    u'PD-Vlaams-gemeentewapen',
+                    u'PD-Vlaamse-gemeentevlag',
+                    u'PD-VzKat',
+                    u'PD-WorldWind',
+                    u'PD-Yemen',
+                    u'PD-Yugoslavia',
+                    u'PD-Zimbabwe',
+                    u'Pd',
+                    u'Pdc',
+                    u'Peregrine981',
+                    u'PermissionOTRS',
+                    u'PermissionOTRS-ID',
+                    u'Personality rights',
+                    u'Photo-by-Wojciechowscy-GFDL',
+                    u'Photocity.ru',
+                    u'PhotoManifs-PP',
+                    u'Photos by Bagn Bygdesamling',
+                    u'Photos by Kulturhistorisk museum',
+                    u'Photos by Stortinget',
+                    u'Photos by the Norwegian Museum of Cultural History',
+                    u'Pi',
+                    u'Picswiss',
+                    u'Piratpartiet',
+                    u'Pl',
+                    u'Pl icon',
+                    u'PLoS',
+                    u'Pms',
+                    u'PNG with JPEG version',
+                    u'Pnt',
+                    u'Polish coats of arms by Tadeusz Gajl',
+                    u'PolishPresidentCopyright',
+                    u'PolishSenateCopyright',
+                    u'Polishsymbol',
+                    u'Politas FZ30',
+                    u'Portpictures.nl',
+                    u'Pousbeeld',
+                    u'Pressefotos Die Gruenen',
+                    u'Ps',
+                    u'Pt',
+                    u'Pt icon',
+                    u'Pt-br',
+                    u'Qu',
+                    u'QualityImage',
+                    u'RadioSenadoBr',
+                    u'RetouchedPicture',
+                    u'Rm',
+                    u'Rmy',
+                    u'Rn',
+                    u'Ro',
+                    u'Roa-rup',
+                    u'RomanianMCTICopyright',
+                    u'RTCNCA License',
+                    u'Rtl-lang',
+                    u'Ru',
+                    u'Rw',
+                    u'Sa',
+                    u'Sah',
+                    u'Sc',
+                    u'Scn',
+                    u'Sco',
+                    u'Sd',
+                    u'Sdc',
+                    u'Se',
+                    u'Seattle Neighborhood Atlas disclaimer',
+                    u'Second Life',
+                    u'Sei',
+                    u'SejmCopyright',
+                    u'Self',
+                    u'Self2',
+                    u'Self2-name',
+                    u'Self3',
+                    u'Self4',
+                    u'Self-GFDL-German',
+                    u'SelfSA-GFDL-German',
+                    u'SenadoMexico',
+                    u'Sergeymila',
+                    u'Sg',
+                    u'SgiraldoaCredit',
+                    u'Sh',
+                    u'Shi',
+                    u'Si',
+                    u'SIB',
+                    u'Simple',
+                    u'Simple English',
+                    u'Sk',
+                    u'Sl',
+                    u'Sm',
+                    u'Sma',
+                    u'Sn',
+                    u'So',
+                    u'Solkoll',
+                    u'Solkoll 2D',
+                    u'Solkoll 3D',
+                    u'South Korean currency',
+                    u'SpaceShuttle',
+                    u'SPD-Parteivorstand',
+                    u'Spui',
+                    u'Spuiother',
+                    u'Sq',
+                    u'Sr',
+                    u'Srn',
+                    u'Ss',
+                    u'St',
+                    u'Stan Shebs photo',
+                    u'Stationsweb',
+                    u'Statistics Netherlands map',
+                    u'Stielers Handatlas 1891',
+                    u'Stortinget3',
+                    u'Stq',
+                    u'Stratosphere',
+                    u'Su',
+                    u'SupersededPNG',
+                    u'SupersededSVG',
+                    u'Supported by Wikimedia France',
+                    u'Sv',
+                    u'Svensk porträttgalleri',
+                    u'Svg',
+                    u'SVG',
+                    u'SVG-Map Africa by Slomox',
+                    u'Sw',
+                    u'Swiss Government Portrait',
+                    u'SygnaturaPixela',
+                    u'Szl',
+                    u'Ta',
+                    u'Tango',
+                    u'Taxonavigation',
+                    u'Tcolphoto',
+                    u'Te',
+                    u'Texas State Highway',
+                    u'Tet',
+                    u'Tg',
+                    u'Tgl',
+                    u'Tintazul',
+                    u'Th',
+                    u'ThomasBredolCredit2',
+                    u'ThomasBredolCredit3',
+                    u'Ti',
+                    u'Tk',
+                    u'Tl',
+                    u'Tlx',
+                    u'Tn',
+                    u'To',
+                    u'TomCorserCredit',
+                    u'Tpi',
+                    u'Tr',
+                    u'Trademark',
+                    u'Trademarked',
+                    u'Ts',
+                    u'Tt',
+                    u'Tum',
+                    u'TVSenadoBr',
+                    u'Tw',
+                    u'Ty',
+                    u'Tyv',
+                    u'Udm',
+                    u'Ug',
+                    u'Uk',
+                    u'UN map',
+                    u'Ur',
+                    u'User:FlickreviewR/reviewed-pass',
+                    u'User:Fir0002/20D',
+                    u'USDA',
+                    u'UWiscCIMSS',
+                    u'Uz',
+                    u'Ve',
+                    u'Vec',
+                    u'Vector-Images.com',
+                    u'Vector version available',
+                    u'Vi',
+                    u'Viollet-le-Duc',
+                    u'Vl',
+                    u'Vls',
+                    u'Vo',
+                    u'W',
+                    u'Wa',
+                    u'Walks.ru',
+                    u'War',
+                    u'WEF',
+                    u'Wikimedia relicensing',
+                    u'Wikipedia-screenshot',
+                    u'Wikiportrait',
+                    u'Wikispecies',
+                    u'WLA',
+                    u'Wo',
+                    u'Wulfstan GFDL',
+                    u'Wuu',
+                    u'Www.bordeaux-port.fr',
+                    u'Www.folketinget.dk',
+                    u'Www.hotelviewarea.com',
+                    u'Www.nordenskirker.dk',
+                    u'Xal',
+                    u'XGSC image',
+                    u'Xh',
+                    u'YAM',
+                    u'Ydd',
+                    u'Yi',
+                    u'Yo',
+                    u'Yue',
+                    u'Za',
+                    u'Zea',
+                    u'Zh',
+                    u'Zh-classical',
+                    u'Zh-cn',
+                    u'Zh-hans',
+                    u'Zh-hant',
+                    u'Zh-hk',
+                    u'Zh-min-nan',
+                    u'Zh-sg',
+                    u'Zh-tw'
+                    u'Zh-yue',
+                    u'Zlib',
+                    u'Zu',
+                    u'Zxx',]
+
+puttext = u'\n{{Uncategorized|year={{subst:CURRENTYEAR}}|month={{subst:CURRENTMONTHNAME}}|day={{subst:CURRENTDAY}}}}'
+putcomment = u'Please add categories to this image'
+
+def uploadedYesterday(site = None):
+    '''
+    Return a pagegenerator containing all the pictures uploaded yesterday.
+    Should probably copied to somewhere else
+    '''
+    result = []
+    dateformat ="%Y-%m-%dT00:00:00Z"
+    today = datetime.utcnow()
+    yesterday = today + timedelta(days=-1)
+
+    params = {
+        'action'    :'query',
+        'list'      :'logevents',
+        'leprop'    :'title',
+        'letype'    :'upload',
+        'ledir'     :'newer',
+        'lelimit'   :'5000',
+        'lestart'   :yesterday.strftime(dateformat),
+        'leend'     :today.strftime(dateformat)
+        }
+
+    data = query.GetData(params, site, encodeTitle = False)
+    try:
+        for item in data['query']['logevents']:
+            result.append(item['title'])
+    except IndexError:
+        raise NoPage(u'API Error, nothing found in the APIs')
+    except KeyError:
+        raise NoPage(u'API Error, nothing found in the APIs')
+
+    return pagegenerators.PagesFromTitlesGenerator(result, site)
+
+def recentChanges(site = None, delay=0, block=70):
+    '''
+    Return a pagegenerator containing all the images edited in a certain timespan.
+    The delay is the amount of minutes to wait and the block is the timespan to return images in.
+    Should probably copied to somewhere else
+    '''
+    
+    result = []
+    dateformat ="%Y-%m-%dT%H:%M:%SZ"
+    rcstart = datetime.utcnow() + timedelta(minutes=-delay-block)
+    rcend = datetime.utcnow() + timedelta(minutes=-delay)
+
+    return site.recentchanges(start=rcstart, end=rcend, reverse=True, namespaces=6, changetype='edit|log', showBot=False) 
+    '''
+    params = {
+        'action'    :'query',
+        'list'      :'recentchanges',
+        'rcstart'   :rcstart.strftime(dateformat),
+        'rcend'     :rcend.strftime(dateformat),
+        'rcdir'     :'newer',
+        'rcnamespace':'6',
+        'rcprop'    :'title',
+        'rcshow'    :'!bot',
+        'rclimit'   :'5000',
+        'rctype'    :'edit|log',
+        }
+
+    data = query.GetData(params, site, encodeTitle = False)
+    try:
+        for item in data['query']['recentchanges']:
+            result.append(item['title'])
+    except IndexError:
+        raise NoPage(u'API Error, nothing found in the APIs')
+    except KeyError:
+        raise NoPage(u'API Error, nothing found in the APIs')
+
+    return pagegenerators.PagesFromTitlesGenerator(result, site)
+    '''
+def isUncat(page):
+    '''
+    Do we want to skip this page?
+
+    If we found a category which is not in the ignore list it means that the page is categorized so skip the page.
+    If we found a template which is in the ignore list, skip the page.
+    '''
+    pywikibot.output(u'Working on '+ page.title())
+
+    for category in page.categories():
+        if category not in ignoreCategories:
+            pywikibot.output(u'Got category ' + category.title())
+            return False
+
+    for templateWithTrail in page.templates():
+        #Strip of trailing garbage
+        template = templateWithTrail.rstrip('\n').rstrip()
+        if template in skipTemplates:
+            # Already tagged with a template, skip it
+            pywikibot.output(u'Already tagged, skip it')
+            return False
+        elif template in ignoreTemplates:
+            # template not relevant for categorization
+            pywikibot.output(u'Ignore ' + template)
+        else:
+            pywikibot.output(u'Not ignoring ' + template)
+            return False
+    return True
+
+def addUncat(page):
+    '''
+    Add the uncat template to the page
+    '''
+    newtext = page.get() + puttext
+    pywikibot.showDiff(page.get(), newtext)
+    try:
+        page.put(newtext, putcomment)
+    except pywikibot.EditConflict:
+        # Skip this page
+        pass
+    except pywikibot.LockedPage:
+        # Skip this page
+        pass
+    return
+
+def main(args):
+    '''
+    Grab a bunch of images and tag them if they are not categorized.
+    '''
+    generator = None;
+    genFactory = pagegenerators.GeneratorFactory()
+
+    site = pywikibot.getSite(u'commons', u'commons')
+    #pywikibot.setSite(site)
+    for arg in pywikibot.handleArgs():
+        if arg.startswith('-yesterday'):
+            generator = uploadedYesterday(site)
+        elif arg.startswith('-recentchanges'):
+            generator = recentChanges(site=site, delay=120)
+        else:
+            genFactory.handleArg(arg)
+    print 'bla'
+    if not generator:
+        generator = genFactory.getCombinedGenerator()
+    if not generator:
+        pywikibot.output('You have to specify the generator you want to use for the program!')
+    else:
+        pregenerator = pagegenerators.PreloadingGenerator(generator)
+        for page in pregenerator:
+            print page.title()
+            if page.exists() and (page.namespace() == 6) and (not page.isRedirectPage()) :
+                if isUncat(page):
+                    addUncat(page)
+
+if __name__ == "__main__":
+    try:
+        main(sys.argv[1:])
+    finally:
+        pywikibot.stopme()





More information about the Pywikipedia-svn mailing list