[개발이야기#036] 내가 해보고 싶은 것 - 자동 보팅 프로그램 스케쥴러 프로그램 [postingcuration]

in #krlast month

[개발이야기#036] 내가 해보고 싶은 것 - 자동 보팅 프로그램 스케쥴러 프로그램 [postingcuration]

안녕하세요 가야태자 @talkit 입니다.

지난 번 글에서 보팅 관련 앱을 공개 했습니다.

오늘은 앞에서 작성한 프로그램들을 자동으로 수행하는 프로그램을 공개 합니다.

관련글

[개발이야기#028] 내가 해보고 싶은 것 - 자동 보팅 프로그램 SQLite vs DuckDB [postingcuration]

[개발이야기#029] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 및 포스트 테이블 생성하기 [postingcuration]

[개발이야기#031] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 등록 프로그램 작성하기 [postingcuration]

[개발이야기#032] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 게시글 수집기 작성하기 [postingcuration]

[개발이야기#034] 내가 해보고 싶은 것 - 포스팅 큐레이션 글을 자동으로 정리해보자 [postingcuration]

[개발이야기#034] 내가 해보고 싶은 것 - 포스팅 큐레이션 글 목록을 자동 포스팅 하기 [postingcuration]

[개발이야기#035] 내가 해보고 싶은 것 - 자동 보팅 프로그램 하루에 한번 보팅하는 프로그램[postingcuration]

코드 컨셉트

간단합니다. 한시간에 한번씩 작업을 수행 합니다.

그리고, 정해진 시간에 일부 작업을 수행하는 프로그램을 작성 합니다.

소스 코드

import os

import time

  

# 실행할 파일 경로

SELECT_POSTING_SCRIPT = 'python select_postingcuration.py'  # postingcuration 글을 하나의 파일로 정리하기

COLLECT_POSTING_SCRIPT = 'python collect_steem_postings.py' # 스팀잇의 특정 사용자들의 글을 수집하기

VOTING_POSTING_SCRIPT = 'python auto_voting_user_account2.py' # 특정 사용자를 대상으로 Voting 하기

AUTO_POSTING_SCRIPT = 'python auto_posting_postingcuration.py' # postingcuration 글을 하나의 파일로 정리된 내용을 포스팅 하기

  

# 스케줄 시간 설정 (아침 9시)

SCHEDULE_HOUR = 11  # 프스팅 큐레이션 시간

SCHEDULE_HOUR2 = 13  # 프스팅 큐레이션 포스팅 시간

SCHEDULE_MINUTE = 0

  

def run_scheduler():

    while True:

        # 현재 시간 확인

        current_time = time.localtime()

        # collect_postingcuration.py를 매 시간 실행

        os.system(COLLECT_POSTING_SCRIPT)

        print("Finished running collect_postingcuration.py")

        os.system(VOTING_POSTING_SCRIPT)

        print("Finished running auto_voting_user_account2.py")

        # 스케줄 시간에 select_postingcuration.py 실행

        if current_time.tm_hour == SCHEDULE_HOUR :

            print("Running scheduled task for select_postingcuration...")

  

            # select_postingcuration.py 실행

            os.system(SELECT_POSTING_SCRIPT)

            print("Finished running select_postingcuration.py")

  

        # 스케줄 시간에 select_postingcuration.py 실행

        if current_time.tm_hour == SCHEDULE_HOUR2 :

            print("Running scheduled task for auto_posting_postingcuration.py...")

  

            # select_postingcuration.py 실행

            os.system(AUTO_POSTING_SCRIPT)

            print("Finished running auto_posting_postingcuration.py")            

  

        # collect는 매 시간 실행하므로 1시간 대기

        time.sleep(3600)

  

if __name__ == "__main__":

    run_scheduler()

코드의 목적은 특정 시간에 스케줄된 작업을 실행하고, 스팀잇 계정 관련 스크립트를 매 시간 실행하는 것입니다. 이 코드를 이해하기 쉽게 정리해 보겠습니다.

주요 기능

  1. 매 시간 실행되는 작업:

    • collect_steem_postings.py: 특정 사용자의 글을 수집하는 스크립트.
    • auto_voting_user_account2.py: 특정 사용자에게 투표하는 스크립트.
  2. 정해진 시간에 실행되는 작업:

    • select_postingcuration.py: 스팀잇 큐레이션 글을 하나의 파일로 정리하는 스크립트. 아침 11시(SCHEDULE_HOUR)에 실행.
    • auto_posting_postingcuration.py: 정리된 큐레이션 글을 포스팅하는 스크립트. 오후 1시(SCHEDULE_HOUR2)에 실행.

개선 포인트

  • 스크립트를 여러 번 실행할 수 있도록 하되, 매 시간마다 특정 작업을 확실하게 처리하도록 설정.
  • 각 스크립트가 정상적으로 실행되고 있음을 알리는 메시지를 출력.

이 코드를 실행하면 특정 시간에 맞추어 각 스크립트가 자동으로 실행됩니다. 스크립트 실행 후에는 1시간 동안 대기한 후 다음 작업을 시작합니다.

추후 개선 사항

오늘 10분을 더 추가해서 총 32분에게 보팅 해드리는 걸로 수정 했습니다.

보팅 리스트에는 아래와 같이 들어 있습니다.

@talkit
@newiz
@banguri
@dozam
@epitt925
@etainclub
@happycoachmate
@jungjunghoon
@kimyg18
@maikuraki
@parisfoodhunter
@parkname
@peterpa
@powerego
@shrah011
@tsf-leejgn
@yoghurty
@ssglanders
@june0620
@kayap
@goodpost-kr
@syskwl
@anpigon
@jhy2246
@hirue
@dorian-lee
@hdc
@koreaminer
@hodolbak
@kakakk
@devfund-kr
@illluck

위와 같이 계서서 사용자를 추출하는 프로그램에서 원래는 24시간 전으로 되어 있던 보팅 시간을 32시간으로 변경 했습니다.

이건 현재 변경사항이고, 추 후 변동사항은 24시간 안에 32분에게 모두 보팅을 해드리려면 2700초로 대기 시간을 줄여합니다.

그런데, 지금 프로그램에 특정 시간에 돌아가는 프로그램 때문에 스케쥴러를 한 더 짜서 분리할 계획입니다.

수집하고 보팅 하는 프로그램

그리고 특정 시간에 돌아가는 프로그램으로 ^^

프로그램 실행 방법

conda activate steemit

아나콘다 가상 환경 steemit을 활성화 시킵니다.

steem_schedule.py

코드를 위 파일로 저장 합니다.

python steem_schedule.py

위 명령어로 실행 합니다.

이러면 프로그램이 계속 돌면서 안 죽습니다. ^^

도스창이나 리눅스 쉘 창을 닫으면 죽겠지요. ^^

윈도우즈에서는 일단 도스창을 열어 두시면 되구요 백그라운드 실행은 추후에 알아보고 알려드리겟습니다.

리눅스에서는

nohup python steem_schedule.py &

위 명령어로 백그라운드로 실행해 주면 리눅스 컴퓨터가 꺼지기 전까지는 잘 실행 됩니다.

감사합니다.



Posted through the ECblog app (https://blog.etain.club)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.