유튜브 재생목록의 음악을 쉽게 다운 받는 법.
페이지 정보
본문
금요일에 퇴사하고...
잠시 정신줄 좀 잡으려고 github 정리하다보니,
예전에 만들다 만놈이 있었네요;;;;
그래서 어제 그제 좀 달려서 아래와 같은 놈을 만들었습니다.
아직은 허접하지만, (클라는 힘들어요 ㅎ)
그냥저냥 쓸만하게 만들었습니다. (음원을 다운받아서 구글드라이브에 올려서 들어도 좋을 것 같아요 ㅎ)
https://github.com/cookyman74/youtube_music_player
PyTube Player - YouTube MP3 Downloader Player
PyTube Player는 YouTube 플레이리스트를 다운로드하고 MP3 형식으로 재생할 수 있는 간단한 음악 플레이어입니다. 이 프로그램은 Tkinter와 Pygame을 기반으로 한 GUI를 통해 사용하기 쉽고 직관적인 경험을 제공합니다. 또한 로컬 오디오 파일도 추가하여 재생할 수 있습니다.
주요 기능
- YouTube 플레이리스트 다운로드 및 재생: YouTube URL을 입력하여 플레이리스트를 다운로드하고 MP3 파일로 변환하여 재생할 수 있습니다.
- 로컬 파일 추가: 로컬에 저장된 오디오 파일을 추가하여 재생할 수 있습니다.
- 재생 목록 관리: 플레이리스트를 생성하고 파일을 관리할 수 있습니다.
- 앨범 아트 및 오디오 웨이브폼 시각화: 현재 재생 중인 곡의 썸네일을 표시하며, 오디오 웨이브폼을 시각화합니다.
- 프로그레스 바 및 볼륨 조절: 재생 중인 트랙의 진행 상황과 볼륨을 조절할 수 있습니다.
- 메인플레이 및 설정화면
- 앨범 및 플레이리스트 관리화면
로컬 파일 추가 화면
설치 및 실행 방법
필수 라이브러리
프로젝트를 로컬에서 실행하기 위해서는 다음과 같은 Python 라이브러리가 필요합니다.
pip install -r requirements.txt
프로젝트 실행
프로젝트는main.py
파일을 통해 실행할 수 있습니다.
python main.py
EXE 파일로 실행하기 (Windows 사용자)
향후pyinstaller
를 이용해.exe
파일로 변환하여 제공할 예정입니다..exe
파일을 다운로드하면 Python 환경 없이도 쉽게 프로그램을 실행할 수 있습니다.
EXE 파일 다운로드 및 실행
- GitHub 릴리스 페이지에서 최신 버전의.exe파일(dist폴더 내 모든 파일)을 다운로드합니다.
다운로드한 main.exe
파일을 더블 클릭하여 프로그램을 실행합니다.- 프로그램이 자동으로 실행되며, GUI를 통해 음악 파일을 추가하고 재생할 수 있습니다.
유튜브 재생목록 다운받는 법.
(1) 주소줄을 복사
(2) PyTube player의 메뉴에서 "Add Youtube Playlist"를 클릭
(3) 유튜브 playlist 주소를 붙여 넣기 해줍니다.
(4) 비동기적으로 실행되기 때문에 메뉴의 playlist를 클릭해서 보시면 메뉴를 보실 수 있습니다.
(실시간 업데이트는 나중에 개발해두겠습니다;;)
(5) 음원은 아마도 실행한 폴더 아래에 어딘가.. downloaded_audios 폴더에 저장될 것 입니다. ㅎㅎ (setting을 아직 안만들어 놨네요;;)
이상 끝 ;;; 입니다.
궁금하신 사항이 있으시면 제 블로그 또는 다모앙에 댓글 달아주세요. ㅎㅎ
쿠키맨님의 댓글
https://github.com/cookyman74/youtube_music_player/tree/Main/dist
그러면 music_player.db와 thumbnails가 생길 것입니다.
그리고 유튭 재생목록을 넣으면 downloaded_audios 가 생성될 것입니다.
쿠키맨님의 댓글의 댓글
제 맥북이 문제인지 뭔지 모르겠지만,, pyinstaller가 계속 오류나서 빌드를 못하고 있네요;;
암튼 원인 찾으면 올려두겠습니다.
그동안 어쩔 수 없이 파이썬을 설치하여 사용하시면 일단은 됩니다. ^^;
애쉬s님의 댓글
확장자는 webm으로 다운로드 되네요. mp3 다운은 어떻게 해야 하는건지요?
리스트 삭제기능도 있어야 할 것 같습니다.
쿠키맨님의 댓글의 댓글
그리고 다운로드 방식은 yt_dlp에서 webm으로 다운 받아 mp3으로 변환하고 있는데.. 굳이 그럴 필요가 없어서 다음과 같이 변경될 예정입니다. (youtubePlayer.py 소스코드 중에)
def download_and_convert_audio(self, url, title):
"""YouTube 비디오 URL에서 오디오 스트림을 다운로드하고 MP3로 변환 후 경로 반환"""
ydl_opts = {
'format': 'bestaudio/best',
'outtmpl': f'downloaded_audios/{title}.mp3', # 최종적으로 mp3 파일로 저장
'quiet': True,
'postprocessors': [{ # postprocessors를 사용해 MP3로 변환
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192', # 필요에 따라 품질을 조정 가능
}],
}
# YouTube에서 오디오 다운로드 및 MP3로 변환
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
output_path = f'downloaded_audios/{title}.mp3'
return output_path⠀
쿠키맨님의 댓글의 댓글
윈도우 버전은 포함시켜서 배포하려 합니다.
쿠키맨님의 댓글의 댓글
네..재생목록 주소를 따서 넣으시면 앨범으로 관리됩니다. (재생목록 = 앨범)
쿠키맨님의 댓글
warpage님의 댓글
앨범당 곡은 20개가 전부인가요..
재생목록 550개인데 20개만 들어갔어져서요
쿠키맨님의 댓글의 댓글
제한같은 없습니다. 그냥 라이브러리를 가져다 쓴거라...
20개는 아닐꺼 같은데 아마 앱 자체에 문제 아닐까 싶은데 확인해볼께요
애쉬s님의 댓글
다 좋은데, 한가지 더 요청드리면, 파일 이름에 순번 매기는 기능은 혹시 안 될까요?
예를 들면 어떤 앨범을 순차적으로 들어야 되는데, 즉, 1번 트랙부터 순서대로...
하지만, 이 프로그램을 이용하면, 다운로드 폴더에는 그냥 이름 순서대로 정렬되어 버려서...
그리고, 또 현재는 플레이 리스트에 주소 입력하면 바로 다운받기 시작하는데..
그게 아니라, 플레이리스트 입력하면 플레이리스트에 리스트로 나오고, 그 이후에
플레이리스트나 앨범가서 각 리스트마다 변환(다운로드) 머 이런 버튼 있으면 그 때 작동하도록 하면 좋을 것 같습니다.
아, 중지 버튼이 있어도 더 편할 것 같아요..
예를 들면, 셋팅없이 그냥 플레이 리스트 추가했는데.. 막 작업이 되더라구요.
그래서 셋팅가서 음질 변경시키니 그 이후부터 변경된 음질로 작업이..
그 이후에 중지할 수 없어서 강제 프로그램 중지.. 다시 프로그램 실행시키니
중단되었던 작업 하려는 조짐 보여서 플레이리스트 가서 삭제..
머 이랬습니다.
1) 플레이리스트 추가.. 이후 셋팅 다시 한번 확인 후.. 리스트가서 변환시작!
2) 문제 없으면 끝.. 중간에 무언가 잘못되었으면 중지 누르고, 설정 변경 후 다시 변환시작.. 등등..
이러면 더 좋은 프로그램이 될 것 같습니다.
개발자님들 멋집니다. 감사합니다.
레고마스터님의 댓글