예전에 교회 방송실에서 자막 만드는 일을 했을때 만든 python 프로그램입니다.
설교 내용을 성경 여러군데에서 인용해야할 경우 성경 텍스트를 찾고 메모장에 옮기는
과정이 상당히 반복적이고 실수도 생겨서 자동화 하였습니다.
# subtitles.py
import re
import os
import time
dic1 ={ '창세기' : '창', '출애굽기' : '출', '레위기' : '레', '민수기' : '민',
'신명기' : '신', '여호수아' : '수', '사사기' : '삿', '룻기' : '룻',
'사무엘상' : '삼상', '사무엘하' : '삼하', '열왕기상' : '왕상', '열왕기하' : '왕하',
'역대상' : '대상', '역대하' : '대하', '에스라' : '스', '느헤미야' : '느',
'에스더' : '에', '욥기' : '욥', '시편' : '시', '잠언' : '잠', '전도서' : '전',
'아가' : '아', '이사야' : '사', '예레미야' : '렘', '예레미야애가' : '애',
'에스겔' : '겔', '다니엘' : '단', '호세아' : '호', '요엘' : '욜', '아모스' : '암',
'오바댜': '옵', '요나' : '욘', '미가' : '미', '나훔' : '나', '하박국' : '합',
'스바냐' : '습', '학개' : '학', '스가랴' : '슥', '말라기' : '말',
'마태복음' : '마', '마가복음' : '막','누가복음': '눅', '요한복음' : '요',
'사도행전' : '행', '로마서' : '롬', '고린도전서' : '고전', '고린도후서' : '고후',
'갈라디아서' : '갈', '에베소서' : '엡', '빌립보서' : '빌' , '골로새서' : '골',
'데살로니가전서' : '살전', '데살로니가후서' : '살후', '디모데전서' : '딤전',
'디모데후서' : '딤후', '디도서' : '딛', '빌레몬서' : '몬', '히브리서' : '히',
'야고보서' : '약', '베드로전서' : '벧전', '베드로후서' : '벧후',
'요한일서' : '요일', '요한이서' : '요이', '요한삼서' : '요삼', '유다서' : '유',
'요한계시록' :'계'}
dic2 ={ '창세기' : '1-01창세기', '출애굽기' : '1-02출애굽기', '레위기' : '1-03레위기', '민수기' : '1-04민수기',
'신명기' : '1-05신명기', '여호수아' : '1-06여호수아', '사사기' : '1-07사사기', '룻기' : '1-08룻기',
'사무엘상' : '1-09사무엘상', '사무엘하' : '1-10사무엘하', '열왕기상' : '1-11열왕기상', '열왕기하' : '1-12열왕기하',
'역대상' : '1-13역대상', '역대하' : '1-14역대하', '에스라' : '1-15에스라', '느헤미야' : '1-16느헤미야',
'에스더' : '1-17에스더', '욥기' : '1-18욥기', '시편' : '1-19시편', '잠언' : '1-20잠언', '전도서' : '1-21전도서',
'아가' : '1-22아가', '이사야' : '1-23이사야', '예레미야' : '1-24예레미야', '예레미야애가' : '1-25예레미야애가',
'에스겔' : '1-26에스겔', '다니엘' : '1-27다니엘', '호세아' : '1-28호세아', '요엘' : '1-29요엘', '아모스' : '1-30아모스',
'오바댜': '1-31오바댜', '요나' : '1-32요나', '미가' : '1-33미가', '나훔' : '1-34나훔', '하박국' : '1-35하박국',
'스바냐' : '1-36스바냐', '학개' : '1-37학개', '스가랴' : '1-38스가랴', '말라기' : '1-39말라기',
'마태복음' : '2-01마태복음', '마가복음' : '2-02마가복음','누가복음': '2-03누가복음', '요한복음' : '2-04요한복음',
'사도행전' : '2-05사도행전', '로마서' : '2-06로마서', '고린도전서' : '2-07고린도전서', '고린도후서' : '2-08고린도후서',
'갈라디아서' : '2-09갈라디아서', '에베소서' : '2-10에베소서', '빌립보서' : '2-11빌립보서' , '골로새서' : '2-12골로새서',
'데살로니가전서' : '2-13데살로니가전서', '데살로니가후서' : '2-14데살로니가후서', '디모데전서' : '2-15디모데전서',
'디모데후서' : '2-16디모데후서', '디도서' : '2-17디도서', '빌레몬서' : '2-18빌레몬서', '히브리서' : '2-19히브리서',
'야고보서' : '2-20야고보서', '베드로전서' : '2-21베드로전서', '베드로후서' : '2-22베드로후서',
'요한일서' : '2-23요한일서', '요한이서' : '2-24요한이서', '요한삼서' : '2-25요한삼서', '유다서' : '2-26유다서',
'요한계시록' :'2-27요한계시록'}
os.chdir("C:\\users\\youraddress\\desktop\\성경") # 성경파일 위치
worship = input("\n어떤예배 입니까?(ex 2010_0723_금요철야): ")
os.mkdir("C:\\users\\youraddress\\desktop\\%s" % worship) # 바탕화면에 폴더 생성(ex 2010_0723_금요철야)
count = 0
while True:
flat = 1
while flat:
book_name = input("『찾는 권?(ex 창세기)』: ")
if dic1.get(book_name):
flat = 0
else:
print("해당 성경을 찾을수없습니다(띄어쓰기 X), 다시 입력해주세요\n")
flat = 1
p_p = re.compile("\d+")
page = input("『몇장?(ex 1)』: ")
p_m = p_p.match(page)
page = int(p_m.group())
while flat:
try:
phase = input("『몇절부터 몇절까지?(ex 3 또는 3~7) 』: ")
flat = 0
start_end = phase.split('~')
if len(start_end) == 2:
phase_range = range(int(start_end[0]), int(start_end[1]) + 1)
else:
phase_range = range(int(start_end[0]), int(start_end[0]) + 1)
except IndexError:
print("잘못 입력하셨습니다. 다시 입력해주세요\n")
flat = 1
except ValueError:
print("잘못 입력하셨습니다. 다시 입력해주세요\n")
flat = 1
f1 = open("%s.txt" % dic2[book_name] ,'r')
data = f1.read()
f1.close()
f3 = open("C:\\users\\youraddress\\desktop\\%s\\제목.txt" %(worship) , 'a') # 제목 파일
if len(phase_range) == 1:
if book_name == '시편':
f3.write("%s %d편 %d절" %(book_name, page, phase_range[0]) )
else:
f3.write("%s %d장 %d절" %(book_name, page, phase_range[0]) )
else:
if book_name == '시편':
f3.write("%s %d편 %d-%d절" %(book_name, page, phase_range[0], phase_range[-1]) )
else:
f3.write("%s %d장 %d-%d절" %(book_name, page, phase_range[0], phase_range[-1]) )
if count == 0:
f2 = open("C:\\users\\youraddress\\desktop\\%s\\본문.txt" %(worship) ,'a') # 본문 파일
else:
f2 = open("C:\\users\\youraddress\\desktop\\%s\\인용%d.txt" % (worship, count), 'a') # 인용 파일
l = []
for i in phase_range:
p = re.compile("%s%d:(%d\s)(<.*?>\s)?(.*)" % (dic1[book_name], page, i)) # 문자열 매칭 알고리즘
m = p.finditer(data)
for j in m:
l.append(j.group(1) + j.group(3))
new_data = '\n//\n'.join(l)
f2.write(new_data)
flat = 1
while flat:
try:
flag = int(input("인용구절이 더 있습니까?(1.예, 2.아니오): "))
flat = 0
if flag != 1 and flag != 2:
raise ValueError
except ValueError:
print("잘못 입력하셨습니다. 다시 입력해주세요\n")
flat = 1
if flag == 2:
f2.close()
f3.close()
print("\n바탕화면에 <%s> 폴더가 생성되였습니다.\n" % worship)
time.sleep(3)
break
count += 1
f2.close()
f3.write("\n//\n")
f3.close()
성경.zip
1.21MB
첨부파일에서 성경 파일을 다운로드받은후
위 코드에서 youraddress만 본인 컴퓨터 ID로 고치면 바로 사용이 가능합니다.
사용법은 python을 다운로드한뒤
위 코드가 담긴 파일(subtitle)를 더블 클릭하여 화면에 문구에 따라 원하는 구절을 입력하면 됩니다.
사진으로 보여드리겠습니다.

위 같이 입력하고 나면 바탕화면에 파일이 만들어 집니다.

파일 내용은 입력한 구절들 입니다.

내용은 아래와 같습니다.

감사합니다.
'프로그래밍 > 토이 프로젝트' 카테고리의 다른 글
(딥러닝_AI)yolov5을 이용하여 마스크 실시간 디텍션 프로젝트 (2) | 2023.01.25 |
---|---|
라인 트레이서 프로젝트 (3) | 2023.01.18 |