# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import xml.etree.ElementTree as ET
import time
from operator import eq
import os
import sys
sys.path.append('..')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'home.settings')
import django
django.setup()
from Web.models import lecture_time, smu_professor
from multiprocessing import Pool
from urllib import parse
import urllib.request
from selenium import webdriver

if(smu_professor.objects.count() == 0):
	Exception("get_smu_professor.py 부터 먼저 실행해주세요.")

if(lecture_time.objects.count() != 0):
	print('이전데이터는 지워집니다.')
	lecture_time.objects.all().delete()

start_time = time.time()

colleges = []
#year = []
#sem = []
### 2019년도 2학기 categoryId ###
#year.append(2019)
#sem.append(2)
colleges.append([ (179340, '게임학과') , (179343,'생명공학과'), (179346,'전기공학과'), (179351,'컴퓨터과학과'), 
               (179352, '화공신소재학과'),(179353,'화학에너지공학과'), (179345, '융합전자공학과'), (179354,'휴먼지능정보공학과'),
               (179333, '교육학과'), (179334,'국어교육과'), (179336,'수학교육과'), (179337,'영어교육과'),
               (179303,'경영학부'), (179304,'경제금융학부'), (179305,'글로벌경영학과'), (179312,'융합경영학과'),
               (179321,'생활예술학과'), (179323, '스포츠건강관리학과'), (179324,'식품영양학과'), (179329,'의류학과'),
               (179330,'조형예술학과'), (179317,'무용예술학과'), (179328,'음악학부'),
               (179356,'가족복지학과'), (179358,'공간환경학부'), (179359,'공공인재학부'), (179360,'국가안보학과'),
               (179361,'문헌정보학과'), (179365,'역사콘텐츠학과'), (179368,'지적재산권학과'), (179370,'한일문화콘텐츠학과'),
               (179297, '계당교양교육원'),  (179298, '계당교양교육원'), (179299, '계당교양교육원'), (179300, '계당교양교육원') ])
#2019-1 (0)
#year.append(2019)
#sem.append(1)
colleges.append([ (155973, '게임학과') , (155977,'생명공학과'), (155979,'전기공학과'), (155984,'컴퓨터과학과'), 
               (155985, '화공신소재학과'),(155986,'화학에너지공학과'), (161320, '융합전자공학과'), (161321,'휴먼지능정보공학과'),
               (155966, '교육학과'), (155967,'국어교육과'), (155969,'수학교육과'), (155970,'영어교육과'),
               (155938,'경영학부'), (155939,'경제금융학부'), (155940,'글로벌경영학과'), (155947,'융합경영학과'),
               (155955,'생활예술학과'), (155957, '스포츠건강관리학과'), (155958,'식품영양학과'), (155962,'의류학과'),
               (155963,'조형예술학과'), (161318,'무용예술학과'), (161319,'음악학부'),
               (155988,'가족복지학과'), (155990,'공간환경학부'), (155991,'공공인재학부'), (155992,'국가안보학과'),
               (155993,'문헌정보학과'), (155997,'역사콘텐츠학과'), (156000,'지적재산권학과'), (156002,'한일문화콘텐츠학과'),
               (155933, '계당교양교육원'),  (155934, '계당교양교육원'), (155935, '계당교양교육원'), (155936, '계당교양교육원')])
                #교선                        #교직                        #교필                       #일선
#2018-2 (1)
#year.append(2018)
#sem.append(2)
colleges.append([ (137290, '게임학과') , (137294,'생명공학과'), (137296,'전기공학과'), (137298,'컴퓨터과학과'), 
               (137299, '화공신소재학과'),(137300,'화학에너지공학과'), (137295, '융합전자공학과'), (137301,'휴먼지능정보공학과'),
               (137283, '교육학과'), (137284,'국어교육과'), (137286,'수학교육과'), (137287,'영어교육과'),
               (137258,'경영학부'), (137259,'경제금융학부'), (137261,'글로벌경영학과'), (137266,'융합경영학과'),
               (137272,'생활예술학과'), (137274, '스포츠건강관리학과'), (137275,'식품영양학과'), (137279,'의류학과'),
               (137280,'조형예술학과'), (137269,'무용예술학과'), (137278,'음악학부'),
               (137303,'가족복지학과'), (137305,'공간환경학부'), (137306,'공공인재학부'), (137307,'국가안보학과'),
               (137308,'문헌정보학과'), (137312,'역사콘텐츠학과'), (137315,'지적재산권학과'), (137316,'한일문화콘텐츠학과'),
               (137252, '계당교양교육원'),  (137253, '계당교양교육원'), (137254, '계당교양교육원'), (137255, '계당교양교육원')])
                #교선                        #교직                        #교필                       #일선
