한 화면에 표시할게 많으면 다음 페이지로 넘어가 거기에다 표시되게 하고 싶죠.
또 이전 페이지로도 돌아가게 하고 싶구요.
# -*- coding: utf-8 -*-
from xbmcswift2 import Plugin
plugin = Plugin()
@plugin.route('/')
def main_menu():
return [{'label':'Video', 'path':plugin.url_for('video_menu', page='-')}]
@plugin.route('/video/<page>')
def video_menu(page):
page2 = 1 if page == '-' else int(page)
result = parse_site()
items = result[page-1]
if page2 > 1:
items.append({'label':u'[B]<<이전 페이지[/B]',
'path':plugin.url_for('video_menu', page=page2-1)})
if page2 < len(result):
items.append({'label':u'[B]다음 페이지>>[/B]',
'path':plugin.url_for('video_menu', page=page2+1)})
cont_page = True if page == '-' else False
return plugin.finish(items, update_listing=cont_page)
if __name__ == "__main__":
plugin.run()
# vim:sw=4:sts=4:et
plugin.url_for에 page 인자를 주는 것은 4강에서 배웠죠. 그런데 page에 번호를 주지 않고 '-'를 준 것은 후에 설명할 update_listing을 위한 트릭입니다.
video_menu()를 보면 string으로 취급된 page를 다시 integer로 바꾼 후 이를 기반으로 페이지 넘기는 메뉴를 추가한 것을 알 수 있을겁니다.
label에 쓰인 [B]은 bold를 뜻하며 그외에도 [COLOR]라던가 [U]도 있습니다.
여기서 가장 중요한 것은 plugin.finish() 가 등장했고 함수의 리턴값으로 쓰인다는 것입니다. 여기서 update_listing은 새로 트리를 만드는게 아니고 이전걸 덮어쓰라는 의미입니다.
이것은 상위폴더로 이동하는 메뉴('..')가 이전 레벨이 아닌 이전 페이지로 가는 것을 막아줍니다.
'컴퓨터' 카테고리의 다른 글
XBMC 플러그인 만들기 - 7강: 언어와 설정 불러오기 (0) | 2015.04.02 |
---|---|
XBMC 플러그인 만들기 - 6강: 즉석 비디오 재생 (0) | 2015.04.02 |
XBMC 플러그인 만들기 - 4강: 트리 만들기 (0) | 2015.03.27 |
XBMC 플러그인 만들기 - 3강: addon.py 형태 (0) | 2015.03.27 |