저작권 등록 자동화 설정 (Selenium)

CHAN·2024년 11월 3일

FastAPI

목록 보기
5/9

5강: 저작권 등록 자동화 설정 (Selenium)

이번 강의에서는 Selenium을 사용하여 FastAPI 서버에서 저작권청 사이트에 음악을 자동으로 등록하는 기능을 구현합니다. 이 과정은 Selenium을 사용해 저작권청 사이트에 자동으로 접근하고 필요한 정보를 입력하여 저작권 등록을 완료하는 기능을 포함합니다.


1. Selenium 및 드라이버 설정

  1. Selenium 설치

    • Python 환경에서 Selenium 패키지를 설치합니다.
      pip install selenium
  2. 웹 드라이버 설치

    • Selenium을 사용하기 위해 브라우저 드라이버(예: ChromeDriver)가 필요합니다.
    • ChromeDriver를 다운로드하여 설치하고, Python 코드에서 이를 사용할 수 있도록 설정합니다.
    • 드라이버 경로를 환경 변수에 추가하거나 직접 경로를 지정해 주어야 합니다.

2. 저작권 등록 자동화 구현

Selenium을 통해 저작권청 사이트에 접속하고 필요한 정보를 입력하여 저작권 등록을 수행하는 코드를 작성합니다.

  1. 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()
  2. FastAPI 서버와 Selenium 통합

    • register_copyright 함수를 FastAPI 엔드포인트로 통합하여, 특정 키워드의 음악 파일이 생성되고 나면 자동으로 저작권 등록을 수행하도록 설정합니다.
    • FastAPI에서 Firestore 데이터를 확인하여 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"}
  3. 자동화 코드 실행 테스트

    • FastAPI 서버를 실행하고 /register-copyright 엔드포인트를 호출하여 저작권 등록 프로세스가 제대로 작동하는지 확인합니다.
    • 성공적으로 등록이 완료되면 Firestore에 status"registered"로 업데이트되어 Flutter 앱에서 등록 상태를 실시간으로 확인할 수 있습니다.

이번 강의 요약

  • Selenium을 사용해 저작권청 사이트에 자동으로 접근하고 필요한 정보를 입력하여 저작권 등록을 자동화했습니다.
  • FastAPI와 Selenium을 연동하여 Firestore에서 status"generated"인 음악 파일에 대해 저작권 등록을 완료하고, status"registered"로 업데이트하는 기능을 구현했습니다.

다음 강의에서는 Flutter에서 저작권 등록 상태 관리 및 사용자 알림 기능을 추가하여, 사용자가 저작권 등록 상태를 실시간으로 확인할 수 있도록 구현하겠습니다.

profile
프로그래머

0개의 댓글