#2018-1 (2)
#year.append(2018)
#sem.append(1)
colleges.append([ (38877, '게임학과') , (38881,'생명공학과'), (38898,'전기공학과'), (38911,'컴퓨터과학과'), 
               (38917, '화공신소재학과'),(38923,'화학에너지공학과'), (38892, '융합전자공학과'), (38926,'휴먼지능정보공학과'),
               (38875, '교육학과'), (38880,'국어교육과'), (38885,'수학교육과'), (38890,'영어교육과'),
               (38867,'경영학부'), (38870,'경제금융학부'), (38876,'글로벌경영학과'), (38882,'융합경영학과'),
               (38889,'생활예술학과'), (38909, '스포츠건강관리학과'), (38894,'식품영양학과'), (38899,'의류학과'),
               (38919,'조형예술학과'), (38874,'무용예술학과'), (38914,'음악학부'),
               (38878,'가족복지학과'), (38883,'공간환경학부'), (38887,'공공인재학부'), (38891,'국가안보학과'),
               (38896,'문헌정보학과'), (38910,'역사콘텐츠학과'), (38925,'지적재산권학과'), (38930,'한일문화콘텐츠학과'),
               (38865, '계당교양교육원'),  (38864, '계당교양교육원'), (38868, '계당교양교육원'), (38866, '계당교양교육원')])
                #교선                        #교직                        #교필                       #일선
### 2017년도 2학기 categoryId ### 
#융합경영학과 / 융합전자공학과 / 식품영양학과 없음
#year.append(2017)
#sem.append(2)
colleges.append([(38689, '게임학과') , (38698,'생명공학과'), (38708,'전기공학과'), (38727,'컴퓨터과학과'), 
               (38732, '화공신소재학과'),(38737,'화학에너지공학과'), (38743,'휴먼지능정보공학과'),
               (38690, '교육학과'), (38694,'국어교육과'), (38704,'수학교육과'), (38709,'영어교육과'),
               (38688,'경영학부'), (38692,'경제금융학부'), (38697,'글로벌경영학과'),
               (38820,'생활예술학과'), (38833, '스포츠건강관리학과'), (38843,'의류학과'),
               (38851,'조형예술학과'), (38800,'무용예술학과'), (38841,'음악학부'),
               (38791,'가족복지학과'), (38801,'공간환경학부'), (38806,'공공인재학부'), (38811,'국가안보학과'),
               (38816,'문헌정보학과'), (38838,'역사콘텐츠학과'), (38846,'지적재산권학과'), (38848,'한일문화콘텐츠학과'),
               (38670, '계당교양교육원'),  (38668, '계당교양교육원'), (38679, '계당교양교육원'), (38680, '계당교양교육원') ])
### 2017년도 1학기 categoryId ### 
#융합경영학과 / 융합전자공학과 / 식품영양학과 없음
#year.append(2017)
#sem.append(1)
colleges.append([ (38505, '게임학과') , (38515,'생명공학과'), (38525,'전기공학과'), (38550,'컴퓨터과학과'), 
               (38555, '화공신소재학과'),(38560,'화학에너지공학과'), (38565,'휴먼지능정보공학과'),
               (38508, '교육학과'), (38514,'국어교육과'), (38523,'수학교육과'), (38528,'영어교육과'),
               (38501,'경영학부'), (38506,'경제금융학부'), (38512,'글로벌경영학과'),
               (38534,'생활예술학과'), (38547, '스포츠건강관리학과'), (38566,'의류학과'),
               (38587,'조형예술학과'), (38518,'무용예술학과'), (38561,'음악학부'),
               (38544,'가족복지학과'), (38549,'공간환경학부'), (38553,'공공인재학부'), (38558,'국가안보학과'),
               (38564,'문헌정보학과'), (38588,'역사콘텐츠학과'), (38606,'지적재산권학과'), (38611,'한일문화콘텐츠학과'),
               (38497, '계당교양교육원'),  (38495, '계당교양교육원'), (38498, '계당교양교육원'), (38496, '계당교양교육원') ])
