[Indeed] Add search criteria (place and radius)

This commit is contained in:
Bezleputh 2013-12-17 13:59:57 +01:00
commit 48792b8990
2 changed files with 20 additions and 6 deletions

View file

@ -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:

View file

@ -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()