KODI(XBMC) 다음 무비, TV쇼 애드온 스크래퍼 오류 문제 해결

다음무비 사이트 개편으로 다음 스크래퍼가 정상적으로 작동하지 않는 문제가 발생하였습니다. 이 부분을 뽐뿌 원츄-_-b님께서 해결한 방법을 공유합니다.

http://www.ppomppu.co.kr/zboard/view.php?id=nas&no=21719

아래는 작년에 작성한 TV쇼 애드온 내용입니다.


다음 TV쇼 애드온이 업데이트 되었습니다. 해당 문제는 업데이트 하시면 해결됩니다.
https://github.com/hojel/metadata.tv.daum.net/releases

라즈베리파이로 KODI 미디어 센터를 구축하여 예능프로와 한국드라마 정보를 긁어오는 용도로 사용했던 다음 TV쇼 애드온이 어느 순간부터 정보를 가지고 오지 못하고 있었습니다. 콘텐츠를 검색할 때마다 재부팅을 하니… 바쁜 일이 끝나면 해결해야지 해야지 미루다가 이번에 해결한 내용을 공유합니다.

xbmc-korea와 구글님께 검색해보니, 역시 벌써 해결한 능력자분들이 있었습니다.

http://freespiritslab.blogspot.kr/2015/07/blog-post_20.html
http://cafe.naver.com/mk802/11125

PHP5.2 버전에서 5.3버전으로 변경은 클릭한 번으로 업그레이드가 되어 한 번에 해결했지만, file_get_contents 함수를 대체할 코드는 몇 번의 삽질을 통해 해결하였습니다.
위 글을 토대로 작업해본 결과 데이터를 불러오지 못했습니다.
두 가지의 문제점이 있었는데, PHP5.3버전 이상 이여야 하는 점과 Cafe24 같은 호스팅 서비스를 이용해서 사용할 경우, file_get_contents 함수를 사용할 수 없다는 점을 알게 되었습니다.

1. 아래코드를 episode.php 이름의 파일로 만들어 웹서버에 넣습니다.

header("Content-Type:application/json;charset=UTF-8");
//변경 된 다음 무비 정보를 기존 다음스크래퍼에서 읽는 json 형태로 변환하기
$t=$_GET['tvprogramid'];
$address="http://m.movie.daum.net/m/tv/episode?tvProgramId=".$t;

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $address);
$ddata = curl_exec($ch);
curl_close($ch);

$data=strstr($ddata,"[{");
$data2="\"data\":".strstr($data,"}]",true)."}]";
$data3=str_replace("\"title\" : \"","\"episodeTitle\":\"",$data2);
$data3=str_replace("\"introduceDescription\" : \"","\"episodeIntroduce\":\"",$data3);
$data3=str_replace("\"broadcastDate\" : \"","\"telecastDate\":\"",$data3);
$data3=str_replace("\"episodeId\" : \"","\"episodeId\":",$data3);
$data3=str_replace("\",
  \"name\" : \"",",\"episodeSeq\":",$data3);
$data3=str_replace("\",
  \"sequence\" :",",\"name\":",$data3);
$data3=str_replace("[ ]","\"\"",$data3);  
$data3=str_replace("[ {","\"\",",$data3);
$data3=str_replace("} ],",",",$data3);
$data3=str_replace("}, {
  \"episodeId\"","},{\"episodeId\"",$data3);
$data3=str_replace("}, {",",",$data3);
echo "{\"url\": \"$address\", $data3}";

2. KODI(XBMC)가 설치되어있는 기기에 접속하여 .kodi/addons/metadata.tv.daum.net 경로에 있는 daum-tv.xml 파일을 엽니다.

http://m.movie.daum.net/data/movie/tv/episode.json?pageNo=1&pageSize=1000&tvProgramId=

위와 같은 주소 형식을 아래와 같이 변경해줍니다. 총 4개가 있습니다.

http://웹서버주소/episode.php?tvprogramid=

위와 같이 적용해도 재부팅이 되거나 데이터를 불러오지 못할 경우 스크래핑 설정을 다시 해보시면 됩니다. 성공적인 삽질이 되길 바래요!