유튜브 뉴스 동영상(NBC Nightly News, JTBC 뉴스룸) 자동 다운로드

Updated:

이전 글에서 youtube-dl 프로그램을 사용하여 유튜브 동영상을 본인 컴퓨터에 무료 다운로드하는 방법을 살펴보았습니다. 이번에는 youtube-dl 프로그램을 사용하여 뉴스 프로그램(NBC Nightly News, JTBC 뉴스룸)을 자동으로 다운로드 하는 bash 스크립트를 소개합니다. 스크립트는 youtube-dl을 사용하도록 되어 있으니, youtube-dl은 설치되어 있는 환경이어야 합니다.

1. 스크립트 뜯어보기

스크립트는 github scripts-using-youtube-dl에서 다운로드할 수 있습니다. NBC Nightly News용과 JTBC 뉴스룸용으로 따로 구성되어 있어서 스크립트 파일은 2개입니다.

스크립트를 실행하면, 최신 동영상에서 설정되어 있는 싱크 최대 개수까지 다운로드를 진행합니다. 이미 다운로드 되어 있는 파일은 tmp 폴더로 옮겼다가 싱크 최대 개수에 맞춰서 오래된 파일은 삭제를 진행합니다.

스크립트에서 뉴스의 최신 플레이 리스트 정보를 확인하고 다운로드하는 주요 코드는 아래와 같습니다.

#!/bin/bash
for ID in `$YOUTUBE_DL --dateafter now-1week --match-title $BASE_STRING --max-downloads $MAX_DW $PLAYLIST --get-id `; do
    URL=$BASE_URL$ID
    FILE=`$YOUTUBE_DL --get-filename -o '%(title)s.%(ext)s' $URL`

    if [ -f "$TMP_DIR/$FILE" ]; then
        echo "File [$FILE] exists."
        mv $TMP_DIR/$FILE $TMP_DIR/..
    else
        echo "File [$FILE] does not exists."
        $YOUTUBE_DL -f 'best' -o $DOWN_DIR/'%(title)s.%(ext)s' $URL
    fi
done

위 코드에서 어떻게 최신 뉴스 프로그램 목록을 가져오는지 youtube-dl 실행 옵션을 살펴보겠습니다.

#!/bin/bash
$YOUTUBE_DL --dateafter now-1week --match-title $BASE_STRING --max-downloads $MAX_DW $PLAYLIST --get-id
  • –dateafter now-1week : 지난 일주일 간의 목록만을 가져옵니다.
  • –match-title $BASE_STRING : 리스트의 제목에 $BASE_STRING이 있는 목록만을 가져옵니다.
  • –max-downloads $MAX_DW : 최대로 가져올 동영상 개수입니다. $MAX_DW 값을 변경 가능합니다.
  • $PLAYLIST : 플레이 리스트를 지정합니다. 각 스크립트는 NBC Nightly News, JTBC 뉴스룸 리스트를 담고 있습니다.
  • –get-id : 조건에 맞는 동영상 정보를 id로 가져옵니다.

위 처럼 지정된 플레이 리스트에서 최신 동영상 id 목록을 가져오고, 그 목록을 기반으로 you URL을 만들고, URL을 사용하여 동영상을 다운로드 합니다. youtube-dl 프로그램에서 최신 동영상 정보를 url 목록을 가져올 수 있지만, 동영상 id가 빼기(-) 문자로 시작하는 경우 에러가 발생하기 때문에, id를 가져와서 url로 직접 변환하는 방법을 선택했습니다.

2. NBC Nightly News 자동 다운로드

youtube_nightly_news.sh 스크립트 파일을 사용하는 방법입니다. NBC Nightly News는 하루에 한번 약 20분 정도 분량의 Full 버전 뉴스를 업로드합니다. 그리고, 조각 뉴스도 같이 올라오기 때문에 “Full”으로 match-title 옵션을 지정하였습니다.

NBC Nightly News는 다음과 같은 PLAYLIST url을 사용합니다.

PLAYLIST="https://www.youtube.com/playlist?list=PL0tDb4jw6kPyGy4AIjirldbeP6nxpWGKU"

스크립트를 실행 전에 다운로드를 진행할 경로와 동영상 싱크 최대 개수를 지정해야 합니다.

#Write your download directory.
#DOWN_DIR="/home/myhone/video"
DOWN_DIR=$HOME
...
MAX_DW="3"

설정이 완료되면 해당 스크립트를 실행해봅니다. 별도 옵션은 없습니다. 뉴스는 하루에 한번 업로드 되니, 스크립트 파일을 하루 한번 실행되도록 crontab에 등록하면 자동으로 최신 뉴스를 컴퓨터에 다운로드합니다. crontab 설정은 설치가이드(13) cron 설정하기(예약 작업)를 참고하세요.

3. JTBC 뉴스룸 자동 다운로드

youtube_JTBC_newsroom.sh 스크립트 파일을 사용하는 방법입니다. JTBC 뉴스룸은 하루에 한번 약 40~90분 정도 분량의 뉴스를 업로드합니다.

JTBC 뉴스룸는 다음과 같은 PLAYLIST url을 사용합니다.

PLAYLIST="https://www.youtube.com/playlist?list=PL3Eb1N33oAXhNHGe-ljKHJ5c0gjiZkqDk"

youtube_nightly_news.sh 스크립트와 동일하게 실행 전에 다운로드를 진행할 경로와 동영상 싱크 최대 개수를 지정해야 합니다.

JTBC 뉴스룸도 하루에 한번 업로드 되니, 스크립트 파일을 하루 한번 실행되도록 crontab에 등록하면 자동으로 최신 뉴스를 컴퓨터에 다운로드합니다. crontab 설정은 설치가이드(13) cron 설정하기(예약 작업)를 참고하세요.

해당 스크립트를 참고 삼아, 다른 동영상을 자동 다운로드하는 스크립트를 간단히 제작할 수 있습니다. 스크립트의 PLAYLIST 값을 본인이 원하는 Youtube PLAYLIST로 변경하여 사용해보세요.


더 많은 라즈베리파이 이야기 Pi Guide 보러가기


Leave a Comment