logo

한국어

사용방법:

1. ./youtube_urls.txt 편집

2. nohup ./download_youtube.sh -f &

#!/bin/bash
############################################################
#
# YouTube 동영상 다운로드 스크립트
#
############################################################

OUTPUT_DIR=/usbmem/youtube
URLS_FILE="./youtube_urls.txt"
DEFAULT_VIDEO_OPTS="--write-auto-sub --sub-lang ko"
DEFAULT_AUDIO_OPTS="--extract-audio --audio-format mp3 --audio-quality 0"
mkdir -p ${OUTPUT_DIR}

display_usage() {
  echo "### 유튜브 다운로더 ###"
  echo
  echo "Usage:"
  echo "$0 -h or --help:  도움말"
  echo "$0 -ug: youtube-dl 패키지 업그레이드"
  echo "$0 -f:  ${URLS_FILE} 파일에서 YouTube 주소를 읽어서 비디오 다운로드"
  echo "$0 -vh {youtube 주소}:  백그라운드에서 비디오 다운로드"
  echo "$0 -vn {youtube 주소}:  포그라운드에서 비디오 다운로드"
  echo "$0 -ah {youtube 주소}:  백그라운드에서 오디오만 다운로드"
  echo "$0 -an {youtube 주소}:  포그라운드에서 오디오만 다운로드"
}

read_file() {
  while read READ_STRING
  do
    STRLEN=`echo -n $READ_STRING | wc -c`
    if [ ${STRLEN=} -gt 20 ]
    then
      echo ${READ_STRING}
      youtube-dl ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" ${READ_STRING}
    fi
  done < ${URLS_FILE}
}

case $1 in
  "-ug") echo "Upgrade Package"
    pip install --upgrade pip
    pip install --upgrade -q youtube-dl
    ;;

  "-f") echo "YouTube URL list fIle: ${URLS_FILE}"
    read_file
    ;;

  "-vh") echo "Youtube download (nohup): $2"
    nohup youtube-dl ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" $2 &
    ;;

  "-vn") echo "Youtube download: $2"
    youtube-dl ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" $2
    ;;

  "-ah") echo "Youtube download audio only (nohup): $2"
    nohup youtube-dl ${DEFAULT_AUDIO_OPTS} ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" $2 &
    ;;

  "-an") echo "Youtube download audio only: $2"
    youtube-dl ${DEFAULT_AUDIO_OPTS} ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" $2
    ;;

  "-h") display_usage
    ;;

  "--help") display_usage
    ;;

  *) echo "Youtube download: $2"
    youtube-dl ${DEFAULT_VIDEO_OPTS} -o "${OUTPUT_DIR}/%(title)s.%(ext)s" $2
    ;;
esac