CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·일본산당 ·자전거당 ·방탄소년당 ·개발한당 ·야구당 ·안드로메당 ·이륜차당 ·노젓는당 ·나스당 ·소시당 ·소리당 ·육아당 ·캠핑간당 ·달린당 ·소셜게임한당 ·시계찬당 ·젬워한당 ·스팀한당 ·레고당 ·어학당 ·키보드당 ·IoT당 ·골프당 ·가상화폐당 ·클다방 ·리눅서당 ·퐁당퐁당 ·물고기당 ·창업한당 ·AI당 ·PC튜닝한당 ·콘솔한당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·가죽당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·노키앙 ·적는당 ·방송한당 ·바다건너당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·VR당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

나스당

강좌 KODI Addon 만들기 5 - service.py 5

1
2018-01-25 11:21:17 수정일 : 2018-01-26 09:49:00 163.♡.43.201
lum34

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는 껍데기인거죠.

소스는 여기에 있습니다.

https://pastebin.com/WWvYs8Ty

그럼 다음에 또

lum34 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [5]
lum34
IP 163.♡.43.201
01-25 2018-01-25 11:21:59
·
글이 길어져서 이미지 먼저 올렸습니다. 글내용은 수정으로 올릴겁니다.
지니진이
IP 211.♡.254.19
01-25 2018-01-25 11:35:39
·
감사합니다..
강의 잘 보고 있습니다.
이 강좌는 나스가 없으신 분들께도 아주 유용한 강좌가 될것 같습니다.
lum34
IP 163.♡.43.201
01-25 2018-01-25 11:41:29
·
예. 나스가 없어도 되는거죠. 자기 기계로 보는거니까요.
그리고 사실 이방법을 응용하면 tvheadend를 이용해서 녹화도 가능합니다.
gyecheol
IP 223.♡.219.206
01-25 2018-01-25 17:33:07
·
감사합니다. 계속 연재 부탁할께요
/Vollago
나의라임오졌지나무
IP 115.♡.24.166
01-25 2018-01-25 17:37:01
·
개인적으로 구글포토 addon이 있으면 참 좋겠....
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.