Tvheadend EPG 적용하기.
2016.12.31 00:12
Tvheadend EPG 적용하기.

Tvheadend를 이용해 IPTV를 시청한다면 필히 하는 작업이 EPG적용입니다.

 

전 Tvheadend EPG적용하는 방법을 몇일동안 헤매다 겨우 설정을 성공했고 복습차원에서 다시 설정을 하면서 이 글을 작성해 둡니다.

 

EPG적용방법은 http://3jini.tistory.com/68 글을 참고했으며 진행과정에서 글과는 살짝 다른 부분들이 있어 내 환경에 맞게 글 작성을 해 둡니다.

 

EPG적용을 하기전에 Tvheadend에 채널등록이 되어 있어야 합니다.

 

 

 

Tvheadend EPG 적용하기.

 

EPG적용을 위해 외부 프로그램이 필요한데 'epg2xml'이 필요합니다. 이 파일은 클리앙 'wonipapa'님께서 올려주신 'epg2xml 1.0.8'파일을 다운받아 사용하시면 됩니다.

 

 

위 링크에서 직접 다운로드 하셔서 압축을 풀어 주세요. 파일 압축을 풀어보면 3개의 파일이 나오는데 Channel.json, epg2xml.py파일을 NAS에 올려주시면 됩니다.

 

'WinSCP'를 실행하세요.(참고 글: WinSCP 다운로드, 헤놀로지(XPEnology) 접속 방법. - DSM 5.x 버전)

 

 WinSCP를 이용해서 자신의 나스에 접속을 해서 'volume1'로 이동하세요.

 

volume1 안에서 빈공간에 마우스 우클릭 -> 새로 만들기 -> 디렉터리를 선택 하세요.

 

'pvr'을 입력하고 '확인'을 클릭 하세요.(Tvheadend에 채널 등록하기. 에서 pvr폴더를 만드셨다면 그냥 사용하세요.)

 

파일을 올려두고 NAS화면으로 이동하셔서 '패키지 센터'를 열어 주세요.

 

'Python3, Python Module'를 설치해 주세요. 패키지 센터가 열리면 'Python'검색을 하셔도 되고 왼쪽 '모두'를 클릭해서 나오는 항목에서 직접 설치하셔도 됩니다.

 

Python 설치가 되었다면 WinSCP화면으로 이동하세요. WinSCP를 닫았다면 다시 실행하시면 됩니다.

 

WinSCP를 실행해서 단축키 'Ctrl+T'또는 상단 '터미널 열기'아이콘을 클릭 하세요.

 

터미널 창이 열리면 명령어 입력 칸에 명령어를 넣고 '실행'을 클릭하면 입력한 명령어를 실행 합니다.

 

저는 리눅스 운영체제(NAS)의 사용이 처음이기에 모든 과정을 이미지로 남겨둡니다.(나중에 할때 안헷갈리게....)

 

'easy_install beautifulsoup'을 입력하고 엔터를 클릭 합니다.

 

'easy_install lxml'을 입력하고 엔터를 클릭 합니다.

 

'wget https://bootstrap.pypa.io/get-pip.py'을 입력하고 '실행'을 클릭하면 위 화면같이 에러창이 뜨는데 '확인'을 클릭하고 닫아주세요.

 

위 에러때문에 안되는줄알고 엄청난 고생을 했는데 상관없었답니다.

 

'python get-pip.py'을 입력하고 엔터를 클릭 하세요.

 

'pip install BeautifulSoup4'를 입력하고 엔터를 클릭 하세요.

 

'pip install lxml'를 입력하고 엔터를 클릭 하세요.

 

이 글을 시작할때 'epg2xml 1.0.8'파일을 다운로드해서 압축을 풀어 volume1/pvr폴더에 올려둔 파일들을 실행 권한을 주어야 합니다.

 

명령어 입력창에 아래순서대로 입력 하세요.

 

1. cd /volume1/pvr 엔터.
2. chmod -x epg2xml.py 엔터.
3. chmod 755 Channel.json 엔터.

 

