구형 노트북에 우분투 리눅스를 이용한 TV 스트리밍 서버 구축 - tvheadend EPG 등록 및 설정
지난 시간에 우분투에 tvheadend를 설치하고 스트리밍을 위한 m3u를 이용해 TV채널 등록을 해보았습니다.
이번 시간에는 tvheadend에서 EPG정보를 설정하기 위해 필요한 모듈 설치와 tvheadend에서 EPG정보 가져오고 내부(internal) epg grabber을 이용한 업데이트, 자동 업데이트 주기 설정 등에 대해 알아보겠습니다.
이 부분은 어느 정도 리눅스 시스템에 대한 이해가 필요하지만 필자의 시스템과 비슷한 환경이라면 그냥 따라 하기만 하면 성공(?) 할 수 있도록 간략히 절차만 설명하겠습니다.
TV EPG grabber에 필요한 python(파이썬) 설정 및 모듈 설치하기
먼저 python 셋업 툴을 설치합니다.
$sudo apt-get install python-setuptools
python으로 컴파일 시 필요한 pip 및 여러 라이브러리를 설치합니다.
$sudo apt-get install python-pip python-dev build-essential
$sudo pip install --upgrade pip
$sudo pip install --upgrade virtualenv
epg2xml.py 컴파일 시 필요한 모듈을 설치 합니다.
$sudo pip install beautifulsoup
$sudo pip install beautifulsoup4
$sudo pip install lxml
$sudo pip install requests
epg2xml-master 다운로드
다음의 epg2xml-master 파일을 다운로드 받습니다.
본인의 /home/계정명/에 압축을 풉니다. 우분투에서는 윈도우 탐색기처럼 사용 가능한 파일 매니저가 있으니 폴더 생성, 복사, 압출 풀기 등은 쉽게 할 수 있습니다.
압축된 파일을 /home/mypc/epg2xml-master 라는 폴더에 풀었다고 가정하고 작업하겠습니다.
$cd /home/mypc/epg2xml-master
실행 가능한 권한을 줍니다.
$chmod 775 epg2xml.py
$chmod 775 epg2xml.php
epg2xml.json파일과 tv_grab_file파일 수정하기
epg2xml.json파일을 수정합니다.
$nano epg2xml.json
'MyISP'에는 자신이 사용하는 iptv통신사를 넣어 줍니다. 'MyChannels'에 EPG 정보를 표시할 모든 채널(tgv ID, epg ID)을 입력합니다. 여기에 포함되지 않은 채널은 TV 관련 플레이어(코디 등)에서 EPG정보가 뜨지 않습니다. 'output'은 화면 출력, 즉 d를 넣습니다.
나머지 부분은 그냥 두셔도 되나 소켓을 사용한 외부 XMLTV 사용과 웹서버를 운영 할 것이라면 최종 XML파일이 생성될 경로를 잡아줍니다. 해당 사항이 없으면 그냥 디폴트로 놔둡니다. nano 에디터에서 저장은 'Ctrl + o', 엔터, 'Ctrl + x'로 하면 됩니다.
tv_grab_file파일을 수정합니다.
$nano tv_grab_file
위 흰 블럭 친 부분에 자신의 /home/본인계정/epg2xml-master와 바로 아래 라인에 위와 같이 /usr/bin/python epg2xml.py 즉, 파이썬 경로와 실행할 epg2xml.py소스 파일을 지정해 줍니다.
tv_grab_file을 실행 폴더에 복사하고 권한주기
tv_grab_file을 /usr/bin 폴더로 복사합니다.
$sudo cp tv_grab_file /usr/bin
tv_grab_file에 실행 가능한 권한을 줍니다.
$sudo chmod 755 /usr/bin/tv_grab_file
tvheadend 관리자 모드로 설정하기
tvheadend 관리자 계정으로 로그인 합니다. (예, http://localhost:9981)
/usr/bin/폴더에 tv_grab_file 파일이 제대로 복사되었고 실행 권한을 줬다면 Internal: XMLTV: My custom grabber가 보입니다. 혹시 보이지 않는다면 tvheadend 재 시작해 줍니다.
$sudo service tvheadend restart
위의 그림과 같이 Enabled에 체크한 후 Save를 눌러줍니다.
위와 똑같이 설정할 필요는 없으나 한가한 시간대에 Grabber가 작동하게 설정해 놓았으니 같은 설정을 쓰셔도 됩니다. Internal Grabber는 매일 오전 4시와 12시에 업데이트를 합니다. 아래의 경우는 새벽 2시 4분에 업데이트합니다.
'Bouquets'탭에 자신이 등록한 채널의 네트워크 이름을 확인하고 Enabled에 체크해 줍니다. 저는 네트워크가 두개라 둘다 체크해 주었습니다. 보통은 네트워크 하나를 등록했을 겁니다.
tv_grab_file(internal XTML) 실행하기
다시 콘솔 터미널 돌아와 아래의 작업을 진행합니다.
$sudo /usr/bin/tv_grab_file
위처럼 epg정보가 쭉 내려질 겁니다. 제법 시간이 걸리니 느긋하게 기다립니다.
tvheadend 관리자 모드에서 EPG 정보 확인하기
다시 tvheadend 관리자 모드로 돌아와서 나머지 사항을 확인합니다.
'EPG Grabber Channels'탭에 모듈 항목에 위와 같이 XMLTV: My custom grabber가 활성화 되었는지 확인합니다.
'Channels'탭에도 XMLTV: My custom grabber가 맵핑(mapping) 되는지 확인합니다.
마지막으로 'Electronic Program Guide'탭에서 epg정보가 최종 올라왔는지 확인합니다. 보통 tv_grab_file실행 후 빠르게는 5분이나 10분 후면 위의 정보가 확인됩니다. 많이 늦으면 30분 정도 걸리니 위의 작업 등을 정확하게 진행했다면 여유 있게 기다립니다.
최종 확인은 코디(kodi)에서 등록한 계정으로 접속해 제대로 TV채널과 EPG정보가 올라 올라오는지, 정확하게 매칭되는지 확인합니다.
이상입니다. 다음 포스트는 우분투에 웹 서버(Apache, 아파치)와 PHP를 설치하고 외부에서 접근 가능한 EGP url(주소)를 생성해 보겠습니다.
댓글