Fandom

Zammy Wiki

Category adder/Category.py

< Category adder

2,244pages on
this wiki
Add New Page
Talk0 Share
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
__author__ = '[[User:TyA]]'
__version__ = '2.0'
 
print """ Welcome to the Semi-automatic Category Adder! 
This program allows you to specify a wiki, namespace, and category and then \nquickly list pages to add to that category. 
 
This is particulary useful when you're on [[Special:Uncategorizedfiles]] and \nwant to add a lot of pages to a category quickly. 
 
To report any bugs, please to go http://c.wikia.com/wiki/Message_Wall:TyA 
"""
 
from simplemediawiki import MediaWiki
import getpass
import sys
 
def getMode():
    mode = raw_input("What mode would you like to use? (c for categories; t for templates): ")
    #mode = mode.lower()
    return mode
 
def getUserName():
    username = raw_input("Username: ") # Gets user's username
    return username
 
def getUserPass():    
    password = getpass.getpass() #Gets user's password
    return password
 
def getContent(page): # Makes the function to get page content
 
    content = wiki.call({'action':'query','format':'json','prop':'revisions','rvprop':'content','titles':page})
    try:
        content = content["query"]["pages"]
        return content[content.keys()[0]]["revisions"][0]['*']
    except: 
        print "Page does not exist"
        content = ""
        return content
 
def saveEdit(page, content):
    query = {"action":"edit", "title":page, "summary":summary, "text":content, "token":edittoken} # Creates the API query
    try: 
        wiki.call(query) # Tries to make the query
    except:
        print "Error" 
 
def edit(page, edittoken):  # Makes the edit function
    page = namespace + page # Makes the Full page name
    content = getContent(page)
    if mode is "c":
        if ("[[Category:" + dataName + "]]" in content):
            print "Category is already on the page - Skipping" 
        elif (content is ""):
            content = "[[Category:" + dataName + "]]"
            print content
            saveEdit(page, content)
        else:
            content = content + "\n[[Category:" + dataName + "]]"
            print content
            saveEdit(page, content)
    elif mode is "t":
        #if ("{{" + template in content):
        #    print "Template is already on page"
        if (content is ""):
            content = "{{" + dataName + "}}"
            print content
            saveEdit(page, content)
        else:
            content = content + "\n{{" + dataName + "}}"
            print content
            saveEdit(page, content)
 
def getEditToken():
 
    query = {"action":"query", "prop":"info", "intoken":"edit", "titles":"Main Page"} #The query to request an edit token
    q = wiki.call(query)["query"]["pages"] # Making the call
    for i in q: 
        try: # Trying
            wiki.edittoken = q[i]["edittoken"] 
            return wiki.edittoken
 
        except: # no edit privilege for us
            wiki.edittoken = None;
            print "Failed to get edit token!"
            return False
 
def start():
 
    counter = 1
 
    while counter is 1:
        page = raw_input("Page: ")
	## TODO: Make this work, currently it only does the else: statement
        if page.lower() is "change category":
            category = raw_input("New Category: ")
            print "Category changed!"
        elif page.lower() is "change namespace":
            namespace = raw_input("New Namespace: ")
            print "Namespace changed!"
        elif page.lower() is "change summary":
            summary = raw_input("New Summary: ")
            print "Summary changed!"
        elif page.lower() is "change mode":
            mode = raw_input("New Mode: ")
            print "Mode changed to " + mode 
        elif page.lower() is "quit":
            print "Goodbye."
            sys.exit()
        else:
            edit(page, edittoken)
 
 
url = raw_input("Sitename: ") # Gets the API.php url
url = "http://" + url + ".wikia.com/api.php"
wiki = MediaWiki(url)
 
username = getUserName()
password = getUserPass()
print "Attempting to Login to " + url # Prints where it's trying to login to
 
if (wiki.login(username, password)  is True): #Attempts to login to the wiki
    print "Login successful!" # If successful
 
else:
        print "Login failed." # If fails
        username = getUserName()
        password = getUserPass()
        if (wiki.login(username, password) is True):
            print "Login successful!"
            start()
        else:
            print "Login failed. Terminating... "
            sys.exit()
 
summary = raw_input("Summary: ") # Gets the summary
namespace = raw_input("Namespace: ") # Gets the starting namespace
edittoken = getEditToken()
mode = getMode()
 
if mode is "c":
    dataName = raw_input("Category: ")
elif mode is "t":
    dataName = raw_input("Template: ")
 
start()

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki