Service add-ons: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:


Service addons will be automatically started when Kodi 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 Kodi startup, you need to set the '''start''' tag to ''startup''. Here's a typical example of the addon.xml the addon needs to provide:
Service addons will be automatically started when a user profile logs in or on Kodi startup, and stopped when the user profile logs out. These addons must offer the '''xbmc.service''' extension point. Here's a typical example of the addon.xml the addon needs to provide:


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
Line 11: Line 11:
     <import addon="xbmc.python" version="2.1.0"/>
     <import addon="xbmc.python" version="2.1.0"/>
   </requires>
   </requires>
   <extension point="xbmc.service" library="service.py" start="login" />
   <extension point="xbmc.service" library="service.py" />
   <extension point="xbmc.addon.metadata">
   <extension point="xbmc.addon.metadata">
     <platform>all</platform>
     <platform>all</platform>
Line 52: Line 52:
         xbmc.sleep(500)
         xbmc.sleep(500)
</syntaxhighlight>
</syntaxhighlight>
Prior to Kodi 18 Leia there was an additional option ''start="startup"'' that would start the service add-on before the first profile login, but that functionality and usefulness were limited so this option was removed.


[[Category:How-to]]
[[Category:How-to]]
[[Category:Add-on development]]
[[Category:Add-on development]]

Revision as of 16:47, 3 May 2018

Service addons will be automatically started when a user profile logs in or on Kodi startup, and stopped when the user profile logs out. These addons must offer the xbmc.service extension point. 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" />
  <extension point="xbmc.addon.metadata">
    <platform>all</platform>
    <summary lang="en"></summary>
  </extension>
</addon>

If your addon is meant to be run while Kodi is running, you need to periodically check if Kodi is exiting. The addon is responsible for terminating when Kodi 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 Kodi exits:

import time
import xbmc

if __name__ == '__main__':
    monitor = xbmc.Monitor()
    
    while not monitor.abortRequested():
        # Sleep/wait for abort for 10 seconds
        if monitor.waitForAbort(10):
            # Abort was requested while waiting. We should exit
            break
        xbmc.log("hello addon! %s" % time.time(), level=xbmc.LOGNOTICE)


Gotham and earlier

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

Example:

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


Prior to Kodi 18 Leia there was an additional option start="startup" that would start the service add-on before the first profile login, but that functionality and usefulness were limited so this option was removed.