Kodi Addon 만들기 1 - 들어가며 http://www.clien.net/service/board/cm_nas/11699032CLIEN
Kodi Addon 만들기 2 - 그냥 필요 정보 http://www.clien.net/service/board/cm_nas/11699857CLIEN
Kodi Addon 만들기 3 - 준비물 그리고 시작하기 http://www.clien.net/service/board/cm_nas/11701630CLIEN
Kodi Addon 만들기 4 - addon.xml http://www.clien.net/service/board/cm_nas/11701719CLIEN
개발 환경에 대해서 물어보시는 분이 그것부터 먼저 언급하겠습니다.
1. 개발환경
제 개발 환경(?)은 다음과 같습니다.
윈도우 8, 에디터 플러스, 7zip, KODI 17 버전입니다.
배포는 압축을 해서 하면 되는건데요.
개발시에 매번 압축하고 애드온 설치하고 하면서 할 수는 없잖아요.
KODI에 애드온을 깔면 압축이 풀린 상태로 있게 됩니다.
그래서 저는 이렇게 합니다.
KODI에 개발할 애드온이랑 같은 형식으로 꼭 필요한 몇 파일 addon.xml, 소스파일(크기는 0이라도 상관없습니다. 이름만 정해주면 됩니다.)
폴더 구조를 만들어서 zip파일로 만든다음에 설치하고 설치된 폴더에 들어가서 작업합니다.
애드온 구조는 아래 링크 참조하세요. 제가 Kodi Addon 만들기 3에서 언급한 구조입니다.
http://kodi.wiki/view/Add-on_structure
애드온 설치 위치는 http://kodi.wiki/view/Userdata 여기 참조하시면 KOID 사용자 데이터가 저장되는 위치가 나옵니다.
그 폴더 상위에 addon 폴더가 있습니다.
PC에서 작업 안하고 안드로이드 핸드폰에서도 만들수는 있습니다. 처음 안드로이드에 설치하고서는 잘 안되서 직접 에디터로 고친적도 있습니다. 만들어진 애드온은 특별한 문제가 아니면 OS나 KODI버전 상관없이 돌아갈 겁니다. 제가 만든 애드온은 갤럭시뷰, 제 핸드폰, 윈도우8 PC에서도 잘 작동되었습니다.
2. service.py
이제 본격적인 시작이네요. 파일이름은 service.py로 지었는데요.
이건 자기 마음대로 해도 상관은 없습니다. 니가 가라 하와이.py 로 해도 됩니다.
addon.xml에 적어주기만 하면 되거든요. 그런데 이렇게 지은건 service로 작동하기 때문에 한거예요.
serive.py는 대충 3가지 부분으로 나뉘어져 있어요.
첫번째는 필요 모듈을 불러오고 정의하는 부분
두번째는 로그인 설정
세번째는 웨서버 구동 및 요청 정보 받아서 스트리밍 보내주는 부분이예요.
하나씩 볼께요. 역시 소스라서 그냥 그림으로 캡쳐할 겁니다.

1 라인 utf-8로 코딩되었다는 걸 알려주는 겁니다. 물론 파일도 당연히 utf-8로 저장해야 합니다.
2-10 라인 service.py에서 사용하는 모듈 불러옵니다.
12-22 라인 변수선언해주는 겁니다. 그리고 여기서 보시면 os.path.join 이랑 sys.path.append를 볼 수 있는데요. 이거 중요해서 왜냐하면 OS에 따라서 폴더 위치가 다 틀려요. PC 면 c:\aaaa\bbb 이고 리눅스면 /home/aaaa/bbb 이런식이거든요. 그래서 직접 위치를 안쓰고 저런식으로 정의해놓은 거예요.
예를 들어서 __lib__ 는 저렇게 정의하면 PC 에서는 c:\에드온설치위치\resources\lib 로 정의되고 리눅스라면 에드온설치위치/resources/lib 가 되는 거죠
24 라인 로그인하고 TV 주소 따오는 중요 함수가 있는 라이브러리를 불러옵니다.
26 라인 채널 정보에 대한 파일 정의예요

28-46 라인 kiptv() 처음 실행되는 함수예요. 제일 먼저 getLoginInfo() 함수로 입력된 아이디와 패스워드를 가져옵니다.
아이디와 패스워드가 설정되어 있지 않으면 아이디, 패스워드 입력하라는 창을 띄웁니다.
30100, 30101은 languages에 있는 strings.xml에 정의되어 있는 문구입니다.
30100은 '설정정보', 30101은 '아이디 또는 패스워드를 설정하세요.' 라는 문구입니다.
아이디와 패스워드가 있으면 로그인을 시도하고 실패하면 역시 실패했다는 창을 띄웁니다.
로그인하는 과정은 라이브러리에 들어 있어서 여기서 설명은 안할겁니다.
참고로 아이디, 패스워드 정보는 설치된 기계에 저장됩니다. http://kodi.wiki/view/Userdata 에 보시면 정확한 위치를 알 수 있어요.
71-79 라인 먼저 설명 할께요.
service.py가 실행되면 이 부분이 제일 먼저 실행니다. kiptv()로 아이디, 패스워드 설정이 되어 있는지, 설정되어 있으면 로그인합니다. 그리고 8888번 포트로 웹서버를 실행합니다. 포트번호는 어차피 로컬에서 쓰는 거라서 아무거나 써도 큰 문제는 없습니다. 외부에서 접근되는 것도 아니니까요. simple client에서 get형식으로 ChannelId를 요청하면 채널아이디를 GetChannelInfo함수에 넘겨주고 이 함수에서 보내준 TV의 스트리밍 주소를 받아서 다시 simple clinet로 돌려줍니다.
56-69 라인은 ChannelInfo.json 파일에서 ChannelId를 이용해서 채널 기본 정보를 가져오고 스트리밍 주소를 돌려주는 GetChannelInfo 함수입니다.
사실 핵심정보는 lib 폴더에 다 들어 있어요. serivice.py는 껍데기인거죠.
소스는 여기에 있습니다.
그럼 다음에 또
강의 잘 보고 있습니다.
이 강좌는 나스가 없으신 분들께도 아주 유용한 강좌가 될것 같습니다.
그리고 사실 이방법을 응용하면 tvheadend를 이용해서 녹화도 가능합니다.
/Vollago