code: def populate(self, usr = None, itemID = None):
          
          if not self.id and not itemID:
              return False
              
          if not self.usr and not user:
              return False
          
          # Object's ID is used by default over any provided ID        
          if self.id: itemID = self.id
              
          # Same with the user
          if self.usr: usr = self.usr
          
          pg = usr.getPage("http://www.neopets.com/iteminfo.phtml?obj_id=" + str(itemID), vars = {'Referer': 'http://www.neopets.com/objects.phtml?type=inventory'})
          
          # Verify valid ID
          if "not in your inventory" in pg.content:
              logging.getLogger("neolib.item").exception("Invalid ID given, could not populate. ID: " + itemID)
              return False
          
          try:
              self.img = pg.table.img['src']
              self.name = pg.table.find_all("td")[1].text.split(" : ")[1].replace("Owner", "")
              self.desc = pg.find_all("div", align="center")[1].i.text
              
              stats = pg.table.next_sibling.table.find_all("td")
              
              self.type = stats[1].text
              self.weight = stats[3].text
              self.rarity = stats[5].text
              self.estVal = stats[7].text
          except Exception:
              logging.getLogger("neolib.item").exception("Failed to parse item details.", {'pg': pg})
              raise parseException
          
          return True
docs: Attempts to populate an item's information with it's ID, returns result
          
          Note that the item id must already be set or otherwise supplied and that the item
          must exist in the associated user's inventory. 
             
          Parameters:
             usr (User) -- User who has the item
             itemID (str) -- The item's object ID
             
          Returns
             bool - True if successful, false otherwise
             
          Raises
             parseException