Example #1
0
def mkdir():
    dirs = ["반품완료", "취소완료", "발주발송(발송처리일)"]
    comm = commDir
    comm += "결과파일/"
    api.mkdir(comm)
    day = api.getYear() + api.getMonth()
    comm += day + "/"
    api.mkdir(comm)
    day += api.getDay()
    comm += day + "/"
    api.mkdir(comm)

    for d in dirs:
        api.mkdir(comm + d)

    #로그 폴더 생성
    api.mkdir("{}log".format(comm))
    # 로거 설정
    logFileName = "{}/log/{}{}{}.log".format(comm, api.getYear(), api.getMonth(), api.getDay())
    failFileName = "{}/log/{}{}{}_보고파일.csv".format(comm, api.getYear(), api.getMonth(), api.getDay())

    global logger
    logger = api.getLogger(logFileName, "naver_daily_selling")
    global failLog
    failLog = api.failHistory(failFileName, "naver_daily_fail")
    failLog.info("***********재다운로드 필요 항목***********")
Example #2
0
from os import remove
import shutil
import sys
import os
from selenium.webdriver.common.keys import Keys
# 실행 시 cmd 창 맨위에 놓으면 크롤링 시 버튼 인식 안되니 cmd 창 내려놓고 실행해야함
###########################################################################################################################################################################
# 1. RPA에서는 안되는 멀티 프로세싱 기능을 적용해서 이론 상 RPA 보다 해당 PC의 코어수 만큼 병렬처리(동시에 실행)하여 시간 단축 가능                                         
# 2. 처음에는 팝업창을 제거 해줘야만 그 뒤에 있는 화면의 버튼 요소들이 인식 가능한 줄 알았음 -> 여러개 팝업창이 뜰 가능성이 있어서 모든 팝업창에 대해 대기시간을 놓고 인식을
#    대기하는 과정이 필요 했음 -> 개발 중 팝업창을 제거하지 않아도 frame 순서만 변경해주면 팝업창 떠있는 상태로 조작 가능함을 알게됨 -> 시간 단축
# 3. 현재 RPA로 개발된 프로그램보다 코드 길이가 훨씬 짧음 -> 기존에는 홈페이지 변경 시 프로그램마다 변경 필요했으나 추상화를 적용해서 유지보수 시에도 공통 영역의 코드 변경 시 일괄 적용이 가능해짐
# 4. 위 내용을 종합적으로 시간 단축 가능, RPA 라이선스 미사용으로 금액 절감 가능
# 5. 파이썬 적용 시 파이썬을 배워야하고, 관리 측면에서 RPA와 파이썬을 둘 다 관리해야 한다는 단점이 있긴 함
###########################################################################################################################################################################
commDir = "C:/Users/Administrator/Desktop/naver/"
downPath = "{}결과파일/{}{}/{}{}{}/".format(commDir, api.getYear(), api.getMonth(), api.getYear(), api.getMonth(), api.getDay())
errors = []
mypath = os.path.dirname(os.path.realpath(__file__))
logger = None
failLog = None
def mkdir():
    dirs = ["반품완료", "취소완료", "발주발송(발송처리일)"]
    comm = commDir
    comm += "결과파일/"
    api.mkdir(comm)
    day = api.getYear() + api.getMonth()
    comm += day + "/"
    api.mkdir(comm)
    day += api.getDay()
    comm += day + "/"
    api.mkdir(comm)
Example #3
0
def setDownloadPath(pid):
    options = webdriver.ChromeOptions()
    options.add_experimental_option("prefs", {"download.default_directory": r"{}\{}{}\{}{}{}\{}".format(r"C:\Users\Administrator\Desktop\naver\결과파일", api.getYear(), api.getMonth(), api.getYear(), api.getMonth(), api.getDay(), pid)
    })
    return options
Example #4
0
    pool = multiprocessing.Pool(num_cores)

    err = False
    try:
        stores = api.divideWork(
            "{}{}{}".format(naver.nowPath, api.delimeter,
                            naver.data["workFileName"][shop]), num_cores)
    except Exception as e:
        err = True
        naver.adminLog.error("{}: 일감 분리 실패(일감 파일 읽기 불가능)".format(e))

    pool.map(main, stores)
    pool.close()

    line = 0
    day = "{}{}{}".format(api.getYear(), api.getMonth(), api.getDay())
    filename = r"{}_{}_Report.csv".format(day, shop)
    filenames = ["{}".format(filename)]

    filename = r"{}{}log{}{}".format(downPath_win, api.delimeter,
                                     api.delimeter, filename)
    home = "/home/rpa01/rpa_naver_brandmall"
    # Windows면 경로 변경
    if api.delimeter == "\\":
        home = "."
    try:
        os.system('{}/sftp.sh 2> {}/sftp.log {}'.format(home, home, filename))
        naver.adminLog.info("{}파일 정상적으로 sftp전송 완료".format(filename))
    except Exception as e:
        naver.adminLog.error("{}파일 정상적으로 sftp전송 실패 | {}".format(filename, e))
    naver.delay(5)