/volume1/pvr로 경로이동을 해서 2,3번 파일에 실행권한을 주었습니다.

 

위 과정까지 하면 EPG를 자신의 Tvheadend에 받아올수 있게 준비는 끝났습니다. 이제 EPG를 받아 보겠습니다.

 

NAS에 Tvheadend EPG정보 불러오기.

 

명령어 입력칸에 '/usr/bin/python /volume1/pvr/epg2xml.py -i SK -s /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock'를 입력하고 엔터를 눌러주세요.

 

/usr/bin/python /volume1/pvr/epg2xml.py -i SK -s /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock

명령어중 SK는 자신이 시청하는 IPTV브랜드를 입력하시면 됩니다.(KT, LG)

 

 

명령어를 입력했는데 위 오류창이 뜬다면 당황하지 마시고 나스에 설치된 'Tvheadend'화면으로 접속하세요.

 

Configuration -> Channel / EPG -> EPG Grabber Modules항목으로 이동해서 왼쪽에 나오는 목록중 'Extemal: XMLTV'를 선택하고 오른쪽 화면에서 체크 박스에 체크를 하고 'Save'를 클릭 하세요.

 

다시 WinSCP 터미널화면에서 /usr/bin/python /volume1/pvr/epg2xml.py -i SK -s /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock를 입력하시면 됩니다.

명령어중 SK는 자신이 시청하는 IPTV브랜드를 입력하시면 됩니다.(KT, LG)

 

EPG정보를 받아오는데 상당한 시간이 걸려 위 화면이 무조건 뜨는데 그냥 두시면 됩니다. 위 창이 사라지면 정보 받기가 끝난겁니다. (이런식으로 몇번을 작업해도 문제는 없었습니다.)

 

이제 EPG정보를 제대로 불러온다는것을 확인했으니 Tvheadend에 적용을 위해 소스를 수정해서 정리를 해 보겠습니다.

 

/volume1/pvr 폴더에 들어있는 'epg2xml.py'파일을 텍스트편집기를 이용해서 열어 주세요. (우클릭 ->편집 ->Notepad)

 

편집기로 열어 24번째 줄, 26번째 줄을 아래처럼 수정하시면 됩니다.

 

26번줄 경로를 ' /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock '로 바꿔주면 다음부터 EPG데이터 생성시 짧은 주소 사용이 가능합니다.

 

위처럼 수정했다면 저장후 터미널창에 '/usr/bin/python /volume1/pvr/epg2xml.py -i SK -s'를 입력하고 엔터를 눌러주세요. 명령어중 SK는 자신이 시청하는 IPTV브랜드를 입력하시면 됩니다.(KT, LG)

 

호스트가 15초 이상.... 창이 사라질때까지 그냥두시면 됩니다. 다른 에러메세지가 없다면 정상적으로 줄인 줄소를 인식하는거랍니다.

 

이제 나스에서 EPG데이터를 자동으로 갱신할수있게 '작업스케줄러'에 등록만 하면 됩니다.

 

 

제어판 -> 작업스케줄러를 열어서 '생성 -> 사용자 정의 스크립트'를 선택 하세요.

 

일반 탭 작업항목에 적절한 이름을 적어주시고 '사용자 정의 스크립트'에 아래 코드를 넣어 주세요.

 

python /volume1/pvr/epg2xml.py -i SK -s

명령어중 SK는 자신이 시청하는 IPTV브랜드를 입력하시면 됩니다.(KT, LG) 

 

스케줄 항목은 매일로 두시면 됩니다. 확인을 클릭하시면 마무리 됩니다.

 

이제 Tvheadend에 접속을 하면 위 이미지처럼 EPG데이터가 불러져 있는것을 확인할수 있습니다. 만약 위 화면이 안나온다면 나스를 재부팅해서 확인하시면 됩니다.

 

저는 재부팅해야 위 목록이 보이고 Kodi에서도 제대로 보여지더군요.

 

Kodi에서 EPG데이터를 이용한 편성표를 보는 화면 입니다.

 

