PDA

View Full Version : [Python 3.3] Neo Connection Class



Zachafer
09-28-2013, 11:22 PM
import [Only registered and activated users can see links] urllib.request, urllib.parse

class NeoAccount:
"""A simple Neopets connection class"""
def __init__(self, un, pw):
self.username = un
self.password = pw
cookie_handler = urllib.request.[Only registered and activated users can see links]()
self._opener = urllib.request.build_opener(cookie_handler)
self._opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0')]
self.referer = None

def login(self):
self.clearCookies()
data = {"destination" : "/index.phtml",
"username" : self.username,
"password" : self.password}
html = self.post("[Only registered and activated users can see links]", data)
return "Welcome, " in html

def get(self, url, referer = ""):
if referer is not None:
self._opener.addheaders = [('Referer', referer)]
return str(self._opener.open(url).read())

def post(self, url, parameters, referer = ""):
data = urllib.parse.urlencode(parameters)
data = data.encode('UTF-8')
if referer is not None:
self._opener.addheaders = [('Referer', referer)]
return str(self._opener.open(url, data).read())

def clearCookies(self):
self.cj = [Only registered and activated users can see links]()
Example usage:

username = input("Neopets username: ")
password = input("Neopets password: ")

acc = NeoAccount(username, password)
if acc.login():
print("Logged into " + username)
html = acc.get("[Only registered and activated users can see links]")
match = re.search("Total Items: <b>([0-9]+)</b>", html)
if match:
itemCount = match.group(1)
else:
itemCount = "0"
print(username + " has " + itemCount + " items!")
else:
print("Failed to login to " + username)

DarkByte
02-05-2015, 06:31 AM
I need to get learning python 3 , dont think its to different and apparently fixes alot of the encoding issues ive been having lately simulating certain packets that are outside of the standard charset range. Thanks for the class :).