취미생활
[리눅스] Youtube mp3 다운로드 자동화 스크립트 본문
[pi@NAS]$ sudo apt-get install youtube-dl
깃허브 주소
중국 출장 중에 노래 들으면서 코딩하는데
유튜브가 계속 끊겨서 빡쳐서 FTP 서버에 노래를 다운받기로 했다.
다운로드는 youtube-dl 명령어로 진행하며, 해당 스크립트는 youtube-dl 명령어에 옵션을 자동으로 넣는 스크립트다.
사용 OS : Ubuntu (아마 Fedora 계열도 지원할듯?)
사용 언어 : Shell Script
사용 모듈 : youtube-dl3
제작 기간 : 3시간?
사용법은 간단하다.
1. youtube-dl 다운로드
$sudo apt-get install youtube-dl
2. youtube-dl 업데이트
$youtube-dl --update
우분투 서버에 등록된 youtube-dl은 버전이 상당히 오래되어 설치한 뒤 곧바로 업데이트를 해주어야 사용할 수 있다. 뺴먹지 말 것.
3. 스크립트 다운로드
$wget https://github.com/DJmong/youtube-dl_mp3_script/archive/refs/heads/main.zip
해당 글에선 wget 명령어를 통해 linux 서버에서 바로 사용할 수 있도록 해두었지만, 다른 방법을 통해 linux 서버로 파일을 옮겨도 상관 없다. 옮기기만 하면 된다.
4. 압축 풀기
$unzip main.zip
wget 명령어를 통해 파일을 다운로드 하면 main.zip 파일이 생성된다. unzip 명령어를 통해 main.zip 파일의 압축을 해제하면 나오는 디렉토리 안에 자동화 스크립트가 있다.
5. 파일 설명
압축을 해제한 뒤 나오는 파일은 설명이 적힌 README.md 파일과 list.txt, youtube_mp3_down.sh 파일이 있다.
list.txt 파일은 yotube_mp3_down.sh 스크립트가 참조하여 URL을 가져오는 파일이다. 해당 파일에 URL과 저장할 파일 이름을 지정하여 다운로드 하려는 영상과 이름을 지정할 수 있다. URL, FILENAME 구분자로는 쉼표(,)를 사용한다.
#!/bin/bash
list=list.txt
dir=$HOME
log=log.txt
retry="Y"
echo "youtue_mp3 donwloader ver. 0.1"
if [ ! -e $list ]; then
echo "$list is not exist."
exit 1
fi
if [ -e $log ]; then
rm $log
fi
cat $list | while read line
do
if [ -z "$line" ]; then
echo "list is empty!"
continue
elif [[ "$line" == "#"* ]]; then
echo "$line" >> ".$list"
continue
fi
url=${line%%,*}
name=${line#*,}
echo -n "url :$url"
echo " name :$name"
if [ -z "$name" ]; then
youtube-dl -x --audio-format mp3 --audio-quality 0 $url
else
youtube-dl -x --output "$mp3/$name.mp3" --audio-format mp3 --audio-quality 0 $url
fi
# make pass/fail log to $log
if [ 0 -eq $? ]; then
echo "$name download success" >> $log
else
echo "$name is not downloaded. (url : $url)" >> $log
if [ $retry -eq "Y" ]; then
echo "$url" >> .$list
fi
fi
done
# remove list
rm $list
# update list
if [ -e .$list ]; then
mv .$list $list
else
touch $list
fi
youtube_mp3_down.sh 파일은 youtube-dl 모듈에서 mp3 다운로드 옵션과 파일 이름, 저장 장소를 자동으로 지정해주는 자동화 스크립트다.
파일 내부에서 youtube-dl 명령어에 입력하는 옵션 값을 수정하여 다운로드 옵션을 변경할 수 있지만, 해당 자동화 스크립트의 목적은 어디까지나 FTP 서버에서 MP3 파일을 다운로드 하기 위한 목적이므로 추가적인 옵션 세분화와 기능 모듈화는 진행하지 않았다.
6. list.txt 파일 수정
list.txt 파일을 쉼표(,) 구분자로 다운로드 할 Youtube 영상의 URL, FILENAME을 구분하여 입력한 뒤 저장한다.
7. 저장 디렉토리 설정
youtube_mp3_down.sh 스크립트 내부의 dir 옵션을 수정하여 저장할 디렉토리를 설정해준다.
8. 스크립트 실행
$./youtube_mp3_down.sh
자동화 스크립트를 실행하여 유튜브 다운로드를 시작한다. 다운로드가 완료된 뒤, list.txt 파일은 초기화된다.
9. 파일 확인
파일은 자동화 스크립트의 dir 변수에 지정된 경로로 저장된다. 참고로 FILENAME에서 mp3 옵션은 빼는게 좋을듯하다. 어차피 mp3로 이름이 붙는다.
10. 만들고 난 후기
솔직히 삘 꽂혀서 짧은 시간동안 만든 자동화 스크립트인데, 상당히 쓸모있어서 좋았다. 간만에 github 업데이트도 하고 참 좋은 시간이었지만, 뒤돌아보니 시간 낭비란 느낌이 강하게 든다. 애초에 지금 저게 필요한 기능도 아닐 뿐더러 youtube-dl 모듈에 mp3 옵션을 넣어 자동으로 다운로드할 수 있을 뿐인 스크립트라서 나중에 이력서에 넣을 수도 없을 듯......
그래도 이 스크립트 덕분에 FTP 서버에서 youtube를 통해 mp3 음악을 엄청나게 많이 다운로드 했다. 이런 방식으로 다운로드 받는 점 중에서도 좋았던 점이 있는데, 바로 다운로드 속도가 상당히 빠르다는 점이다. youtube 다운로드 웹을 통해 다운로드 받을 경우 상당히 오래 걸릴 뿐더러 악성코드에 노출될 위험도 있지만, 이 자동화 스크립트를 통해 다운로드 하면 빠르고 안전해서 좋았다.
간만에 쓸만한 걸 만들어서 기분 좋지만
뭐랄까 잉여로운 스크립트인듯..
다음번엔 유튜브 영상을 다운로드할 수 있는 스크립트로 업데이트를 해봐야할 듯 하다.