[플러터] GPT활용 100% 노코딩 찬송가 재생 어플 제작기
1. 동기
우리 집은 기독교이며 할머니는 그중 신실하신 기독교인이시다.
그래서 명절이나 기일에 찬송가를 재생하는데 항상 유튜브에서 검색하여 재생하곤 했다.
할머니는 유튜브로 재생하는 게 힘드시니 편하게 검색하여 볼 수 있게 하면 어떨까 생각하여 제작을 시작했다.
플러터로 웹뷰를 제외한 기능이 포함된 앱 제작은 처음이지만 무작정 시작했다.
2. 기능설계
1) 최대한 간단하며 목적만 달성해야 했다
2) 할머니가 전화는 입력하여 사용하실 줄 알았고 아이폰의 깔끔한 전화 화면을 활용하자 생각
3) 찬송가 번호를 입력하여 전화 입력 대신 검색버튼을 누르면 해당 찬송가가 재생되는 방식
(찬송가별 유튜브 url을 내장하고 해당 유튜브 재생 형식)
3. 제작
(1) 화면 : 화면은 아이폰 전화 화면을 가져와 기능에 맞춰 수정한 아래 사진을 GPT에 입력하여 기본 코드를 받았고 이후 코드를 확인하고 크기나 기능 등을 부연 설명하여 화면 제작 완료 (100% 복붙)

(2) youtube url : 영상을 제작하기 위하여 찬송가가 재생될 영상의 url이 필요했는데 대략 645개의 url을 하나씩 긁어오는 건 무리라고 판단하여 크롤링으로 수집 (GPT 활용)
pip install selenium
pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import time
def get_playlist_video_links(playlist_url):
# ChromeDriver 자동 설치 및 경로 설정
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# 유튜브 플레이리스트 페이지 열기
driver.get(playlist_url)
# 페이지 로딩 대기 (최대 10초 대기)
time.sleep(5)
# 영상 링크를 담을 딕셔너리
video_links = {}
seen_video_urls = set() # 이미 본 영상 링크를 추적하기 위한 세트
# 영상 링크를 담을 딕셔너리
video_elements = driver.find_elements(By.XPATH, '//*[@id="video-title"]')
# 처음 로드된 영상들 처리
for idx, video_element in enumerate(video_elements):
video_url = video_element.get_attribute('href')
if video_url not in seen_video_urls:
video_links[idx + 1] = video_url
seen_video_urls.add(video_url)
# 스크롤을 내려서 더 많은 영상 로드하기
while True:
# 페이지 끝까지 스크롤
driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.END)
# 스크롤 후 잠시 대기
time.sleep(3)
# 새로운 영상 요소를 찾음
new_video_elements = driver.find_elements(By.XPATH, '//*[@id="video-title"]')
# 새로 추가된 영상 추출
for video_element in new_video_elements:
video_url = video_element.get_attribute('href')
if video_url not in seen_video_urls:
video_links[len(video_links) + 1] = video_url
seen_video_urls.add(video_url)
# 추가 영상이 더 이상 없으면 반복 종료
if len(video_links) >= 633: # 원하는 수만큼
break
driver.quit()
return video_links
# 유튜브 플레이리스트 URL
playlist_url = "https://www.youtube.com/playlist?list=PLezt_LDEZbr0Z0RIWuBrHjbomFqBpRJnY"
# 영상 링크 가져오기
video_links = get_playlist_video_links(playlist_url)
# 결과 출력
for key, value in video_links.items():
print(f'"{key}": "{value}",')
(3) 후기 : 처음으로 기능이 포함된 어플을 제작했고 시간은 2일동안 퇴근하고 만들어 총 6시간정도 소요되었다.
하지만 플러터를 설치부터 했다는것에 시간이 소요되었고 다음에는 더 빠를것으로 예상
그리고 GPT 활용 100% 노코딩으로 제작된 앱이지만 개발자로써 코드의 흐름을 읽을 줄 알고 환경설정 세팅법이나 배포 방법 등 구글 검색 활용 방법을 알기 때문에 보다 쉽게 했다고 생각하지만 모르는 일반인도 충분히 가능하다고 생각
결론으로 단순 사용 용도와 유튜브 저작권으로 테스트 앱으로 빌드 설치하여 배포는 하지 않았지만 좋은 기회였고 다음에 더 재밌는 앱을 제작해 보고 싶은 생각이 듦 무엇보다 할머님이 앱을 잘 사용하셔서 매일 사용할 때마다 흐뭇하다.
코드 : https://github.com/gkraud4135/hymn