### 2016년도 2학기 categoryId ###
#융합경영학과 / 융합전자공학과 / 식품영양학과 / 전기공학과 / 휴먼지능정보공학과/공간환경학부 / 국가안보학과 / 지적재산권학과  없음
#year.append(2016)
#sem.append(2)
colleges.append([(38340, '게임학과') , (38385,'생명공학과'), (38359,'컴퓨터과학과'), 
               (38419, '화공신소재학과'),(38424,'화학에너지공학과'),
               (38351, '교육학과'), (38355,'국어교육과'), (38365,'수학교육과'), (38371,'영어교육과'),
               (38345,'경영학부'), (38356,'경제금융학부'), (38350,'글로벌경영학과'),
               (38367,'생활예술학과'), (38394, '스포츠건강관리학과'), (38414,'의류학과'),
               (38403,'조형예술학과'), (38357,'무용예술학과'), (38392,'음악학부'),
               (38370,'가족복지학과'), (38379,'공공인재학부'),
               (38384,'문헌정보학과'), (38410,'역사콘텐츠학과'), (38425,'한일문화콘텐츠학과'),
               (38331, '계당교양교육원'),  (38330, '계당교양교육원'), (38337, '계당교양교육원'), (38339, '계당교양교육원') ])
### 2016년도 1학기 categoryId ###
#융합경영학과 / 융합전자공학과 / 식품영양학과 / 전기공학과 / 휴먼지능정보공학과 / 공간환경학부 / 국가안보학과 / 지적재산권학과  없음
#year.append(2016)
#sem.append(1)
colleges.append([(38195, '게임학과') , (38235,'생명공학과'), (38216,'컴퓨터과학과'), 
               (38261, '화공신소재학과'),(38266,'화학에너지공학과'),
               (38203, '교육학과'), (38208,'국어교육과'), (38218,'수학교육과'), (38223,'영어교육과'),
               (38199,'경영학부'), (38209,'경제금융학부'), (38204,'글로벌경영학과'),
               (38254,'생활예술학과'), (38270, '스포츠건강관리학과'), (38256,'의류학과'),
               (38229,'조형예술학과'), (38206,'무용예술학과'), (38219,'음악학부'),
               (38226,'가족복지학과'), (38230,'공공인재학부'),
               (38236,'문헌정보학과'), (38279,'역사콘텐츠학과'), (38260,'한일문화콘텐츠학과'),
               (38184, '계당교양교육원'),  (38189, '계당교양교육원'), (38193, '계당교양교육원'), (38192, '계당교양교육원') ])
### 2015년도 2학기 categoryId ###
#융합경영학과 / 융합전자공학과 / 식품영양학과 / 전기공학과 / 휴먼지능정보공학과 / 공간환경학부 / 국가안보학과 / 지적재산권학과 / 화공신소재학과  없음
#year.append(2015)
#sem.append(2)
colleges.append([(38010, '게임학과') , (38072,'생명공학과'), (38029,'컴퓨터과학과'), 
               (38105,'화학에너지공학과'),
               (38048, '교육학과'), (38053, '국어교육과'), (38063,'수학교육과'), (38068,'영어교육과'),
               (38018,'경영학부'), (38028,'경제금융학부'), (38023,'글로벌경영학과'),
               (38031,'생활예술학과'), (38081, '스포츠건강관리학과'), (38100,'의류학과'),
               (38051,'조형예술학과'), (38021,'무용예술학과'), (38087,'음악학부'),
               (38060,'가족복지학과'), (38070,'공공인재학부'),
               (38075,'문헌정보학과'), (38089,'역사콘텐츠학과'), (38104,'한일문화콘텐츠학과'),
               (38001, '계당교양교육원'),  (38000, '계당교양교육원'), (38005, '계당교양교육원'), (38011, '계당교양교육원') ])
### 2015년도 1학기 categoryId ###
#융합경영학과 / 융합전자공학과 / 식품영양학과 / 전기공학과 / 휴먼지능정보공학과 / 공간환경학부 / 국가안보학과 / 지적재산권학과 / 화공신소재학과  없음
#year.append(2015)
#sem.append(1)
colleges.append([(37943, '게임학과') , (37871,'생명공학과'), (37958,'컴퓨터과학과'), 
               (37877,'화학에너지공학과'),
               (37863, '교육학과'), (37868, '국어교육과'), (37853,'수학교육과'), (37858,'영어교육과'),
               (37952,'경영학부'), (37962,'경제금융학부'), (37957,'글로벌경영학과'),
               (38015,'생활예술학과'), (37891, '스포츠건강관리학과'), (37906,'의류학과'),
               (38041,'조형예술학과'), (37990,'무용예술학과'), (37999,'음악학부'),
               (37899,'가족복지학과'), (37855,'공공인재학부'),
               (37860,'문헌정보학과'), (37869,'역사콘텐츠학과'), (37884,'한일문화콘텐츠학과'),
               (37856, '계당교양교육원'),  (37980, '계당교양교육원'), (37857, '계당교양교육원'), (37986, '계당교양교육원') ])
### 2014년도 2학기 categoryid ###
#융합경영학과 / 융합전자공학과 / 식품영양학과 / 전기공학과 / 휴먼지능정보공학과 / 공간환경학부 / 국가안보학과 / 공공인재학부/ 한일문화콘텐츠학과/ 화공신소재학과 /글로벌경영학과/음악학부 없음
#year.append(2014)
#sem.append(2)
colleges.append([(37734, '게임학과') , (37767,'생명공학과'), (37748,'컴퓨터과학과'), 
               (37812,'화학에너지공학과'),
               (37722, '교육학과'), (37727, '국어교육과'), (37737,'수학교육과'), (37742,'영어교육과'),
               (37716,'경영학부'), (37725,'경제금융학부'),
               (37770,'생활예술학과'), (37782, '스포츠건강관리학과'), (37812,'의류학과'),
               (37793,'조형예술학과'), (37764,'무용예술학과'), (37999,'음악학부'),
               (37740,'가족복지학과'), (37773, '지적재산권학과'), 
               (37745,'문헌정보학과'), (37758,'역사콘텐츠학과'),
               (37705, '계당교양교육원'),  (37706, '계당교양교육원'), (37712, '계당교양교육원'), (37831, '계당교양교육원')])

major_list = []
lecture_list = []
professor_list = []

## 로그인할 유저정보를 넣어줍시다. (모두 문자열입니다)
LOGIN_INFO = {
    'userid': '아이디',
    'password': '비밀번호'
}

LOGIN_INFO = {**LOGIN_INFO}
#print(LOGIN_INFO)
with requests.Session() as s:    
    login_req = s.post('https://everytime.kr/user/login', data=LOGIN_INFO)
    print(login_req.status_code)
    if login_req.status_code != 200:
        raise Exception('LOGIN ERROR !')
    index = 0
    for college in colleges:
        for cid in college:
            sn = 0
            while (True):
                lectime = s.get('https://everytime.kr/find/timetable/subject/list?categoryId='+str(cid[0])+'&campusId=25&year='+str(year[index])+'&semester='+str(sem[index])+'&limitNum=50&startNum='+str(sn))
                #print(jagae.text)

                e = ET.fromstring(lectime.text)
                if(not e):
                    break
                for subj in e.iter('subject'):
                    major_list.append(cid[1])
                    lecture_list.append(subj.attrib['name'])
                    professor_list.append(subj.attrib['professor'])
                sn += 50
        index+=1

data = []

#비효율적
for i in range(0, len(major_list)):
	data.append([])
	data[i].append(major_list[i])
	data[i].append(lecture_list[i])
	data[i].append(professor_list[i])

for a in data:
	#print(a[0], a[1], a[2])
	try:
		sp = smu_professor.objects.get(major=a[0],professor=a[2])
		lecture_time(lecture=a[1], professor=sp).save()
	except Exception as e:
		#print(e)
		pass
print("--- %s seconds ---" % (time.time() - start_time))
