diff --git a/modules/indeed/backend.py b/modules/indeed/backend.py index 87c68839..e0de01e8 100644 --- a/modules/indeed/backend.py +++ b/modules/indeed/backend.py @@ -56,9 +56,21 @@ class IndeedBackend(BaseBackend, ICapJob): 'last': u'depuis ma dernière visite', }.iteritems())]) + radius_choices = OrderedDict([(k, u'%s' % (v)) for k, v in sorted({ + '0': u'uniquement à cet endroit', + '5': u'dans un rayon de 5 kilomètres', + '10': u'dans un rayon de 10 kilomètres', + '15': u'dans un rayon de 15 kilomètres', + '25': u'dans un rayon de 25 kilomètres', + '50': u'dans un rayon de 50 kilomètres', + '100': u'dans un rayon de 100 kilomètres', + }.iteritems())]) + CONFIG = BackendConfig(Value('metier', label=u'Job name', masked=False, default=''), Value('limit_date', label=u'Date limite', choices=limit_date_choices, default=''), - Value('contrat', label=u'Contract', choices=type_contrat_choices, default='')) + Value('contrat', label=u'Contract', choices=type_contrat_choices, default=''), + Value('place', label=u'Place', masked=False, default=''), + Value('radius', label=u'Radius', choices=radius_choices, default='')) def search_job(self, pattern=None): with self.browser: @@ -67,7 +79,9 @@ class IndeedBackend(BaseBackend, ICapJob): def advanced_search_job(self): return self.browser.advanced_search_job(metier=self.config['metier'].get(), limit_date=self.config['limit_date'].get(), - contrat=self.config['contrat'].get(),) + contrat=self.config['contrat'].get(), + place=self.config['place'].get(), + radius=self.config['radius'].get()) def get_job_advert(self, _id, advert=None): with self.browser: diff --git a/modules/indeed/browser.py b/modules/indeed/browser.py index c1f169e2..40aad6ab 100644 --- a/modules/indeed/browser.py +++ b/modules/indeed/browser.py @@ -31,7 +31,7 @@ __all__ = ['IndeedBrowser'] class IndeedBrowser(BaseBrowser): PROTOCOL = 'http' DOMAIN = 'www.indeed.fr' - ENCODING = None + ENCODING = 'UTF-8' PAGES = { '%s://%s/Emplois-(.*?)' % (PROTOCOL, DOMAIN): SearchPage, '%s://%s/emplois(.*?)' % (PROTOCOL, DOMAIN): SearchPage, @@ -45,9 +45,9 @@ class IndeedBrowser(BaseBrowser): assert self.is_on_page(SearchPage) return self.page.iter_job_adverts() - def advanced_search_job(self, metier=None, contrat=None, limit_date=None): - self.location('http://www.indeed.fr/emplois?as_ttl=%s&limit=50&sort=date&st=employer&sr=directhire&jt=%s&fromage=%s' - % (metier.replace(' ', '+'), contrat, limit_date)) + def advanced_search_job(self, metier=None, contrat=None, limit_date=None, radius=None, place=None): + self.location( + 'http://www.indeed.fr/emplois?as_ttl=%s&limit=50&sort=date&st=employer&sr=directhire&jt=%s&fromage=%s&radius=%s&l=%s' % (metier.replace(' ', '+'), contrat, limit_date, radius, place)) assert self.is_on_page(SearchPage) return self.page.iter_job_adverts()