XBMC will be renamed to Kodi for v14. Read here for more details

Service addons

From Kodi
Jump to: navigation, search

Service addons will be automatically started when XBMC starts. These addons must offer the xbmc.service extension point. You can specify when you want your addon to start, using the start tag. If it's isn't here, your addon will automatically start after user login. If you want it to start on XBMC startup, you need to set the start tag to startup. Here's a typical example of the addon.xml the addon needs to provide:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.example"
       name="Example service"
       version="1.0.0"
       provider-name="">
  <requires>
    <import addon="xbmc.python" version="2.1.0"/>
  </requires>
  <extension point="xbmc.service" library="service.py" start="login">
  </extension>
  <extension point="xbmc.addon.metadata">
    <platform>all</platform>
    <summary lang="en"></summary>
  </extension>
</addon>

If your addon is meant to be run while XBMC is running, you need to periodically check if XBMC is exiting. The addon is responsible for terminating when XBMC wants to exit. This can be checked by creating a xbmc.Monitor instance and calling the abortRequested() method. To wait for this event instead, call waitForAbort().

Example service that prints "hello addon!" every 10 second until XBMC exits:

import time
import xbmc
 
if __name__ == '__main__':
    monitor = xbmc.Monitor()
 
    while not monitor.waitForAbort(10):
        xbmc.log("hello addon! %s" % time.time(), level=xbmc.LOGDEBUG)


Note: abortRequested() and waitForAbort() are new in Helix. In Gotham, use xbmc.sleep and check the xbmc.abortRequested attribute periodically.


Gotham example:

import xbmc
 
if __name__ == '__main__':
    while not xbmc.abortRequested:
        some code
        xbmc.sleep(500)
Personal tools
Namespaces

Variants
Actions
Navigation
Wiki help
Toolbox