본문 바로가기

기록저장소

KBS 라디오 녹음 - livestreamer / eyeD3

배경 설명

양파의 음악정원

양파의 팬으로서 양파의 음악정원(KBS Happy FM / 12:00 ~ 14:00)을 라이브로 듣고싶었지만, 사정상 불가능하여 종종 다시듣기로 아쉬움을 달래왔지만, 뭔가 음악없는 음악정원은 너무 밋밋해서 아쉬움이 많았었다. 그러던중 문득 실시간 방송을 녹음해서 들을 수 있지 않을까 하여 찾아보니, 역시나 방법은 있었다.

 

 

준비물

Linux OS 

  - 현재 Ubuntu OS를 NAS용으로 설치해서 활용중임. 다른 Linux 배포판도 상관은 없음.

  - livestreamer / eyeD3 설치 필요

Jenkins

  - Docker에 Jenkins설치해서 사용중인데, crontab으로 해도 상관없음

Google Drive

  - 녹음된 파일 저장 후 Google Drive로 자동 복사하면 폰에서도 편하게 재생 가능

 

 

설정 방법

 

1. Jenkins에서 Project 추가 후 매일 오후 12시에 스크립트 시작하도록 설정

Jenkins에서 매일 한국시간 오후 12시에 녹음 시작하도록 설정

 

2. 최종 스크립트

#!/bin/bash

# timezone을 한국시간대로해서 현재 시간 
export TZ=Asia/Seoul

dt=`date '+%Y_%m%d'`
dt2=`date '+%Y/%m/%d'`

# 파일명  설정
filename=YPMG_${dt}.mp3

