본문 바로가기
컴퓨터

XBMC 플러그인 만들기 - 8강: 메뉴 추가

by Moon Madness 2015. 4. 2.

플러그인에서도 context menu(키보드 C)가 동작하며 사용자가 추가할 수도 있다.

예를 들어 다운로드 명령을 추가하여 재생가능 비디오를 저장도 할 수 있게 할 수 있다.

# -*- coding: utf-8 -*-
from xbmcswift2 import Plugin

plugin = Plugin()

@plugin.route('/')
def main_menu():
    vid_url = 'http://goo.gl/Za1tw'
    items = [
        {'label':'Hello World',
         'path':vid_url,
         'thumbnail':'http://goo.gl/zRbCi',
         'is_playable':True,
         'context_menu': [
                ('Download', actions.background(plugin.url_for('download_video', url=vid_url)))
         ]}
    ]
    return items

@plugin.route('/download/<url>')
def download_video(url):
    r = urllib.urlopen(url)
    f = open('/tmp/a.mp4', 'wb')
    f.write( r.read() )
    f.close()
    r.close()
    plugin.notify('Download completed')
    return None

if __name__ == "__main__":
    plugin.run()
# vim:sw=4:sts=4:et

context_menu 항목을 추가하면 되며, 이것은 tuple의 array를 값으로 가진다. 각 tuple은 label과 actions으로 구성된다.


직접 다운로드 루틴을 작성하는 것보단 가능하면 SimpleDownloader 스크립트를 이용하는 것이 안전해 보인다.