이전장에서 가장 간단한 형태를 봤지만, 실제로 동영상만 있는 경우는 드물겁니다. 즉 그룹으로 묶여 있기를 원하죠.
플러스, 모름지기 함수라면 argument를 넘겨받아 다용도로 사용도 되어야죠.
# -*- coding: utf-8 -*-
from xbmcswift2 import Plugin
plugin = Plugin()
@plugin.route('/')
def main_menu():
items = [
{'label':'Video', 'path':plugin.url_for('video_menu')},
{'label':'Image', 'path':plugin.url_for('image_menu', enable="yes")},
]
return items
@plugin.route('/video/')
def video_menu():
items = [
{'label':'Hello World',
'path':'http://goo.gl/Za1tw',
'thumbnail':'http://goo.gl/zRbCi',
'is_playable':True}
]
return items
@plugin.route('/image/<enable>')
def image_menu(enable):
items = []
if enable == "yes":
items.append({'label':'Dummy', 'path':''})
return items
if __name__ == "__main__":
plugin.run()
# vim:sw=4:sts=4:et
우선 plugin.url_for() 라는 함수가 새로 보입니다. 이것은 video_menu나 image_menu와 같은 python 함수의 이름와 인자를 route 경로 주소로 바꿔주는 역할을 합니다.
이게 왜 필요하냐면 addon.py 프로그램은 계속 실행되고 있는게 아닙니다. main_menu에서 video_menu로 간다고 해도 직접 호출되는게 아니고, 일단 플러그인 실행이 종료된 후 사용자의 입력을 받아서 어떤 경로가 가야할지가 결정되면 다시 플러그인을 호출하고 선택된 경로에서부터 함수 이름과 함수 인자를 추출해 내고 이걸로 다시 함수 실행이 되는 것입니다.
route('/image/<enable>')에서 <enable>은 함수 인자 이름을 뜻하며, 여러 개 지정하는 것도 가능합니다.
보다 고급 사용법으로는 redirectoin(사용자의 입력을 기다리지 않고 다른 함수로 이동), alias(하나의 함수에 여러 경로이름 연결)이 있습니다. 자세한건 xbmcswift2 문서를 참고하세요.
'컴퓨터' 카테고리의 다른 글
XBMC 플러그인 만들기 - 6강: 즉석 비디오 재생 (0) | 2015.04.02 |
---|---|
XBMC 플러그인 만들기 - 5강: 페이지 만들기 (0) | 2015.04.02 |
XBMC 플러그인 만들기 - 3강: addon.py 형태 (0) | 2015.03.27 |
XBMC 플러그인 만들기 - 2강: 추가기능의 구조 (0) | 2015.03.27 |