Visit Mozilla.org

User:Nickolay/Add external links bot

From MDC

A pywikipedia-based bot for adding external redirects.

"""
Add an external redirect link to a category.
External redirects is a special feature installed on developer.mozilla.org
"""

__version__="0.1"
__author__="Nickolay Ponomarev <asqueella@gmail.com>"

import wikipedia
import logging

logger = logging.getLogger("add_external_link")
logging.basicConfig(level=logging.DEBUG)

# set to True to avoid changing anything in the wiki (useful for test runs)
dontMakeChanges = False

def addExternalLink(url, pageName, categories):
    """
    Creates a page at [[<pageName> (external)]] with a redirect to the specified 
    URL and the specified categories, i.e.:
    
    #redirect [[url]] [[Category:<categories[0]>]] [[Category:<categories[1]>]] <...>
    """
    def wrap(text):
        "Make an inner-wiki link to 'text'"
        return "[[" + text + "]]"
    
    categoriesText = " ".join([wrap("Category:" + cat) for cat in categories])
    articleText = "#redirect " + wrap(url)+ "  " + categoriesText
    logger.info(articleText)
    
    page = wikipedia.Page(wikipedia.getSite(), pageName)
    if not dontMakeChanges:
        page.put(articleText, articleText, True, False)

if __name__ == "__main__":
    try:
        addExternalLink("http://devedge-temp.mozilla.org/viewsource/2001/xbl/", "XBL article at DevEdge (external)", ["XBL"])
    except Exception, e:
        logger.error(e)
    wikipedia.stopme()