Giter Club home page Giter Club logo

epg2xml's Introduction

EPG2XML

웹상의 여러 소스를 취합하여 XML 규격의 EPG(Electronic Program Guide)를 만드는 프로그램

  • 2018년 3월 31일 이후로 삭제된 wonipapa/epg2xml을 fork하여 관리하고 있습니다. 기본적인 내용은 기존의 README를 참고하세요.

  • 1.2.7 이후로 python과 php가 동일한 결과물을 보장하지 않습니다. (php 마지막 버전은 1.2.7p1)

  • 1.2.8 이후로 python2.7에 대한 지원은 종료 되었습니다. python2.7 마지막 버전

  • 1.5.2 이후로 v1에 대한 지원은 종료 되었습니다. 새로운 저장소에서 v2로 개발을 이어가겠습니다.

지원 소스 및 각각의 특징

소스 채널 템플릿 프로그램 포스터 요청수 소요시간 정보량 추천
KT ✔️ #channels * #days 😡😡😡 😃😃
LG #channels * #days 😡😡😡 😃😃
SK1 ✔️ #days 😡 😃😃😃 👍👍👍
SKB ✔️ #channels * #days 😡😡😡😡 😃😃
NAVER #channels * #days 😡😡😡 😃
WAVVE ✔️ 2 1 😃😃 👍
TVING ✔️ ✔️ #channels/20 * #days * 24/3 😡😡 😃😃😃😃 👍👍

1 SK btv 사이트 개편으로 현재 지원되지 않습니다. 다른 소스로 변경하여 사용하세요.

2 프로그램 포스터와 함께 추가 정보를 가져오려면 epg2xml.jsonWAVVE_more_details 항목을 참조.

정보가 많고 적은 요청으로 한 번에 가져와서 서버에 부담이 적은 SK를 기본으로 쓰고 부족한 채널은 다른 소스에서 추가해 쓰는 것을 권합니다.

사용법

WAVVE EPG 사용법

1.2.7p2 이후로 추가된 WAVVE EPG의 사용법은 기존의 것과 약간 다릅니다. Channel.json에 다음과 같이 Source와 ServiceId를 주면 그 채널을 EPG로 만듭니다.

{ "Source": "WAVVE", "ServiceId": "K01" },

그 외 Id, Name, Icon_url은 직접 Channel.json에서 지정하지 않으면 자동으로 정해집니다. Id는 wavve|ServiceId가 되고 Name과 Icon_url은 WAVVE api가 주는 값을 기본값으로 갖습니다.

어떤 채널이 서비스 되고 있는지 ServiceId를 알기 어려우므로 일단 한 채널만 올라가 있는 여기의 Channel.json로 epg2xml을 한번 실행하면 같은 폴더에 WAVVE 채널의 템플릿인 Channel_WAVVE.json이 생성됩니다. 내용은 대략 아래와 같습니다.

[
    {
        "last update": "2020/02/16 05:53:31",
        "total": 98
    },
    {
        "WAVVE Name": "KBS 1TV",
        "Icon_url": "https://img.pooq.co.kr/BMS/Channelimage30/image/KBS-1TV-1.jpg",
        "Source": "WAVVE",
        "ServiceId": "K01"
    },
    {
        "WAVVE Name": "KBS 2TV",
        "Icon_url": "https://img.pooq.co.kr/BMS/Channelimage30/image/KBS-2TV-1.jpg",
        "Source": "WAVVE",
        "ServiceId": "K02"
    },
    {
        "WAVVE Name": "MBC",
        "Icon_url": "https://img.pooq.co.kr/BMS/Channelimage30/image/M01.jpg",
        "Source": "WAVVE",
        "ServiceId": "M01"
    }
]

첫번째로 생성일과 전체 채널의 갯수가 명시되고 그 아래로 서비스되는 채널의 정보가 나열됩니다. 참고로 WAVVE는 자주 새로운 채널이 추가되고 있던 채널이 삭제될 뿐만 아니라 가져오는 시간에 따라 api에서 제공여부가 달라져 전체 채널수가 자주 변하는 편입니다. 이 내용은 사용자가 원하는 채널을 Channel.json에 추가하기 쉽게 하기 위한 것이며 실제 적용은 현재 Channel.json와 같이 직접 입력해주어야 합니다. (화이트리스트 방식) 예를 들어 위 세개의 채널을 추가하고 싶다면 Channel.json에 아래와 같이 추가해주면 됩니다.

[
{ "Source": "WAVVE", "ServiceId": "K01" },
{ "Source": "WAVVE", "ServiceId": "K02" },
{ "Source": "WAVVE", "ServiceId": "M01" }
]

앞에서 말했듯이 tvheadend에서 인식 가능하게 하는 Id나 Name 필드 그리고 Icon_url은 직접 입력하지 않으면 기본값이 들어갑니다.

  • 파이썬 버전만 WAVVE EPG가 가능합니다. PHP 버전 pull request 환영합니다.
  • Plex 연동시 프로그램 포스터 입력이 됩니다. 그래서 조금 느립니다. 포스터 입력은 epg2xml.jsonWAVVE_more_details 항목을 참조
  • 너무 자주 요청하지는 마세요. 하루에 1~2번이면 충분하지 않을까 싶습니다.

