ETOOS, Selenium, Flask, AWS 으로 일 안하기- 3

재현·2021년 10월 13일
1

ETOOS

목록 보기
4/6
post-thumbnail

왜 웹사이트를 만들어야하나

Google Docs API 의 .insert_inline_image method
를 이용해 저장된 문제 사진을 구글 docs 에 자동으로 삽입하는 기능을 추가하려고 했다.

local file 경로로 변수 지정시 아래와 같은 경고문이 뜨면서 작동을 멈춘다.

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://docs.googleapis.com/v1/documents/1lqxaQvncxOIOONhIEHNbbDJnMS2Xt2swCxSiHRz0zJ4:batchUpdate?alt=json returned "Invalid requests[0].insertInlineImage: The URL should start with http:// or https://.". Details: "Invalid requests[0].insertInlineImage: The URL should start with http:// or https://.">

URL 은 http:// 또는 https:// URL 로 시작되어야 한다. 즉, 통신할 수 있어야 한다는 의미로써
파일이 URL이 부여된 Web 의 Server DB 에 저장 되어있어야 함을 도출해냈다.

이렇게 Crawling 에서 끝날 것 같던 프로젝트는 웹 사이트 • 서버 구축 으로 오게 됐다.

Project Process

구조

다운받은 문제를 AWS에 업로드 후 Flask 로 만든 Web 과 연동

AWS 선택 이유

pythonanywhere / AWS(Amazone Web Service)
둘 사이에 고민을 했다.

결론적으로 AWS 를 선택한 이유는 용량 문제였다.

pythonanywhere 호스팅할 수 있는 용량이 512 mb 로 제한이 있는 반면
AWS 는 1년 무료(free Tier, 부분 유료 사용시 과금)에 더 큰 시스템을
제공해주기에 이용해보기로 했다.

FLASK 선택 이유

Django 와 Flask 둘 중에 고민을 했다.
Django 를 썼던 경험 중
빨리빨리 테스트 버전을 만들고 작동하는지 봐야하는데
모델을 만들고 불러오는 과정이 나한테는 버겁게 느껴져서
일단 Flask 를 써보기로 했다.

추후 선택 이유 보강 예정

따라서

AWS 서버 구축 -> Web 연동 -> DB 생성 및 업로드 -> AWS, DB 연동 -> Web Server 에 문제 파일 정리
-> Google docs API 를 이용한 시험지 작성

위 순으로 진행될 예정.

블로그 글 작성은 프로젝트 위주로 적었었는데
앞으로는 개념 정리도 올려야겠다!

추가된 동작


중복 문제 제거
이전 글에서 개선이 필요한 사항에 포함된 동작

CODE

    def removeDuplicatedQuestion(edit_var_input_day) :

        kor_path = f"/Applications/mampstack-8.0.3-1/apache2/htdocs/jay/Git/GIT/Python/Ultimate-Python/Etoos/국어/{edit_var_input_day}"
        math_path = f"/Applications/mampstack-8.0.3-1/apache2/htdocs/jay/Git/GIT/Python/Ultimate-Python/Etoos/수학/{edit_var_input_day}"
        # 과목 별 path 지정

        kor_file_list = os.listdir(kor_path)
        math_file_list = os.listdir(math_path)
        # 지정 된 path 에 위치한 파일들을 list 로 모아서 저장

        kor_file_list.sort()
        math_file_list.sort()
        # list 로 저장된 파일들을 이름 순으로 정렬
        # 왜? os.listdir 시 무규칙적으로 정렬

        kor_file_size_list = []
        math_file_size_list = []
        # filesize 를 담을 배열 생성

        for list in range(len(kor_file_list)) :

            kor_file_size = os.path.getsize(f"{kor_path}/{kor_file_list[list]}")
            # 국어/선택한 날짜 폴더 내 파일 사이즈 확인
            #kor_file_list[list] : 언매 1번 문제 ...

            kor_file_size_list.append(kor_file_size)
            # size_list 에 file_size 추가

        for list in range( len(math_file_list) ) :

            math_file_size = os.path.getsize(f"{math_path}/{math_file_list[list]}")
        
            math_file_size_list.append(math_file_size)

        start = 1
        # start = 1 and start +=1 로 지정한 이유 : 비교 대상은 비교할 대상보다 1만큼 더 커야하므로

        for i in range(len(kor_file_size_list)-1 ) :
            
            for j in range(start, len(kor_file_size_list) ) :

                if kor_file_size_list[i] == kor_file_size_list[j] :
                    print(kor_file_list[j])

                    try :
                        os.remove(f"{kor_path}/{kor_file_list[j]}")
                        
                    except :
                        pass
                    # 에외처리를 한 이유 : 반복문 구성 중 이미 삭제된 파일을 다시 삭제하려는 현상이 나타나 예외처리함

            start += 1

        start = 1
        # 국어에서 마무리 된 start 는 초기 값 1보다 크므로 재선언

        for i in range(len(math_file_size_list)-1 ) :
            
            for j in range(start, len(math_file_size_list) ) :
                
                if math_file_size_list[i] == math_file_size_list[j] :
                    print(math_file_list[j])

                    try : 
                        os.remove(f"{math_path}/{math_file_list[j]}")

                    except : 
                        pass

            start += 1

        return print("중복 파일 제거 완료")
profile
Do Work As We & Respect 🙆🏾 🙆🏻‍♂️ 🙆🏻‍♀️ 🙆‍♀️

0개의 댓글