프로그래밍

해커톤(4) - youtube 자막 추출 및 python파일 java에서 실행

d 0_0 b 2023. 8. 23. 17:22

youtube 자막 추출을 해보자

 

 

 

 

일단 처음 단순하게 생각했던 방법은 웹 스크래핑 하듯이 유튜브 자막을 크롤링 하는 것 이었다.

 

이전에 웹 스크래핑 관련해서 클론코딩을 했던 경험이 있어서

그와 유사하게 진행을 하면 자막 추출이 가능하지 않을까? 생각했다 

 

 

 

 

 

 

기본적으로 python 을 사용하고 라이브러리중에

많이 사용하는 beautifulsoup을 사용하여 스크래핑을 해보았다.

( 유튜브 기본 기능중에 '스크랩트 표시' 기능이 있어서 이 기능을 사용하면 시간대별로 자막 확인가능!)

 

 

 

 

 

 

하지만 역시 안됐다!

 

기본적으로 동적 데이터이기도 하고

기본자막 생성이 안되는 영상들의 경우도 따로 생각해줘야해서..

혹시 자막 생성에 딜레이가 있나 ? 해서 딜레이 함수를 걸어줘도 응답이 안나오더라

 

 

 

 

 

그래서 다른 방법을 강구하던중 

 

YouTubeTranscriptApi를 사용하여 자막 추출을 한 글이 있어

이 방법을 시도해보기로 하였다.

 

 

 

 


 

YouTubeTranscriptApi

from youtube_transcript_api import YouTubeTranscriptApi

#videokey ex) https://www.youtube.com/watch?v=TfVYO9oSH7w&t=293s 의 TfVYO9oSH7w&t=293s 부분
transcript=YouTubeTranscriptApi.get_transcript(f"{videokey}" , languages=['ko','ko'])

일단 코드는 매우 간단하다.

languages 부분은 한국어로 맞춰놓은 모습이고

실행 역시 매우 깔끔하게 되었다.

 

해당 코드로 결과를 돌려보면 알겠지만 자막 말고도 다른 정보들이 추출되기 때문에

자막만 추출하고 싶다면

subtitle = ""
for i in transcript:
	subtitle += i['text']

이어서 이 정도만 추가해주도록 하자!

 

 

 

생각보다 간단하게 해결!

 

(모르겠다고 질문할때는 꼭 구글링 8페이지까지 해보기...)

 

 


 

처음 자막 추출을 위해 알아봤을때 java script 나 python정도만 방법이 나와있어서

어쩔 수 없이 python으로 실행을 했다.

 

어찌어찌 자막 추출은 성공했는데 이걸 java 파일에서 실행시켜야 하다보니

이게 가능한가?? 하는 걱정이 이제서야 들었고

이 방법 역시 찾아야 했다..

 

 

코드가 어렵지도 않고 이 역시 생각보다 간단하게 해결해서 했다!

일단 시간이 좀 부족해서 

 

 

해당 방법은 코드를 참고해주세요!

 

 

(깃헙주소)