취미생활

[리눅스] Youtube mp3 다운로드 자동화 스크립트 본문

컴퓨터/메이커 일지

[리눅스] Youtube mp3 다운로드 자동화 스크립트

달다달아 2021. 9. 7. 02:48
[pi@NAS]$ sudo apt-get install youtube-dl

깃허브 주소

 

GitHub - DJmong/youtube-dl_mp3_script: youtube-dl command option is too long, and I need to make a url list file to download aut

youtube-dl command option is too long, and I need to make a url list file to download automation - GitHub - DJmong/youtube-dl_mp3_script: youtube-dl command option is too long, and I need to make a...

github.com

 

중국 출장 중에 노래 들으면서 코딩하는데

 

유튜브가 계속 끊겨서 빡쳐서 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 파일은 초기화된다.

다운로드가 완료된 뒤, list.txt 파일은 초기화된다.

 

9. 파일 확인

파일은 자동화 스크립트의 dir 변수에 지정된 경로로 저장된다. 참고로 FILENAME에서 mp3 옵션은 빼는게 좋을듯하다. 어차피 mp3로 이름이 붙는다.

 

10. 만들고 난 후기

 솔직히 삘 꽂혀서 짧은 시간동안 만든 자동화 스크립트인데, 상당히 쓸모있어서 좋았다. 간만에 github 업데이트도 하고 참 좋은 시간이었지만, 뒤돌아보니 시간 낭비란 느낌이 강하게 든다. 애초에 지금 저게 필요한 기능도 아닐 뿐더러 youtube-dl 모듈에 mp3 옵션을 넣어 자동으로 다운로드할 수 있을 뿐인 스크립트라서 나중에 이력서에 넣을 수도 없을 듯......

 그래도 이 스크립트 덕분에 FTP 서버에서 youtube를 통해 mp3 음악을 엄청나게 많이 다운로드 했다. 이런 방식으로 다운로드 받는 점 중에서도 좋았던 점이 있는데, 바로 다운로드 속도가 상당히 빠르다는 점이다.  youtube 다운로드 웹을 통해 다운로드 받을 경우 상당히 오래 걸릴 뿐더러 악성코드에 노출될 위험도 있지만, 이 자동화 스크립트를 통해 다운로드 하면 빠르고 안전해서 좋았다.

 

간만에 쓸만한 걸 만들어서 기분 좋지만

 

뭐랄까 잉여로운 스크립트인듯..

 

다음번엔 유튜브 영상을 다운로드할 수 있는 스크립트로 업데이트를 해봐야할 듯 하다.

Comments