이번 강의에서는 Selenium을 사용하여 FastAPI 서버에서 저작권청 사이트에 음악을 자동으로 등록하는 기능을 구현합니다. 이 과정은 Selenium을 사용해 저작권청 사이트에 자동으로 접근하고 필요한 정보를 입력하여 저작권 등록을 완료하는 기능을 포함합니다.
Selenium 설치
pip install selenium웹 드라이버 설치
Selenium을 통해 저작권청 사이트에 접속하고 필요한 정보를 입력하여 저작권 등록을 수행하는 코드를 작성합니다.
Selenium으로 저작권청 사이트 접근
Selenium을 이용하여 저작권청 사이트에 접속하고, 저작권 등록 양식을 자동으로 입력하는 코드를 작성합니다.
예제 코드:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
def register_copyright(music_url, title, artist):
# Chrome WebDriver 실행
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
try:
# 저작권청 사이트로 이동
driver.get("https://www.copyright-office-url.com")
# 사이트 로딩 대기
time.sleep(2)
# 로그인 (필요한 경우)
driver.find_element(By.ID, "username").send_keys("your_username")
driver.find_element(By.ID, "password").send_keys("your_password")
driver.find_element(By.ID, "loginButton").click()
time.sleep(2)
# 저작권 등록 페이지로 이동
driver.find_element(By.LINK_TEXT, "Register New Work").click()
time.sleep(2)
# 제목 입력
driver.find_element(By.ID, "titleField").send_keys(title)
# 아티스트 입력
driver.find_element(By.ID, "artistField").send_keys(artist)
# 음악 파일 URL 입력
driver.find_element(By.ID, "fileUrlField").send_keys(music_url)
# 제출
driver.find_element(By.ID, "submitRegistration").click()
# 제출 후 처리 대기
time.sleep(2)
print("Registration completed")
finally:
driver.quit()
FastAPI 서버와 Selenium 통합
register_copyright 함수를 FastAPI 엔드포인트로 통합하여, 특정 키워드의 음악 파일이 생성되고 나면 자동으로 저작권 등록을 수행하도록 설정합니다.status가 "generated"인 항목에 대해 저작권 등록을 진행하고, 완료 후 status를 "registered"로 업데이트합니다.from fastapi import FastAPI
from firebase_admin import firestore
app = FastAPI()
db = firestore.client()
@app.get("/register-copyright")
async def register_copyrights():
keywords_ref = db.collection("keywords").where("status", "==", "generated").stream()
for doc in keywords_ref:
data = doc.to_dict()
music_url = data["fileUrl"]
title = data["keyword"]
artist = "Your Artist Name" # 혹은 Firestore에서 가져온 아티스트 이름
# 저작권 등록 실행
register_copyright(music_url, title, artist)
# Firestore 상태 업데이트
db.collection("keywords").document(doc.id).update({
"status": "registered"
})
return {"message": "All generated files registered successfully"}
자동화 코드 실행 테스트
/register-copyright 엔드포인트를 호출하여 저작권 등록 프로세스가 제대로 작동하는지 확인합니다.status가 "registered"로 업데이트되어 Flutter 앱에서 등록 상태를 실시간으로 확인할 수 있습니다.status가 "generated"인 음악 파일에 대해 저작권 등록을 완료하고, status를 "registered"로 업데이트하는 기능을 구현했습니다.다음 강의에서는 Flutter에서 저작권 등록 상태 관리 및 사용자 알림 기능을 추가하여, 사용자가 저작권 등록 상태를 실시간으로 확인할 수 있도록 구현하겠습니다.