import time
import os
from pathlib import Path
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import utils.config as cfg
import utils.console as console



def filterLink(link):
    filters = cfg.google_filter()
    for f in filters:
        if f in link:
            return True
    return False



class PictrievGrabber:
    def __init__(self):
        console.section('Age Detection')
        console.task('Opening Webdriver')
        self.driver = None
        self.ages = []
        self.males = []
        self.females = []

    def mean(self, arr):
        sum = 0
        for a in arr:
            sum += a
        if sum == 0:
            return 0
        if len(arr) == 0:
            return 0
        return sum/len(arr)


    def collectAges(self, img_url):
        if not self.driver:
            self.driver = cfg.getWebDriver()
        console.task('New Image: {0}'.format(img_url.strip()[:90]))  
        driver = self.driver
        driver.get("http://www.pictriev.com/?lang=en")
        console.subtask('Inserting Image URL')
        input = driver.find_elements_by_xpath('//*[@id="urltext"]')[0]
        input.clear()
        input.send_keys(img_url)
        btn = driver.find_elements_by_xpath('//*[@id="submit-url"]')[0]
        btn.click()
        console.subtask('Searching for Image...')
        time.sleep(cfg.timeout() * 3)
        try:
            age = driver.find_elements_by_css_selector('#age-gauge > svg:nth-child(1) > text:nth-child(6) > tspan:nth-child(1)')
        except:
            age = driver.find_elements_by_css_selector('#age-gauge > svg:nth-child(1) > text:nth-child(6) > tspan:nth-child(1)')
        if len(age) == 1:
            age = age[0].text
        else:
            age = 0
        self.ages.append(int(age))


    def finish(self):
        self.driver.close()
        return int(self.mean(self.ages))