Tvheadend EPG 설정시 알아두면 좋은 정보.

 

NAS에 Tvheadend EPG정보 불러오기. 항목에서 사용되는 경로가 다를수 있습니다.

 

/usr/bin/python /volume1/pvr/epg2xml.py -i SK -s /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock

 

위 경로중 tvheadend-testing설치된 버전에 따라 이름이 다를수 있습니다. 경로 확인은 Configuration -> Channel / EPG -> EPG Grabber Modules항목에서 확인이 가능합니다.

 

Path 란의 주소가 정확한 경로이니 참고 하세요.

 

-ash: 경로: not found라는 오류메세지는 경로명이 잘못되면 나오는 메세지 입니다.

 

경로가 정확하다면 시작하는 부분에 /를 넣거나 빼서 실행하시면 오류가 안납니다.

 

제가 EPG설정을 하면서 헤메던 부분들을 좀더 쉽게 정리해 봤습니다.

 

글 시작하면서 언급했지만 EPG설정은 http://3jini.tistory.com/68글을 참고했는데 정말 잘 쓰신 글 입니다. 많은 분들께서도 이 글을 참고해서 EPG설정에 성공하셨다는 글도 많습니다.(클리앙 게시판)

 

다만 사용자마다 나스환경이 다르다보니 발생하는 문제도 조금씩은 다른데 제 경우 이런쪽이 완전 초보여서 진심 힘들었네요. ^^

 

처음에 -ash: 경로: not found라는 오류를 만나서 포기하고 ... 그러다 다시 도전하고.... 일주일 넘게 EPG설정에 메달려 있었네요.

 

지금은 http://3jini.tistory.com/68글 덕분에 아주 잘 사용하고 있습니다. 이 글로나마 HappyChild님께 감사 드립니다.

저작자 표시 비영리 변경 금지
신고