# KBS 사이트에서 해당 방송 정보 가져오기
link=$(curl -s "http://onair.kbs.co.kr/?sname=onair&stype=live&ch_code=22&ch_type=radioList#close-chat" | grep service_url | tail -1 | cut -d \" -f16 | cut -d \\ -f1)


rm -f ${filename}.mp3

# livestreamer로 120분간 녹음
timeout -s SIGINT 120m livestreamer ${link} best -o ${filename}

# mp4 meta 정보 수정
eyeD3 --add-image /opt/KBS_YangPa_Music_Garden/YangPa_MusicGarden_Album_art.png:FRONT_COVER --artist "YangPa" --album "KBS Radio" --title "YangPa's Music Garden - ${dt2}" ${filename}

# 임시 폴더에서 Linux 머신 내의 최종 저장 경로로 복사
mv ${filename} /opt/KBS_YangPa_Music_Garden/

# Google Drive mount해둔 곳으로도 복사해둠.
cp /opt/KBS_YangPa_Music_Garden/${filename} /opt/GoogleDrive/KBS_YangPa_Music_Garden

 

3. MP3 파일 album art 이미지.

YangPa_MusicGarden_Album_art.png
0.33MB

 

 

기타

Google Drive에 올라간 mp3 파일 폰에서 바로 재생하는 방법

=> (아이폰 기준) 여러가지 앱 확인해 봤는데, EverMusic이 그나마 무료중에 바로 Google Drive 접근해서 재생 가능했음.

    https://www.everappz.com/evermusic

 

 

추가로

예전에 열심히 듣던 굿모닝 팝스도 새로운 마음으로 다시 시작해 볼까하여 녹음 설정해서 저장중인데, 먼길오던 4월호 책은 중간에 사라지고, 5월호는 우체국 사정으로 배송 불가하다 하여 배송이 안정화 될때까지 기다리는 중.. ebook이라도 있으면 좋으련만 안타깝네요.

 

참고 사이트

https://youngest-programming.tistory.com/149

=> KBS 사이트 파싱 참고

 

https://www.omgubuntu.co.uk/2017/04/mount-google-drive-ocamlfuse-linux

=> Google Drive 아주 간단히 mount하는법

'기록저장소' 카테고리의 다른 글

KBS 라디오 녹음 - livestreamer / eyeD3  (6) 2020.04.20
  • ㅎㅎ 2020.11.16 14:59

    kbs 클래식fm 녹음하고 싶어서 검색하다가 들어왔습니다. 하실 수 있는 능력이 부럽네요.

  • Songbird 2020.12.15 11:07

    이 링크 아직도 유효한가요?

    $(curl -s "http://onair.kbs.co.kr/?sname=onair&stype=live&ch_code=22&ch_type=radioList#close-chat" | grep service_url | tail -1 | cut -d \" -f16 | cut -d \\ -f1)

    제가 어제 해 보았는데, 5초 정도 재생이 되다가 에러가 나고 끊어지던데요.

    • 윤기62 2020.12.16 10:25 신고

      제가 얼마전 집 이사하고 아직 서버 세팅을 못하고 있기도 하고, 양파가 음악정원에서 하차하고 더 이상 녹화할 이유가 사라져서 더 녹화를 안하고 있었습니다만, 5초 재생이 됐다면 맞을꺼예요.

      대충 원리를 설명드리면, curl 명령으로 실행하면 링크가 나오는데, 링크를 저장하보면 아래와 같은 내용의 파일입니다.

      #EXTM3U
      #EXT-X-VERSION:3
      #EXT-X-TARGETDURATION:8
      #EXT-X-MEDIA-SEQUENCE:11336072
      #EXTINF:4.011,
      2radio_192_1_11336072.aac?m=1563518440
      #EXTINF:4.011,
      2radio_192_1_11336073.aac?m=1563518440
      #EXTINF:4.011,
      2radio_192_1_11336074.aac?m=1563518440
      #EXTINF:4.011,
      2radio_192_1_11336075.aac?m=1563518440


      이게 실시간이다보니, 전체 파일을 다운받는게 아니라, 계속 11336072, 11336073, 11336074, 11336075,,,, 처럼 작은 파일로 조각난 파일을 계속 이어서 받아주는 것이구요. 이걸 livestreamer 프로그램에서 처리를 해주고 있습니다.

      다만, livestreamer는 무한히 stream을 다운받기 때문에 timeout 명령으로 120m 동안만 실행하도록 했습니다.

      도움이 되었길 바라며^^

  • Songbird 2020.12.17 09:34

    아, 그렇군요. 사실 livestreamer가 잘 안되길래 mplayer로 재생을 해본거였는데, 5초 정도 밖에 재생이 안되는거였습니다. 비슷한 방법으로 MBC 라디오는 계속 재생이 잘 되었거든요. KBS 라디오의 경우는 링크를 업데이트하면서 계속해서 재생하는 방식이 되어야 하는거 같군요.
    livestreamer를 제대로 설치해서 다시 해봐야겠습니다. 정보 고맙습니다.

  • GMP 2021.06.10 16:08

    굿모닝팝스를 녹음하려고 올려주신 글을 토대로 URL 추출까지는 하였습니다.
    URL 접속시 2fm_192_1.m3u8 파일을 다운받았는데 아래와 같은 내용이 담겨 있었습니다.
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:8
    #EXT-X-MEDIA-SEQUENCE:15521526
    #EXTINF:4.011,
    2fm_192_1_15521526.aac?m=1563518242
    #EXTINF:4.011,
    2fm_192_1_15521527.aac?m=1563518242
    #EXTINF:4.011,
    2fm_192_1_15521528.aac?m=1563518242
    #EXTINF:4.011,
    2fm_192_1_15521529.aac?m=1563518242

    윈도우용 livestreamer 을 이용하여 다운받아보려했지만 에러가 나네요.
    error: No plugin can handle URL: https://2fm.gscdn.kbs.co.kr/2fm_192_1.m3u8?Expires=1623480979
    'Policy' is not recognized as an internal or external command,
    operable program or batch file.
    'Signature' is not recognized as an internal or external command,
    operable program or batch file.
    'Key-Pair-Id' is not recognized as an internal or external command,
    operable program or batch file.

    추가로 작업을 하거나 필요한 것이 더 있어야 할까요? livestreamer 외에는 저장을 할 수 있는 방법이 없을까요?
    몇 번을 시도해보다 답을 찾을 수 없어 염치 불고하고 문의드립니다.

    • 윤기62 2021.06.16 15:43 신고

      제가 윈도우용 livestreamer는 잘 몰라서 답변드릴께 없네요.
      (저도 그냥 Google검색해서 해보니 되더라.. 수준이라.. )

      윈도우에서 하시려면, Virtual Box나 Docker기반으로 Linux설치해서 해보라고 말씀드리고 싶은데, 경험이 없으면 이것도 쉽지 않을 수 있을꺼 같네요.

      마음 같아선 제가 녹음해서 공유드리면 좋은데, 제 Gen8머신이 이사 후 부팅 불가상태입니다. 복구할 여유가 없어서 방치중이라 ㅠㅠ