조금 더 나은 사용을 고민해보겠습니다. 좋은 방안 있으면 issue로 알려주세요.

TVING 사용법

WAVVE와 동일합니다.

라이센스

BSD 3-clause "New" or "Revised" License

epg2xml's People

Contributors

justinus-choo avatar onetop21 avatar wiserain avatar wonipapa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

epg2xml's Issues

KT epg 한글 깨짐 건

최신버젼의 python EPG를 사용한 이후로 다음과 같은 EPG 깨짐 증상이 발생합니다.
아래는 Channel.JSON파일로 제가 임의로 KT것으로 수정한 것입니다.
스크린샷 중 특정채널 ebs english, plus1/2, 뽀요TV, 캐리TV, Smile TV 등만 글씨가 깨지고 있습니다.

{ "Id": 56, "Name": "EBS English", "KT Name": "EBS English", "KTCh": 973, "LG Name": "EBS English", "LGCh": 162, "SK Name": "EBS English", "SKCh": 202, "Radio Name": "", "RadioCh": null, "Icon_url": "http://i.imgur.com/Rx4mgpm.png", "Source": "KT", "ServiceId": "973" },
{ "Id": 58, "Name": "EBS PLUS1", "KT Name": "EBS PLUS1", "KTCh": 157, "LG Name": "EBS+1", "LGCh": 163, "SK Name": "EBS +1", "SKCh": 203, "Radio Name": "", "RadioCh": null, "Icon_url": "http://i.imgur.com/WGlWiWy.png", "Source": "KT", "ServiceId": "972" },
{ "Id": 59, "Name": "EBS PLUS2", "KT Name": "EBS PLUS2", "KTCh": 158, "LG Name": "EBS+2", "LGCh": 164, "SK Name": "EBS +2", "SKCh": 204, "Radio Name": "", "RadioCh": null, "Icon_url": "http://i.imgur.com/QPq2wcg.png", "Source": "KT", "ServiceId": "971" },
{ "Id": 182, "Name": "Smile TV", "KT Name": "Smile TV", "KTCh": 84, "LG Name": "", "LGCh": null, "SK Name": "", "SKCh": null, "Radio Name": "", "RadioCh": null, "Icon_url": "http://i.imgur.com/alk8plD.png", "Source": "KT", "ServiceId": "84" },
{ "Id": 495, "Name": "뽀요TV", "KT Name": "뽀요TV", "KTCh": 976, "LG Name": "", "LGCh": null, "SK Name": "", "SKCh": null, "Radio Name": "", "RadioCh": null, "Icon_url": "https://tvlogo/뽀요TV.png", "Source": "KT", "ServiceId": "976" },
{ "Id": 496, "Name": "캐리TV", "KT Name": "캐리TV", "KTCh": 985, "LG Name": "", "LGCh": null, "SK Name": "", "SKCh": null, "Radio Name": "", "RadioCh": null, "Icon_url": "https://tvlogo/캐리TV.png", "Source": "KT", "ServiceId": "985" },
{ "Id": 497, "Name": "핑크퐁채널", "KT Name": "핑크퐁채널", "KTCh": 988, "LG Name": "", "LGCh": null, "SK Name": "", "SKCh": null, "Radio Name": "", "RadioCh": null, "Icon_url": "https://tv.kt.com/relatedmaterial/ch_logo/live/7e6dfc0d80502185754.png", "Source": "KT", "ServiceId": "988" },
{ "Id": 498, "Name": "대교상상kids", "KT Name": "대교상상kids", "KTCh": 981, "LG Name": "", "LGCh": null, "SK Name": "", "SKCh": null, "Radio Name": "", "RadioCh": null, "Icon_url": "https://tv.kt.com/relatedmaterial/ch_logo/live/63cdb05180502185807.png", "Source": "KT", "ServiceId": "981" },
스크린샷 2020-03-30 오후 5 30 58
스크린샷 2020-03-30 오후 5 32 49

확인 부탁드립니다~~

티빙 요청 중 500 에러

티빙해보니 파이썬 에러가 생기는데 ...

2020/09/04 03:53:25 INFO 655 소스가 TVING인 채널을 가져오고 있습니다.
Traceback (most recent call last):
File "/root/epg2xml/epg2xml.py", line 1198, in
getEpg()
File "/root/epg2xml/epg2xml.py", line 137, in getEpg
GetEPGFromTVING([c for c in Channeldatajson if c['Source'] == 'TVING'])
File "/root/epg2xml/epg2xml.py", line 757, in GetEPGFromTVING
for ch in get_json(params):
File "/root/epg2xml/epg2xml.py", line 690, in get_json
raise requests.exceptions.RequestException
requests.exceptions.RequestException

이렇게 검색하다 중단이 됩니다.

