티스토리 뷰
유튜브에서 좋아하는 음악, 노래를 다운로드하려면 어떻게 할까요? 제일 쉬운 방법은 다운로드 사이트를 이용하면 됩니다. 하지만 크게 3가지 문제가 있습니다.
- 네트워크 트래픽이 많을 경우 다운로드가 아주 느리다.
- 광고가 많다.
- 바이러스 감염 위험이 있다.
예를 들어 볼까요?
임영웅의 '어느 60대 노부부 이야기'를 다운로드 받아 보겠습니다.
url을 복사하고 유튜브 다운로드 사이트에 주소를 입력합니다.
그럼 이렇게 권한 요청 팝업창이 뜨는데 이걸 클릭하면 이 사이트가 내 PC에 무슨 짓을 할지 모르는 거죠.
이제부터 "파이썬을 이용해서 유튜브 음원을 다운로드"하고 "ChatGPT로 파이썬 코딩을 공부"해 보겠습니다.
알고 보면 너무 쉬워서 놀랄 수도 있습니다.
먼저 준비물이 필요합니다.
파이썬 개발을 위해서 주피터 노트북이 없다면 설치해 주세요.
이제 코드를 확인합니다. 코드는 단 9줄입니다.
import os
from pytube import YouTube
url = input("노래를 다운로드받을 유튜브 주소를 입력하세요~\n")
youtube = YouTube(url)
download_file_path = youtube.streams.filter(only_audio=True).first().download()
mp3_file_path = download_file_path.replace('mp4', 'mp3')
os.rename(download_file_path, mp3_file_path)
print(f'MP3 다운로드가 완료되었습니다. = {mp3_file_path}')
이 코드가 잘 이해가 안 된다면 챗지피티에 물어 보면 됩니다.
코드를 입력하고 설명해 달라고 하면 되죠.
그러면 챗지피티가 답변을 합니다.
아래는 전체 챗지피티가 설명해 준 전체 내용입니다. 코드를 이해하기 어려운 분들은 참고하세요.
이 코드는 pytube 라이브러리를 사용하여 유튜브에서 오디오 파일을 다운로드하는 기능을 구현한 예제입니다. 코드를 자세하게 설명해 드리겠습니다.
import 문을 사용하여 필요한 모듈을 가져옵니다.
os: 운영 체제와 상호 작용하기 위한 함수를 제공하는 모듈입니다.
pytube: 유튜브 동영상을 다운로드할 수 있는 파이썬 라이브러리입니다.
url 변수를 사용하여 사용자로부터 유튜브 주소를 입력 받습니다.
input() 함수를 사용하여 프롬프트를 표시하고, 사용자의 입력을 받습니다.
YouTube 클래스의 인스턴스를 생성하여 주어진 유튜브 URL로 초기화합니다.
YouTube(url) 형식으로 유튜브 주소를 전달하여 youtube 객체를 생성합니다.
youtube.streams.filter(only_audio=True).first()를 사용하여 오디오 스트림만 필터링하고, 첫 번째 오디오 스트림을 가져옵니다.
streams 속성을 사용하여 사용 가능한 다양한 스트림을 가져올 수 있습니다.
filter(only_audio=True)를 사용하여 오디오 스트림만 필터링합니다.
first()를 사용하여 첫 번째 오디오 스트림을 선택합니다.
선택한 오디오 스트림의 download() 메서드를 호출하여 파일을 다운로드합니다.
download() 메서드는 파일을 다운로드하고, 다운로드한 파일의 경로를 반환합니다.
download_file_path 변수에 다운로드한 파일의 경로가 저장됩니다.
다운로드한 파일의 확장자를 '.mp3'로 변경하여 새로운 파일 경로를 생성합니다.
replace('mp4', 'mp3')를 사용하여 '.mp4' 확장자를 '.mp3'로 변경합니다.
mp3_file_path 변수에 새로운 파일 경로가 저장됩니다.
os.rename() 함수를 사용하여 다운로드한 파일의 이름을 변경합니다.
os.rename(download_file_path, mp3_file_path)를 사용하여 다운로드한 파일의 이름을 '.mp3'로 변경합니다.
마지막으로, 다운로드가 완료된 메시지와 새로운 MP3 파일의 경로를 출력합니다.
print(f'MP3 다운로드가 완료되었습니다. = {mp3_file_path}')를 사용하여 메시지와 mp3_file_path 변수의 값을 출력합니다.
만일 코드와 설명을 같이 보고 싶다면 '주석을 달아 달라~'고 요청하면 됩니다.
이렇게 하면 코드를 이해하기가 더 쉽겠죠~
이제 파이썬 코드를 주피터 노트북으로 만든 파이썬 커널에 입력합니다.
그리고 실행하면 됩니다. 실행은 Shift key를 누른 상태에서 Enter key키를 누르면 됩니다.
그럼 이렇게 '유튜브 주소'를 입력할 수 있습니다.
그리고 엔터를 치면 다운로드를 합니다.
파이썬으로 유튜브에서 MP3 음원 추출하기~ 정말 쉽지 않나요?
이제 중급입니다.
해당 코드를 함수로 만들 수 있습니다. 함수로 만들어 달라고 요청하면 되겠죠.
그럼 바로 함수로 만들어 줍니다.
혹시 함수가 뭔지 모르거나 자세히 알고 싶다면 또 물어 보면 되겠죠.
다섯 가지 이유를 알려 줬는데 초보자라면 첫 번째만이라도 꼭 기억하시기 바랍니다.
제일 중요하고 실용적이니까요.
코드 재사용!
이게 무슨 말일까요?
다시 물어 보면 됩니다.
"함수로 코드 재사용하는 예제 코드를 만들어 줘~"
재사용성 이제 이해가 되시나요?
그렇다면 이제 download_youtube_audio() 함수에도 적용해 보겠습니다. 원래 코드는 이런 거였죠.
import os
from pytube import YouTube
def download_youtube_audio():
url = input("노래를 다운로드받을 유튜브 주소를 입력하세요~\n")
youtube = YouTube(url)
download_file_path = youtube.streams.filter(only_audio=True).first().download()
mp3_file_path = download_file_path.replace('mp4', 'mp3')
os.rename(download_file_path, mp3_file_path)
print(f'MP3 다운로드가 완료되었습니다. = {mp3_file_path}')
# 함수 호출
download_youtube_audio()
아래처럼 while 문과 합쳐서 응용할 수 있습니다.
이걸 실행하면 어떻게 될까요?
다운받을 유튜브 url을 입력해서 실행이 끝나면 다시 자동으로 사용자 입력을 기다리게 됩니다.
마지막 코딩 팁입니다.
이 코드를 프로답게 다시 고쳐 보겠습니다. 기능별로 분리하는 기법인데 여기서는 "유저 입력"과 "유튜브 다운로드" 기능을 분리해 보겠습니다.
import os
import traceback
from pytube import YouTube
def download_youtube_audio(url):
try:
youtube = YouTube(url)
download_file_path = youtube.streams.filter(only_audio=True).first().download()
mp3_file_path = download_file_path.replace('mp4', 'mp3')
os.rename(download_file_path, mp3_file_path)
return mp3_file_path
except Exception as e:
print(e)
print(traceback.format_exc())
이렇게 최소 기능으로 함수를 작성하면 활용 범위가 더 넓어지죠.
이렇게 쓸 수도 있고
while True:
url = input("노래를 다운로드받을 유튜브 주소를 입력하세요~\n")
mp3_file_path = download_youtube_audio(url)
print(f'MP3 다운로드가 완료되었습니다. = {mp3_file_path}')
또 이렇게 사용할 수도 있죠.
url = 'https://youtu.be/vORDkdgLzEs'
mp3_file_path = download_youtube_audio(url)
print(f'MP3 다운로드가 완료되었습니다. = {mp3_file_path}')
이런 작업을 전문 용어로 '리팩토링'이라고 합니다.
필요하면 리팩토링도 챗지피티에게 직접 물어 보세요^^
오늘은 파이썬으로 유튜브에서 좋아하는 음악, 노래를 다운로드할 수 있는 방법을 알려 드렸습니다. 그리고 ChatGPT로 코드를 해석하고 함수를 만들고, 궁금한 점을 물어보면서 독학할 수 있는 팁도 알려 드렸습니다.
앞으로는 ChatGPT를 사용하는 사람과 그렇지 않은 사람의 문제 해결 능력이 크게 벌어질 것입니다.
ChatGPT를 공부해서 주업, 부업, 투자, 자기 개발 등에 적극적으로 활용해 보시기 바랍니다.
감사합니다.
'파이썬' 카테고리의 다른 글
파이썬 퀀트 투자 - 브로드컴 주가, 배당, 배당률 확인하기 (0) | 2023.03.24 |
---|