Fandom

Zammy Wiki

Category adder/Category.py

< Category adder

2,249pages on
this wiki
Add New Page
Talk0 Share

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.

#!/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()

Also on Fandom

Random Wiki