def profile_info(self, profile_id): info = None initial_profile_id = profile_id client.log("Looking up info for profile id %s" % str(profile_id)) query = "SELECT * FROM users WHERE profile_id = %i" % int(profile_id) self.cursor.execute(query) dbresult = self.cursor.fetchone() if dbresult: client.log("Returning info from db") profile_id = dbresult[1] profile_id2 = dbresult[2] profile_name = dbresult[3] profile_class = dbresult[4] age = dbresult[5] msn = dbresult[6] email = dbresult[7] cellphone_number = dbresult[8] school = dbresult[9] avatar_filename = dbresult[10] elif profile_id == 0 and self.my_profile_info != None: client.log("Already fetched info for this account") return self.my_profile_info else: lookup_url = "%s/User.aspx?id=%s" % (self.base_url, str(profile_id)) client.log("No info in db. Fetching from %s" % lookup_url) try: profile_data = urllib2.urlopen(lookup_url).read() profile_id = int(cre.between('href="Guestbook.aspx\?id=', '"', profile_data)) profile_id2 = cre.between('frameborder="0" src="https://user.vklass.se/presentation/', '"', profile_data) profile_name = cre.between('<li><span id="ctl00_ContentPlaceHolder2_nameLabel">Namn: ', '</span></li>', profile_data) profile_class = cre.between('<li><span id="ctl00_ContentPlaceHolder2_classLabel">Klass: ', '</span></li>', profile_data) age = cre.between('<li><span id="ctl00_ContentPlaceHolder2_ageLabel">', '</span></li>', profile_data) msn = cre.between('<li><span id="ctl00_ContentPlaceHolder2_msnLabel">MSN: ', '</span></li>', profile_data) email = cre.between('<li><span id="ctl00_ContentPlaceHolder2_mailLabel">Email: ', '</span></li>', profile_data) cellphone_number = cre.between('<li><span id="ctl00_ContentPlaceHolder2_mobileLabel">Mobil: ', '</span></li>', profile_data) school = cre.between('<li>Skola: ', '<', profile_data) avatar_filename = cre.between('https://user.vklass.se/photo/large/', '" target="', profile_data) self.cursor.execute("INSERT INTO users (profile_id, profile_id2, name, class, age, msn, email, cellphone_number, school, avatar_filename) VALUES(%i, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (profile_id, profile_id2, profile_name, profile_class, age, msn, email, cellphone_number, school, avatar_filename)) self.dbc.commit() client.ensure_dir(self.profile_picture_dir) if avatar_filename: client.download('%s/photo/large/%s' % (self.base_url, avatar_filename, self.profile_picture_dir + "/" + avatar_filename)) info = {"profile_id" : profile_id, "profile_id2": profile_id2, "name" : profile_name, "class" : profile_class, "age" : age, "msn" : msn, "email" : email, "cellphone_number" : cellphone_number, "school" : school, "avatar_filename" : avatar_filename} except: client.log("Could not fetch data from %s" % lookup_url) if self.my_profile_info == None and initial_profile_id == 0: self.my_profile_info = info return info
def do_download(self, args): url, filename = args.split(" ") client.download(url, filename)
def run(self): for i in range(self.begin, self.end): client.download(str(i)) print(i)