-
Notifications
You must be signed in to change notification settings - Fork 0
/
run.py
110 lines (86 loc) · 4.06 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import argparse
from datetime import datetime
from helpers.parsers.portals import profesia
from helpers.parsers.portals import kariera
from helpers.senders.email_sender import send_email, prepare_email
from helpers.senders.email_builder import get_email_message_html, get_email_message_plain
# Analytical portal-specific data translator (more settings can be added as needed/moved to JSON settings)
translator = {
'city': {
'bratislava': {
'profesia': 'bratislava',
'kariera': '0;r_1'
},
},
'form': {
'fulltime': {
'profesia': 'plny-uvazok',
'kariera': '1;1'
},
},
}
# Analytical timestamp
today = datetime.now()
today = f'{today.day}. {today.month}. {today.year}'
def run_for_profesia(args):
# Parse the job offers
offers = profesia.get_job_offers(work_city=translator.get('city').get(args.city, {}).get('profesia', None),
work_form=translator.get('form').get(args.form, {}).get('profesia', None),
day_delta=args.delta)
if offers:
# Prepare the e-mail message with the job offers
profesia_parser = profesia.ProfesiaJobOffersParser()
profesia_message_text = get_email_message_plain(offers, args.name, profesia_parser.weburl, args.delta)
profesia_message_html = get_email_message_html(offers, args.name, profesia_parser.weburl, args.delta)
# Send the offers
send_email(from_address='[email protected]',
to_address={'display_name': args.name, 'username': u_name, 'domain': d_name},
subject=f'profesia.sk {today}',
plaintext=profesia_message_text,
html=profesia_message_html)
def run_for_kariera(args):
# Parse the job offers
offers = kariera.get_job_offers(work_city=translator.get('city').get(args.city, {}).get('kariera', None),
work_form=translator.get('form').get(args.form, {}).get('kariera', None),
day_delta=args.delta)
if offers:
# Prepare the e-mail message with the job offers
kariera_parser = kariera.KarieraJobOffersParser()
kariera_message_text = get_email_message_plain(offers, args.name, kariera_parser.weburl, args.delta)
kariera_message_html = get_email_message_html(offers, args.name, kariera_parser.weburl, args.delta)
# Send the offers
send_email(from_address='[email protected]',
to_address={'display_name': args.name, 'username': u_name, 'domain': d_name},
subject=f'kariera.sk {today}',
plaintext=kariera_message_text,
html=kariera_message_html)
if __name__ == '__main__':
# -------------------------
# Parse the input arguments
# -------------------------
arg_parser = argparse.ArgumentParser(description='profesia.sk parser')
arg_parser.add_argument('-c', '--city', type=str, help='job city')
arg_parser.add_argument('-f', '--form', type=str, help='job form')
arg_parser.add_argument('-n', '--name', type=str, help='name of the recipient')
arg_parser.add_argument('-e', '--email', type=str, help='email of the recipient')
arg_parser.add_argument('-d', '--delta', type=int, help='day delta')
arg_parser.add_argument('--profesia', help='use profesia.sk', action='store_true')
arg_parser.add_argument('--kariera', help='use kariera.sk', action='store_true')
args = arg_parser.parse_args()
# ---------------------
# Prepare the machinery
# ---------------------
# Continue only if any portal is to be analyzed
if not any((args.profesia, args.kariera)):
print('No portal to analyze, exiting.')
exit(0)
# Prepare e-mail sending
u_name, d_name = prepare_email(args.email)
# -----------
# profesia.sk
# -----------
if args.profesia: run_for_profesia(args)
# -----------------
# kariera.zoznam.sk
# -----------------
if args.kariera: run_for_kariera(args)