본문 바로가기

IT/NAS

[자작NAS] 10. Tvheadend에 EPG 적용하기

반응형

Tvheadend에 EPG를 통해 각 채널의 프로그램 정보를 적용할 수 있습니다.

EPG는 Electronic Program Guide의 약자로 TV 프로그램 정보를 담고 있습니다.

보통 XML 형태로 작성해서 Tvheadend에 적용합니다.

아래 링크의 분께서 제공한 파일로 EPG를 적용하는 방법입니다.

https://github.com/sungpyohong/epg2xml

EPG 정보를 XML 형태로 작성하기 위한 코드가 포함되어 있습니다.

계속 버전 갱신이 이루어지고 있는 것으로 보입니다.

먼저 압축을 해제하고 Channel.jsonepg2xml.py 파일을 복사합니다.

사용하지 않는 채널의 경우 Channels.json 파일을 열어서 Enabled로 0으로 처리할 수 있습니다.

컨테이너 생성시 연결한 ~/tvheadend/config에 위치시키면 컨테이너에서 바로 확인이 가능합니다.

cp /mnt/tvheadend/Channel.json ~/tvheadend/config/Channel.json
cp /mnt/tvheadend/epg2xml.py ~/tvheadend/config/epg2xml.py

Tvheadend 웹페이지로 연결합니다.

Configuration > Channel / EPG > EPG Grabber Modules 메뉴로 이동합니다.

상단의 External: XMLTV를 선택한 이후에 Enabled를 클릭하고 Save로 내용을 저장합니다.

Enabled를 체크하면 녹색으로 색상이 변경됩니다.

XMLTV의 Path에 있는 /config/epggrab/xmltv.sock는 따로 적어놔야 합니다.

하단에 있는 나머지 녹색들은 Enabled 체크로 꺼도 상관없습니다.

이제 Cron에 등록해서 사용하기 위해서 쉘스크립트를 하나 작성합니다.

sudo nano ~/tvheadend/config/epg2xml

다음과 같은 내용을 작성합니다.

#!/bin/bash
EPG2XML=/config/epg2xml.py
IPTV=SK
LIMIT=2
XMLTVSOCK=/config/epggrab/xmltv.sock
 
if [ -x $EPG2XML ]; then
    if [ -S $XMLTVSOCK ]; then
        python $EPG2XML -l $LIMIT -i $IPTV -s $XMLTVSOCK > /dev/null 2>&1
    fi
fi

위 파일은 아래 파일을 다운로드 받아서 사용하면 됩니다.

epg2xml

IPTV에는 사용하는 업체를 적어주고 LIMIT에는 EPG 정보를 가져올 최대 날짜를 입력하면 됩니다.

다운로드 파일 역시 컨테이너의 /config 디렉토리로 이동시킵니다.

cp /mnt/tvheadend/epg2xml ~/tvheadend/config/

XMLSOCK에는 위에서 XMLTV를 활성화시킬 때 확인한 Path를 입력하면 됩니다.

이제 도커 컨테이너에 연결해서 몇 가지 작업을 진행합니다.

sudo docker exec -it tvheadend bash

/config 하위에 복사한 파일이 모두 있으면 정상적으로 진행한 것입니다.

파이썬 패키지 설치를 위해서 아래 순서대로 호출해서 pip를 설치합니다.

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

사용에 필요한 패키지를 설치합니다.

pip install beautifulsoup4
pip install lxml
pip install requests

모든 패키지가 정상적으로 설치되면 다음과 같은 형태로 정보가 출력됩니다.

이제 파이썬(epg2xml.py) 파일에 실행 권한을 추가합니다.

chmod +x /config/epg2xml.py

쉘 스크립트(epg2xml) 파일은 /etc/cron.daily 디렉토리로 복사해서 일 단위로 자동실행되도록 합니다.

그리고 실행 권한을 추가해서 정상적으로 실행될 수 있게 합니다.

cp /config/epg2xml /etc/cron.daily/
chmod +x /etc/cron.daily/epg2xml

자동으로 실행되기 전에 먼저 데이터를 갱신하기 위해서 아래와 같이 입력합니다.

/etc/cron.daily/epg2xml

약간의 시간이 소요되며 앞으로 EPG 데이터 3일 분량이 하루마다 받아집니다.

받아진 EPG 정보는 웹페이지에서 확인이 가능합니다.

Configuration > Channel / EPG / EPG Grabber Channels 메뉴로 이동합니다.

좌측 상단의 Electronic Program Guide로 이동해서 TV 편성표 정보를 확인합니다.

TV 편성표까지 정상적으로 표시되면 성공적으로 적용이 완료됩니다.


※ Electronic Program Guide에 TV 편성표 정보가 표시되지 않는 문제 수정

Electronic Program Guide 탭에 간혹 TV 편성표 정보가 표시되지 않는 문제가 있습니다.

업데이트되는 데이터 양이 많으면 편성표 정보가 표시되지 않는 것으로 보입니다.

해당 문제를 해결하기 위해 먼저 도커 컨테이너로 진입합니다.

sudo docker exec -it tvheadend bash

/config/epggrab/xmltv/channels/ 디렉토리로 이동합니다.

cd /config/epggrab/xmltv/channels/

해당 폴더에 특이한 이름의 파일들이 많이 생성되어 있는데 전부 삭제합니다.

rm -rf /config/epggrab/xmltv/channels/*

파일을 전부 삭제하고 위의 EPG 등록 절차를 다시 진행하면 됩니다.

Electronic Program Guide에서 TV 편성표가 정상적으로 표시되면 됩니다.

반응형