def __init__(self, webdriver): self.browser = Webdriver.getBrowser(webdriver) # Get browser self.browser.set_page_load_timeout(150) # Set timeout to 150 seconds self.browser.get("https://web.whatsapp.com/") # Navigate browser to WhatsApp page self.browser.execute_script(scrapingScripts.initJQuery()) # active the jquery lib self.scrapedContacts = [ ] # List of scraped contacts self.defaultAvatar = Image.open("defaultAvatar.jpg") self.user_whatsapp_name = None # what is the user's whatsapp outgoing messages name # How many contact we scraped already self.person_count = 0 self.group_count = 0 self.probably_hebrew_interface = True # Wait in current page for user to log in using barcode scan. self.wait_for_element('.infinite-list-viewport', 300)
def _get_contact_avatar(self): """ Sends to db the avatar of current loaded chat. """ # print("In getContactAvatar") # Getting the small image's url and switching to the large image avatar_url = self.wait_for_element('#main .chat-avatar img', 2) # If contact has no avatar if avatar_url is None: return None avatar_url = avatar_url.get_attribute("src") avatar_url = avatar_url[:34] + "l" + avatar_url[35:] # Opening a new tab self.browser.execute_script("window.open('" + avatar_url + "');") # Switching to the new tab and navigating to image's url defWin = self.browser.window_handles[0] newWin = self.browser.window_handles[1] self.browser.switch_to_window(newWin) self.browser.get(avatar_url) self.browser.execute_script(scrapingScripts.initJQuery()) # Saving a screen shot img = self.wait_for_element('body img') # Getting image size for cropping width = img.get_attribute("width") height = img.get_attribute("height") self.browser.save_screenshot(self.TEMP_SCREENSHOT_PATH) # Cropping screenshot = Image.open("full_screen_shot_temp.png") cropped = screenshot.crop((0, 0, int(width), int(height))) # Closing the tab self.browser.close() self.browser.switch_to_window(defWin) return self._trim_avatar(cropped)