This repository has been archived by the owner on Sep 23, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathhaksik_upload.py
233 lines (196 loc) · 10.5 KB
/
haksik_upload.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#!/home/roharon98/hufscoops/venv/lib/python3.5
import sqlite3
import datetime
import os, sys
from hufscoops import haksik_pre
import temp_sikdan
HOME_DIR = os.path.dirname(os.path.realpath(__file__))
DB_DIR = os.path.join(HOME_DIR,"DB")
DB_NAME = "haksik_data.db"
DB_PATH = os.path.join(DB_DIR, DB_NAME)
DB_NAME_TOMORROW = "tomorrow_haksik_data.db"
DB_PATH_TOMORROW = os.path.join(DB_DIR, DB_NAME_TOMORROW)
if not os.path.isdir(DB_DIR):
os.mkdir(DB_DIR)
table_names = ("후생관","어문관","기숙사","교직원","국제사회교육원","인문관","교수회관","스카이라운지")
day_kr = ('월', '화', '수', '목', '금', '토', '일')
def db_init(db_cursor):
print(" > DB init ...")
try:
query_delete = ("DROP TABLE IF EXISTS {};")
query_create = ("CREATE TABLE {}(breakfast TEXT, lunch TEXT, dinner TEXT);")
for tname in table_names:
db_cursor.execute(query_delete.format(tname))
db_cursor.execute(query_create.format(tname))
except:
print("Database create error." + sys.stderr)
raise
def crawl(day):
print(" > Crawling ...")
assert(day in ('today', 'tomorrow'))
print(" > seo crawling ...")
inmoon = haksik_pre.seo_crawl('인문관', day)
gyosoo = haksik_pre.seo_crawl('교수회관', day)
sky_lounge = haksik_pre.seo_crawl('스카이 라운지', day)
print(" > glo crawling ...")
hooseng = haksik_pre.glo_crawl('후생관', day)
print(hooseng)
umoon = haksik_pre.glo_crawl('어문관', day)
dorm = haksik_pre.glo_crawl('기숙사 식당', day)
professor = haksik_pre.glo_crawl('교직원 식당', day)
gookje = haksik_pre.glo_crawl('국제사회교육원', day)
return (inmoon,gyosoo,sky_lounge,hooseng,umoon,dorm,professor,gookje)
def insert_menu(cur, cafe, menu):
query_insert = "INSERT INTO {}(breakfast, lunch, dinner) VALUES(?,?,?)"
cur.execute(query_insert.format(cafe), menu)
def db_insert(inmoon,gyosoo,sky_lounge,hooseng,umoon,dorm,professor,gookje,cur=None,day=None,days=None):
print(" > DB inserting ...")
query_insert = "INSERT INTO {}(breakfast, lunch, dinner) VALUES(?,?,?)"
try:
if '조식' in hooseng[0]:
if '컵밥' in hooseng[1]:
if '한식' in hooseng[2]:
if '일품' in hooseng[3]:
try:
insert_menu(cur, "후생관", (hooseng[0], hooseng[1],
hooseng[4] if '석식' in hooseng[4] else ''))
insert_menu(cur, "후생관", ('', hooseng[2], ''))
insert_menu(cur, "후생관", ('', hooseng[3], ''))
except:
print('석식 없음 오류')
else:
insert_menu(cur, "후생관", (hooseng[0], hooseng[1], ''))
if '석식' in hooseng[3]:
insert_menu(cur, "후생관", ('', hooseng[2], hooseng[3]))
elif '뚝배기' in hooseng[1]:
## --2018-05-08 석식안뜨는 문제 오류 해결--
# 조식-뚝배기-일품1-일품2-석식
# 일품없거나 석식없을때 문제 오류 해결.
if '일품1' in hooseng[2]:
if '일품2' in hooseng[3]:
insert_menu(cur,"후생관", (hooseng[0], hooseng[1], ''))
insert_menu(cur, "후생관", ('', hooseng[0], ''))
insert_menu(cur,"후생관",('',hooseng[2],''))
insert_menu(cur,"후생관",('',hooseng[3],''))
insert_menu(cur,"후생관",('','',hooseng[4] if len(hooseng) > 3 else '' ))
else:
insert_menu(cur, "후생관", (hooseng[0], hooseng[1], ''))
insert_menu(cur, "후생관", ('', hooseng[0], ''))
insert_menu(cur, "후생관", ('', hooseng[2], ''))
insert_menu(cur, "후생관", ('', '', hooseng[3] if len(hooseng) > 2 else ''))
else:
insert_menu(cur, "후생관", (hooseng[0], hooseng[1], hooseng[3]))
insert_menu(cur, "후생관", ('', hooseng[2], ''))
elif '일품' in hooseng[0]:
insert_menu(cur, "후생관", ('', hooseng[0], ''))
insert_menu(cur, "후생관", (hooseng[0], hooseng[1], hooseng[4]))
elif '뚝배기' in hooseng[0]:
insert_menu(cur, "후생관", ('', hooseng[0], hooseng[0]))
insert_menu(cur, "후생관", ('', hooseng[1], hooseng[1]))
if len(hooseng) > 2:
if '일품1' in hooseng[1]:
insert_menu(cur, "후생관", ('', hooseng[2], hooseng[2]))
try:
insert_menu(cur, "후생관", ('', hooseng[3] if '일품' in hooseng[3] else '',
hooseng[3] if ('석식' or '일품') in hooseng[3] else ''))
except:
pass
# fix it. 20180409-21:30
elif '탕류' in hooseng[0]:
if '뚝배기' in hooseng[1]:
if '일품1' in hooseng[2]:
if '일품2' in hooseng[3]:
# 일품2 있고
insert_menu(cur, "후생관", ('', hooseng[0], hooseng[0]))
insert_menu(cur, "후생관", ('', hooseng[1], hooseng[1]))
insert_menu(cur, "후생관", ('', hooseng[2], hooseng[2]))
insert_menu(cur, "후생관", ('', hooseng[3], hooseng[3]))
try:
insert_menu(cur, "후생관", ('', '', hooseng[4] if '석식' in hooseng[4] else ''))
except:
pass
else:
# 일품2없고 석식없고
insert_menu(cur, "후생관", ('', hooseng[0], hooseng[0]))
insert_menu(cur, "후생관", ('', hooseng[1], hooseng[1]))
insert_menu(cur, "후생관", ('', hooseng[2], hooseng[2]))
insert_menu(cur, "후생관", ('', '', hooseng[3] if '석식' in hooseng[3] else ''))
except:
pass
insert_menu(cur, "어문관", (umoon[0], umoon[0], umoon[0]))
if '조식(T/O)' in dorm[1]:
if '중식(특식)' in dorm[3]:
if '스넥' in dorm[4]:
if '석식' in dorm[5]:
try:
insert_menu(cur, "기숙사", (dorm[0], dorm[2], dorm[5]))
insert_menu(cur, "기숙사", (dorm[1], dorm[3],''))
insert_menu(cur, "기숙사", ('', dorm[4], ''))
except:
insert_menu(cur, "기숙사", ('기숙사식단 오류', '기숙사 식단 오류', '기숙사식단 오류'))
else:
try:
insert_menu(cur, "기숙사", (dorm[0], dorm[2], ''))
insert_menu(cur, "기숙사", (dorm[1], dorm[3], ''))
insert_menu(cur, "기숙사", ('', dorm[4], ''))
except:
insert_menu(cur, "기숙사", ('기숙사식단 오류', '기숙사 식단 오류', '기숙사식단 오류'))
else:
insert_menu(cur, "기숙사", (dorm[0], dorm[2], dorm[4]))
insert_menu(cur, "기숙사", (dorm[1], dorm[3], dorm[5] if '석식' in dorm[5] else ''))
elif '중식(일반)' in dorm[2]:
if '스넥' in dorm[3]:
if '석식' in dorm[4]:
insert_menu(cur, "기숙사", (dorm[0],dorm[2],dorm[4]))
insert_menu(cur, "기숙사", (dorm[1],dorm[3],''))
else:
insert_menu(cur, "기숙사", (dorm[0], dorm[2], dorm[3]))
insert_menu(cur, "기숙사", (dorm[1], '', dorm[4] if '석식(일품)' in dorm[4] else ''))
else:
if '중식(특식)' in dorm[2]:
insert_menu(cur, "기숙사", (dorm[0], dorm[1], dorm[3]))
insert_menu(cur, "기숙사", ('', dorm[2], dorm[4]))
else:
if '석식(일품)' in dorm[3]:
insert_menu(cur, "기숙사", (dorm[0], dorm[2], dorm[3]))
insert_menu(cur, "기숙사", ('', '', dorm[4]))
else:
insert_menu(cur, "기숙사", (dorm[0], dorm[1], dorm[2]))
insert_menu(cur, "교직원", ('', professor[0], professor[1]))
print(professor[0],professor[1])
insert_menu(cur, "국제사회교육원", (gookje[0], gookje[1], gookje[2]))
if (day == 'today' and days in ['토', '일']) or \
(day == 'tomorrow' and days in ['금', '토']):
insert_menu(cur, "인문관", (inmoon[0], inmoon[0], ''))
insert_menu(cur, "교수회관", (' ', ' ', ' '))
insert_menu(cur, "스카이라운지", ('', '', ''))
insert_menu(cur, "스카이라운지", ('', '', ''))
else:
insert_menu(cur, "인문관", (inmoon[0], inmoon[1], inmoon[4]))
insert_menu(cur, "인문관", ('', inmoon[2], ''))
insert_menu(cur, "인문관", ('', inmoon[3], ''))
insert_menu(cur, "교수회관", ('', gyosoo[0], gyosoo[1]))
insert_menu(cur, "스카이라운지", ('', sky_lounge[0], ''))
insert_menu(cur, "스카이라운지", ('', sky_lounge[1], ''))
def db_crontab():
days = day_kr[datetime.datetime.today().weekday()]
for db_path, day in ((DB_PATH, 'today'), (DB_PATH_TOMORROW, 'tomorrow')):
try:
data = crawl(day)
except:
print("Crawling connection error.", file=sys.stderr)
raise
con= sqlite3.connect(db_path)
cur = con.cursor()
db_init(cur)
check_date = datetime.datetime.now().strftime('%m%d') # new
inmoon, gyosoo, sky_lounge, hooseng, umoon, dorm, professor, gookje = data
db_insert(inmoon, gyosoo, sky_lounge, hooseng, umoon, dorm, professor, gookje, cur, day, days=days)
con.commit()
con.close()
db_crontab()
## Database binary checksum
#
# MD5 (DB/haksik_data.db) = 7f49a064166e312860afd45573c6836f
# MD5 (DB/tomorrow_haksik_data.db) = fb235b93ca605543ac83cbee4bf82d9c
#