Originally posted by @dlengmlek in #6 (comment)

한 채널만 돌렸을때는 문제가 없었는데 확인차 전채널 실행시 에러가 발생하는 것을 확인 하였습니다.

안녕하세요. EPG 연동 문의드립니다.

안녕하세요.
최근 wiserain/tvheadend를 재설치 하였는데요.
재설치후 EPG를 못받아오는 문제가 발생해서 글을 작성합니다.
초보적인 문제일수도 있어서 먼저 죄송한 말씀 드립니다.

기존에 하던대로 내부그래버 SK 켜고, epg2xml.json 파일을 도커에 마운트한 epg2xml 폴더에 넣어줬습니다. tvheadend 로그에서 아래와 같은 오류가 발생하는데요. 어떻게 하면 해결할 수 있는지 궁금합니다.

혹시몰라 이전에 잘 사용하던 epg2xml.py 파일로 덮어쓰고 해봐도 같은 오류가 발생해서요ㅠ

2020-05-10 13:57:48.000 xmltv: /usr/bin/tv_grab_kr_sk: grab /usr/bin/tv_grab_kr_sk
2020-05-10 13:57:48.000 spawn: Executing "/usr/bin/tv_grab_kr_sk"
2020-05-10 13:57:48.338 spawn: Traceback (most recent call last):
2020-05-10 13:57:48.338 spawn: File "/epg2xml/epg2xml.py", line 59, in
2020-05-10 13:57:48.338 spawn: filehandler = RotatingFileHandler(args['logfile'], maxBytes=1024 * 1000, backupCount=5, encoding='utf-8')
2020-05-10 13:57:48.338 spawn: File "/usr/lib/python3.8/logging/handlers.py", line 148, in init
2020-05-10 13:57:48.338 spawn: BaseRotatingHandler.init(self, filename, mode, encoding, delay)
2020-05-10 13:57:48.338 spawn: File "/usr/lib/python3.8/logging/handlers.py", line 55, in init
2020-05-10 13:57:48.338 spawn: logging.FileHandler.init(self, filename, mode, encoding, delay)
2020-05-10 13:57:48.338 spawn: File "/usr/lib/python3.8/logging/init.py", line 1143, in init
2020-05-10 13:57:48.339 spawn: StreamHandler.init(self, self._open())
2020-05-10 13:57:48.339 spawn: File "/usr/lib/python3.8/logging/init.py", line 1172, in _open
2020-05-10 13:57:48.340 spawn: return open(self.baseFilename, self.mode, encoding=self.encoding)
2020-05-10 13:57:48.340 spawn: PermissionError: [Errno 13] Permission denied: '/epg2xml/epg2xml.py.log'
2020-05-10 13:57:48.353 spawn: cat: /epg2xml/xml/xmltv.xml: No such file or directory
2020-05-10 13:57:48.353 xmltv: /usr/bin/tv_grab_kr_sk: no output detected
2020-05-10 13:57:48.353 xmltv: /usr/bin/tv_grab_kr_sk: grab returned no data

감사합니다.

잘 쓰고 있습니다! 그런데 파이썬3로 넘어오면서 lxml 모듈 인식을 못하네요

시놀로지에 패키지로 tvheadend 설치해서 파이썬3 패키지 설치 후 파이썬 모듈도 설치하고
파이썬3용 pip 새로 인스톨하고, 뷰티풀소프4 설치하고, requests 설치하고, lxml 설치하려하는데 lxml이 설치가 안되네요
이게 libxml2랑 libxslt 여기서 호환이 안되서 lxml 설치가 안되는것 같은데 시놀로지 쓰다보니 apt-get install로 저 2개가 업데이트 나 설치가 안되네요.

이것저것 하는 방법이 있긴한데 너무 복잡해서 이걸 설치해말아 고민만하다 어찌어찌
WARNING 084 lxml 모듈이 설치되지 않아 html.parser로 동작합니다. 속도가 느립니다.
이렇게 되면서 일단 xml파일로 생성은 되기때문에 쓰고는 있습니다.

좋은 방법 없을까요?
어쨌든 잘 쓰고 있습니다 ㅎㅎ 고맙습니다.

SKB EPG에 장르구분 나오도록 부탁 드립니다.

안녕하세요. 항상 감사드리며 사용하고 있습니다.

일전에 SK EPG 가능할 때에 각 채널별 장르가 구분되도록 수정을 해 주셨었는데요... 이번에 SKB만 가능하게 되면서 소스변경을 해 봤더니 장르가 구분되어 나오지 않더라구요... ㅠ.ㅠ 번거로우시겠지만 시간 되시는대로 SKB에서도 장르구분이 가능하도록 변경해 주시면 감사하겠습니다.

감사합니다~

SK btv 사이트 변경

더이상 해당 주소로는 서비스하지 않는듯하다. 모바일 앱에서 편성표를 보여주는데 api 주소는 알아냈지만 하루 밖에 안 주는듯 하다. 흠...

하루도 아니고 현시점을 기준으로 당일 예정 방송만 보여준다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.