, , , , , , , , , , , , , , ,

  1. Blog Icon
    웅이둥이

    자세한 설명 덕분에 큰 무리없이 마무리 했는데요.
    특별한 오류 없이 마무리 잘 되었는데, Tvheadend쪽에 EPG정보가 나오질 않네요..
    리부팅도 여러 번 해봤습니다만... 좀 더 점검해 봐야 할 부분이 있을까요?

  2. 에러없이 진행이 되었다면 큰 문제 없어 보입니다.

    Kodi를 이용하신다면 실행해서 설정 -> PVR & Live TV -> 일반 -> 채널 그룹을 백엔드와 동기화 켜져 있는지 확인해 보세요.

    Tvheadend에는 안보여도 TV를 보여주는 프로그램에서 먼저 보일때도 있더군요.

  3. Blog Icon
    bpm84

    잘정리해 주셔서 한번에 성공했습니다 감사드립니다^-^

  4. 잘 되셨다니 다행입니다.

    제 기기에 맞게 작성된 글이라(보관하는 의미) 다른분이 적용했을때 잘 될지 의문이 갔었는데...

    댓글 감사합니다.^^

  5. Blog Icon
    hiro

    정말 감사합니다. 나스 초보인데 주말 내내 헤메다가
    덕분에 성공했습니다. 와 ~~
    다시한번 감사드립니다. ^^ 너무 기쁘네요 ㅎㅎ

  6. 저역시 완전 초보라 많은 시간을 EPG설정에 쏟은듯 합니다. ^^;

    잘 사용하세요.^^

  7. Blog Icon
    bittle

    정말 잘 정리해 주셔서 감사합니다.

    근데 제가 이것저것 해보다가 python이 꼬여서 완전히 엉망이 됐네요...

    다시 공장초기화라는 무리수를 둘 예정입니다.

    초기화시 EPG 적용하려면 python만 깔아주면 되는지요. 다른 패키지는 적용 안 해도 되겠죠?

  8. 저두 진짜 초기화 많이 했네요. ^^;
    DSM 5.2-5967 Update 2(5.2버전은 동일) 이 글대로 하면 잘 되더군요.

    6.0은 다른지 모르겠습니다.^^

  9. Blog Icon
    bittle

    다시 초기화하고 지침대로 하니 일단 적용은 되는 거 같습니다.

    현재 진행중이라...(최종 결과 성공했습니다..ㅎㅎㅎ)

    근데 winscp 보다는 putty를 이용하면 타이핑하는 수고는 있어도 중단메시지 같은 쫄깃함(?)은 안 즐겨도 되더군요....

    근데 SSH 서비스를 중단 시켜도 스케줄러에서 실행하는데는 문제가 없겠죠?

    저도 워낙 이 분야에 초보라...가슴이 철렁철렁 하네요.

    암튼 도움 너무 많이 됐습니다. 이 글은 평생 잘 간직해 주시길...

    감사합니다.

  10. 잘 적용하셨다니 다행 입니다.

    winscp는 처음으로 하는 작업이라 기타 다른프로그램 선택권이 없었답니다.^^

    SSH를 중지시켜도 상관없습니다. 다만 쓸때마다 켜야하는 불편함이 있으니 포트번호를 자신만이 아는(저는3자리수 지정)숫자로 바꿔버리면 켜 두셔도 상관없답니다.

    댓글 감사합니다.^^

  11. Blog Icon
    lowther

    덕분에 포기했던 epg를 적용했습니다.

    똑같이 적용했던것 같은데 님 설명대로 다시 천천히 따라하니 한번에 적용이 되었습니다.

    무엇이 잘 못된것일까? 하는 의문은 아직도 미스테리 입니다. 한 부분이라도 틀렸었겠지요.

    이렇게 친절하고 자세히 알려주시니 다시한번 고맙다는 말을 전하고 싶습니다.

    저 같은 초보들은 적용을 한번 해보고 싶지만 엄두도 안나고 하다가 잘못되면 어쩌지? 하는 의구심 때문에 시작을 망설이게 되지요.

    천천히 꼼꼼히 적용하시면 분명히 됩니다.

    다시한번 수고에 감사드립니다.

  12. 저역시 epg설정을 10번 넘게 한거 같네요. 그중 6~7번은 실패 했습니다.

    그만큼 사용자 환경에 따른 문제 발생확율이 높았다고 봅니다.

    그래서 글 작성을 세세히 해 두었습니다. 나중에 제가 다시 할때 꼬이는 부분이 없길 바라면서요.^^

    잘 사용하시구요. 댓글 감사합니다.^^

  13. Blog Icon
    Julian

    덕분에 한동안 고생했던 EPG설정 한번에 해결했습니다.
    한가지 덧붙이자면 등록해놓은 스케줄러가 동작을 하지 않아 애먹었는데 이곳저곳 돌아다니며 얻은 정보로 해결했습니다.
    epg2xml.py파일을 열어보면 첫줄에 #!/usr/bin/env python => #!/usr/bin python 변경하고
    스케줄러 사용자정의 스크립트에 /volume1/pvr/epg2xml.py -i LG -s 만 적어주니 잘 돌아가네요

  14. 잘되신다니 다행입니다.
    좋은 정보까지 알려주시고..

    스케줄러 작동안하시는 분은 좋은 참고가 되겠습니다.

    방문, 댓글 감사합니다.^^

  15. Blog Icon
    mydidrod

    순서대로 잘 갔는데.. 마지막에 에디터로 24번째 26번째 줄 고치고 나서 실행하니
    아래와 같은 메시지가 뜨네요..T.T

    volume1$ /usr/bin/python /volume1/pvr/epg2xml.py -i SK -s
    File "/volume1/pvr/epg2xml.py", line 119
    hour = int(cell.text.strip().strip('??))

  16. 오타가 있는지 확인해보세요.
    그리고 /volume1/@appstore/tvheadend-testing/var/epggrab/xmltv.sock주소가 실제 사용하는 주소인지 확인이 필요할듯 합니다.

    Configuration -> Channel / EPG -> EPG Grabber Modules항목 아래 Path주소를 넣어주시면 되거든요.

    한번 확인해 보세요. 설치된 버전에 따라 주소(폴더명)이 다를수 있습니다.