[개발이야기#036] 내가 해보고 싶은 것 - 자동 보팅 프로그램 스케쥴러 프로그램 [postingcuration]
[개발이야기#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()
코드의 목적은 특정 시간에 스케줄된 작업을 실행하고, 스팀잇 계정 관련 스크립트를 매 시간 실행하는 것입니다. 이 코드를 이해하기 쉽게 정리해 보겠습니다.
주요 기능
매 시간 실행되는 작업:
collect_steem_postings.py
: 특정 사용자의 글을 수집하는 스크립트.auto_voting_user_account2.py
: 특정 사용자에게 투표하는 스크립트.
정해진 시간에 실행되는 작업:
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)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.