<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Enen92</id>
	<title>Official Kodi Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Enen92"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/Enen92"/>
	<updated>2026-06-15T12:59:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=243955</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=243955"/>
		<updated>2023-01-23T16:19:15Z</updated>

		<summary type="html">&lt;p&gt;Enen92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;noautonum toclimit-7&amp;quot; style=&amp;quot;background: none; clear: right; float: right; margin-bottom: 0.5em; padding: 0.5em 0 0.8em 1.4em; width: auto;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;samp&amp;gt;addon.xml&amp;lt;/samp&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- language of the content the add-on provides, omit if the add-on does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- URL of the website that supplies the content, or the website for your plugin; may be omitted. --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/2013)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max. 10 --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
* The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole. Inside it should be:&lt;br /&gt;
** A &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, listing all the dependencies that this add-on needs in order to function inside individual &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements for each one.&lt;br /&gt;
** One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
*** Finally, there is a specific extension element, &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; that describes the add-on to the user.&lt;br /&gt;
**** Image assets such as icons, a banner and screenshots declared inside their own named elements inside of an &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag (exclusive to Kodi v18+)&lt;br /&gt;
&lt;br /&gt;
== Core elements ==&lt;br /&gt;
=== &amp;lt;addon&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element has 4 attributes, and they are all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== id attribute ====&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;type&amp;lt;/var&amp;gt;.&amp;lt;var&amp;gt;uniquename&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== version attribute ====&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== How versioning works =====&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
==== name attribute ====&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI. This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
==== provider-name attribute ====&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;requires&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element contains one or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
Here is a sample &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; block that imports two required modules:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;               version=&amp;quot;2.25.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot; version=&amp;quot;1.2.7&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;import&amp;gt; ====&lt;br /&gt;
Each &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
===== addon attribute =====&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== version attribute =====&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
====== Dependency versions ======&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid #000; border-collapse: collapse;&amp;quot;&lt;br /&gt;
 |+ Current versions&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Kodi version&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.python&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.gui&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.json&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.metadata&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.addon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Dharma Guide|Dharma 10.1]] {{Red|Deprecated}}&lt;br /&gt;
 | 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Eden API changes|Eden 11.0]] {{Red|Deprecated}}&lt;br /&gt;
 | 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Frodo|Frodo 12.x]] {{Red|Deprecated}}&lt;br /&gt;
 | 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Gotham API changes|Gotham 13.x]]&lt;br /&gt;
 | 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Helix|Helix 14.x]]&lt;br /&gt;
 | 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Isengard|Isengard 15.x]]&lt;br /&gt;
 | 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Jarvis|Jarvis 16.x]]&lt;br /&gt;
 | 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Krypton|Krypton 17.x]]&lt;br /&gt;
 | 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Leia|Leia 18.x]]&lt;br /&gt;
 | 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Matrix|Matrix 19.x]]&lt;br /&gt;
 | 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 19.1.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Nexus|Nexus 20.x]]&lt;br /&gt;
 | 3.0.1 (ABI 3.0.0) || 5.16.0 (ABI 5.15.0) || 13.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 20.90.101 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work on Leia 18.x. Same happens for Matrix and Nexus addons. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== optional attribute =====&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;extension&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
==== point attribute ====&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Extension point&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Type declaration&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.font&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Fonts|Additional fonts]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Additional image files&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Language support|Additional languages]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.uisounds&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[UI sounds add-ons|Additional UI event sounds]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music add-ons|xbmc.addon.audio]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Music add-ons|Music add-ons]] &amp;lt;small&amp;gt;(audio)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Picture add-ons|xbmc.addon.image]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Picture add-ons|Picture add-ons]] &amp;lt;small&amp;gt;(images)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Unofficial repositories]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Video add-ons|xbmc.addon.video]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Video add-ons|Video add-ons]] &amp;lt;small&amp;gt;(video)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Skins]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Album scraper add-ons|xbmc.metadata.scraper.albums]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scraping Music#Albums|Album information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Artist scraper add-ons|xbmc.metadata.scraper.artists]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scraping Music#Artists|Artist information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Scraper|xbmc.metadata.scraper.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scrapers]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Movie scraper add-ons|xbmc.metadata.scraper.movies]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Movie information&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music video scraper add-ons|xbmc.metadata.scraper.musicvideos]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Music videos|Music video information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:TV scraper add-ons|xbmc.metadata.scraper.tvshows]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[TV Shows|TV show information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music visualization add-ons|xbmc.player.musicviz]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Music visualization&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Add-on libraries/modules|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Python libraries]] {{Note|These don&#039;t show up in the add-on browser and are purely to satisfy dependencies.}}&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Lyrics add-ons|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Script lyrics|Lyrics]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Add-on libraries/modules|xbmc.python.module]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Python development|Additional python library]], mainly for use by script.module add-ons.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Plugin sources|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[:Category:Music add-ons|Music add-ons]] &amp;lt;small&amp;gt;(audio)&amp;lt;/small&amp;gt; / [[:Category:Picture add-ons|Picture add-ons]] &amp;lt;small&amp;gt;(images)&amp;lt;/small&amp;gt; / [[:Category:Program add-ons|Program add-ons]] &amp;lt;small&amp;gt;(executables)&amp;lt;/small&amp;gt; / [[:Category:Video add-ons|Video add-ons]] &amp;lt;small&amp;gt;(video)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Script sources|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Weather addons|xbmc.python.weather]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Weather]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Service add-ons|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Service add-ons|Services]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Subtitle add-ons|xbmc.subtitle.module]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Subtitles|Subtitle source]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Screensaver add-ons|xbmc.ui.screensaver]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[HOW-TO:Screensaver addon|Screensaver]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Web interface|xbmc.webinterface]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Web interface]]&lt;br /&gt;
|}&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
===== xbmc.python.pluginsource =====&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====== library attribute ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;provides&amp;gt; element ======&lt;br /&gt;
The extension has an additional child element named &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to &amp;lt;kbd&amp;gt;pluginsource&amp;lt;/kbd&amp;gt; extension points):&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;padding: 0.5em 1em;&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Provides&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Appears in&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Pictures&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Music&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Video&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Programs&lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
 | See Note below&lt;br /&gt;
|}&lt;br /&gt;
{{Note|If the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is not defined, behavior will depend on the structure of your add-on. If it has a single extension point (e.g. a single &#039;&#039;&#039;&amp;lt;code&amp;gt;xbmc.python.script&amp;lt;/code&amp;gt;&#039;&#039;&#039; or &#039;&#039;&#039;&amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;&#039;&#039;&#039;), {{Kodi}} will default to &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt; (thus your add-on will be shown in Programs). If your add-on has multiple extension points and none specifies a &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, different entries for your add-on will be shown in &amp;quot;Programs&amp;quot; (multiple fallbacks to &amp;quot;executable&amp;quot;). If your add-on has multiple extension points and only one (or some) define the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag it really depends on the order of the extension points. If the first extension point (your add-on&#039;s &#039;&#039;&#039;main extension point&#039;&#039;&#039;) defines the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, {{Kodi}} will assume all the other (empty) extension points provide the same content. Otherwise, it will set the content for all the extension points that specify the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag and fallback all the others to &amp;quot;executable&amp;quot;. &#039;&#039;&#039;At the moment, there is no way to hide an add-on from the interface.&#039;&#039;&#039;|Reminder}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== xbmc.addon.metadata =====&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager. There are several elements that this should contain. Most of these elements are required (except the deprecated tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file.&lt;br /&gt;
&lt;br /&gt;
====== Localization ======&lt;br /&gt;
Language specific elements must always be present in English as a minimum. Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [[wikipedia:Locale (computer software)|locale identifier]]. If omitted, it defaults to en_GB.&lt;br /&gt;
{{Note|Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]}}&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;summary&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;description&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;disclaimer&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;news&amp;gt; ======&lt;br /&gt;
{{Note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters); you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-01-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;platform&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A space-delimited combination of these is also possible. Currently available options are:&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;platform&amp;gt;linux osx-x86_64 windows-x86_64&amp;lt;/platform&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;language&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers, etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;license&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.dev/ids/ SPDX License Expression] for the license(s) are preferable to the full license name:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&amp;lt;br /&amp;gt;&lt;br /&gt;
SPDX License Expression: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;vs&amp;lt;br /&amp;gt;&lt;br /&gt;
Full license name: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your add-on includes multiple licenses:&lt;br /&gt;
* Separate license names using &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; (the pipe or vertical bar character) when there is a choice between licenses:&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later | LGPL-2.0-or-later&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Separate license names using &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; (ampersand), or &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; (comma), when multiple licenses exist that cover different parts of the source.&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later &amp;amp; MIT&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later, MIT&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;forum&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the forum thread URL for this specific add-on. Omit this element if there is no forum thread.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;website&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;website&amp;gt;https://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;source&amp;gt;https://github.com/someone/myaddon&amp;lt;/source&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;email&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the e-mail address of the author, if they wish to do so for this specific add-on. Here are two examples of how you can format it (the second one is harder for spambots to scrape). This can be left blank if you do not wish to make your e-mail address public.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;lifecyclestate&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element will mark the add-on as broken or deprecated in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the add-on installed, so please try to be specific about the underlying reason for the tag. Also, the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag presupposes that a version bump has been made to the add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate type=&amp;quot;deprecated&amp;quot;&amp;gt;Description why deprecated&amp;lt;/lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At your discretion, it can also be translated into several languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate type=&amp;quot;broken&amp;quot; lang=&amp;quot;en_GB&amp;quot;&amp;gt;Description why broken&amp;lt;/lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Valid values for &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;broken&amp;lt;/code&amp;gt;&lt;br /&gt;
 | To mark add-on as broken and no more usable.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;deprecated&amp;lt;/code&amp;gt;&lt;br /&gt;
 | To mark add-on as deprecated and that it has been replaced by another add-on.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | (Default) To set add-on as normal. This value is not really needed, but made available to be able to declare all possible life paths.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;broken&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v18 Leia and earlier. For Matrix and later, see [[Addon.xml#.3Clifecyclestate.3E|§ &amp;lt;lifecyclestate&amp;gt;]]}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the underlying reason for the tag. Also, the broken tag presupposes that a version bump has been made to the add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;assets&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v18 Leia and later.}}&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, they will be treated as non-existent/not provided. Of all the above sub-elements, only &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; are mandatory for add-ons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;reuselanguageinvoker&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is a feature introduced with Kodi 18.0 &amp;quot;Leia&amp;quot; that changes the way the Python invoker works - specifically, attempting to reuse the invoker instances as much as possible. As a result, the add-on performance should be greatly improved. However, note that for the element to work, some changes may be required in your add-on. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do &#039;&#039;not&#039;&#039; store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the add-on, only setting its value to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin-specific elements ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;effectslowdown&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | A multiplier that is applied to all &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;animation&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; effects lengths in the skin; useful for globally slowing down all animations so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;debugging&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | When set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, it will display on-screen debugging information (XML filename, mouse position and focused control type/name) on top of the skin.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;res&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
Kodi can run in many different resolutions, and a skin should try and cater to all of them. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4:3 aspect ratios).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
# It first looks in the current &amp;lt;code&amp;gt;screenmode&amp;lt;/code&amp;gt; folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current &amp;lt;code&amp;gt;screenmode&amp;lt;/code&amp;gt; is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;&amp;lt;code&amp;gt;res&amp;lt;/code&amp;gt;&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16:9 aspect ratios, etc., in the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;defaultresolution&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Skin add-on ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;3.0.10&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.16.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;CC BY-SA 4.0, GNU GENERAL PUBLIC LICENSE Version 2.0&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;https://github.com/xbmc/xbmc/tree/master/addons/skin.estuary&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
      &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
      &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&amp;amp;apos;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that {{Red|all tag names are lower case}}. XML tag names are case-sensitive!&lt;br /&gt;
&lt;br /&gt;
=== Script add-on ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.artwork.downloader&amp;quot; name=&amp;quot;Artwork Downloader&amp;quot; version=&amp;quot;12.0.28&amp;quot; provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                version=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xmbc.json&amp;quot;                  version=&amp;quot;6.0.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.addon&amp;quot;                 version=&amp;quot;12.0.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;   version=&amp;quot;3.3.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot; version=&amp;quot;1.3.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;        library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the XBMC forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=114633&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;https://kodi.wiki/view/Add-on:Artwork_Downloader&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;Martijn@kodi.tv&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;https://github.com/XBMC-Addons/script.artwork.downloader&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.28&lt;br /&gt;
        - Don&#039;t set simplejson module to optional&lt;br /&gt;
      v12.0.27&lt;br /&gt;
        - Fix wrong order of listing using votes for artwork from fanart.tv&lt;br /&gt;
      …&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
#* .kodi/addons/temp&lt;br /&gt;
#* .kodi/temp/temp&lt;br /&gt;
#* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
== Schema Definition ==&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Updated|20}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Nexus&amp;diff=243954</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Nexus&amp;diff=243954"/>
		<updated>2023-01-23T15:53:08Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Created page with &amp;quot;Nexus is the codename for the v20 release of Kodi.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nexus is the codename for the v20 release of Kodi.&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=243953</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=243953"/>
		<updated>2023-01-23T15:52:25Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add nexus branch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;noautonum toclimit-7&amp;quot; style=&amp;quot;background: none; clear: right; float: right; margin-bottom: 0.5em; padding: 0.5em 0 0.8em 1.4em; width: auto;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;samp&amp;gt;addon.xml&amp;lt;/samp&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- language of the content the add-on provides, omit if the add-on does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- URL of the website that supplies the content, or the website for your plugin; may be omitted. --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/2013)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max. 10 --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
* The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole. Inside it should be:&lt;br /&gt;
** A &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, listing all the dependencies that this add-on needs in order to function inside individual &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements for each one.&lt;br /&gt;
** One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
*** Finally, there is a specific extension element, &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; that describes the add-on to the user.&lt;br /&gt;
**** Image assets such as icons, a banner and screenshots declared inside their own named elements inside of an &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag (exclusive to Kodi v18+)&lt;br /&gt;
&lt;br /&gt;
== Core elements ==&lt;br /&gt;
=== &amp;lt;addon&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element has 4 attributes, and they are all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== id attribute ====&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;type&amp;lt;/var&amp;gt;.&amp;lt;var&amp;gt;uniquename&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== version attribute ====&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== How versioning works =====&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
==== name attribute ====&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI. This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
==== provider-name attribute ====&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;requires&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element contains one or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
Here is a sample &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; block that imports two required modules:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;               version=&amp;quot;2.25.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot; version=&amp;quot;1.2.7&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;import&amp;gt; ====&lt;br /&gt;
Each &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
===== addon attribute =====&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== version attribute =====&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
====== Dependency versions ======&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid #000; border-collapse: collapse;&amp;quot;&lt;br /&gt;
 |+ Current versions&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Kodi version&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.python&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.gui&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.json&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.metadata&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | xbmc.addon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Dharma Guide|Dharma 10.1]] {{Red|Deprecated}}&lt;br /&gt;
 | 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Eden API changes|Eden 11.0]] {{Red|Deprecated}}&lt;br /&gt;
 | 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Frodo|Frodo 12.x]] {{Red|Deprecated}}&lt;br /&gt;
 | 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Gotham API changes|Gotham 13.x]]&lt;br /&gt;
 | 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Helix|Helix 14.x]]&lt;br /&gt;
 | 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Isengard|Isengard 15.x]]&lt;br /&gt;
 | 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Jarvis|Jarvis 16.x]]&lt;br /&gt;
 | 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Archive:Krypton|Krypton 17.x]]&lt;br /&gt;
 | 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Leia|Leia 18.x]]&lt;br /&gt;
 | 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Matrix|Matrix 19.x]]&lt;br /&gt;
 | 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 19.1.0 (ABI 12.0.0)&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | [[Nexus|Nexus 20.x]]&lt;br /&gt;
 | 3.0.1 (ABI 3.0.0) || 5.16.0 (ABI 5.15.0) || 13.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 20.90.101 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work on Leia 18.x. Same happens for Matrix and Nexus addons. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== optional attribute =====&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;extension&amp;gt; ===&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
==== point attribute ====&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Extension point&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Type declaration&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.font&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Fonts|Additional fonts]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Additional image files&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Language support|Additional languages]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;kodi.resource.uisounds&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[UI sounds add-ons|Additional UI event sounds]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music add-ons|xbmc.addon.audio]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Music add-ons|Music add-ons]] &amp;lt;small&amp;gt;(audio)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Picture add-ons|xbmc.addon.image]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Picture add-ons|Picture add-ons]] &amp;lt;small&amp;gt;(images)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Unofficial repositories]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Video add-ons|xbmc.addon.video]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[:Category:Video add-ons|Video add-ons]] &amp;lt;small&amp;gt;(video)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Skins]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Album scraper add-ons|xbmc.metadata.scraper.albums]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scraping Music#Albums|Album information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Artist scraper add-ons|xbmc.metadata.scraper.artists]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scraping Music#Artists|Artist information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Scraper|xbmc.metadata.scraper.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Scrapers]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Movie scraper add-ons|xbmc.metadata.scraper.movies]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Movie information&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music video scraper add-ons|xbmc.metadata.scraper.musicvideos]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Music videos|Music video information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:TV scraper add-ons|xbmc.metadata.scraper.tvshows]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[TV Shows|TV show information]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Music visualization add-ons|xbmc.player.musicviz]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Music visualization&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Add-on libraries/modules|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Python libraries]] {{Note|These don&#039;t show up in the add-on browser and are purely to satisfy dependencies.}}&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Lyrics add-ons|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Script lyrics|Lyrics]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Add-on libraries/modules|xbmc.python.module]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Python development|Additional python library]], mainly for use by script.module add-ons.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Plugin sources|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[:Category:Music add-ons|Music add-ons]] &amp;lt;small&amp;gt;(audio)&amp;lt;/small&amp;gt; / [[:Category:Picture add-ons|Picture add-ons]] &amp;lt;small&amp;gt;(images)&amp;lt;/small&amp;gt; / [[:Category:Program add-ons|Program add-ons]] &amp;lt;small&amp;gt;(executables)&amp;lt;/small&amp;gt; / [[:Category:Video add-ons|Video add-ons]] &amp;lt;small&amp;gt;(video)&amp;lt;/small&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Script sources|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Weather addons|xbmc.python.weather]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Weather]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Service add-ons|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Service add-ons|Services]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Subtitle add-ons|xbmc.subtitle.module]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Subtitles|Subtitle source]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[:Category:Screensaver add-ons|xbmc.ui.screensaver]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[HOW-TO:Screensaver addon|Screensaver]]&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;[[Web interface|xbmc.webinterface]]&amp;lt;/code&amp;gt;&lt;br /&gt;
 | [[Web interface]]&lt;br /&gt;
|}&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
===== xbmc.python.pluginsource =====&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====== library attribute ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;provides&amp;gt; element ======&lt;br /&gt;
The extension has an additional child element named &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to &amp;lt;kbd&amp;gt;pluginsource&amp;lt;/kbd&amp;gt; extension points):&lt;br /&gt;
{| role=&amp;quot;presentation&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;padding: 0.5em 1em;&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Provides&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Appears in&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Pictures&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Music&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Video&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
 | Programs&lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
 | See Note below&lt;br /&gt;
|}&lt;br /&gt;
{{Note|If the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is not defined, behavior will depend on the structure of your add-on. If it has a single extension point (e.g. a single &#039;&#039;&#039;&amp;lt;code&amp;gt;xbmc.python.script&amp;lt;/code&amp;gt;&#039;&#039;&#039; or &#039;&#039;&#039;&amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;&#039;&#039;&#039;), {{Kodi}} will default to &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt; (thus your add-on will be shown in Programs). If your add-on has multiple extension points and none specifies a &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, different entries for your add-on will be shown in &amp;quot;Programs&amp;quot; (multiple fallbacks to &amp;quot;executable&amp;quot;). If your add-on has multiple extension points and only one (or some) define the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag it really depends on the order of the extension points. If the first extension point (your add-on&#039;s &#039;&#039;&#039;main extension point&#039;&#039;&#039;) defines the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element, {{Kodi}} will assume all the other (empty) extension points provide the same content. Otherwise, it will set the content for all the extension points that specify the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag and fallback all the others to &amp;quot;executable&amp;quot;. &#039;&#039;&#039;At the moment, there is no way to hide an add-on from the interface.&#039;&#039;&#039;|Reminder}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== xbmc.addon.metadata =====&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager. There are several elements that this should contain. Most of these elements are required (except the deprecated tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file.&lt;br /&gt;
&lt;br /&gt;
====== Localization ======&lt;br /&gt;
Language specific elements must always be present in English as a minimum. Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [[wikipedia:Locale (computer software)|locale identifier]]. If omitted, it defaults to en_GB.&lt;br /&gt;
{{Note|Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]}}&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;summary&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;description&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;disclaimer&amp;gt; ======&lt;br /&gt;
One or more &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;news&amp;gt; ======&lt;br /&gt;
{{Note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters); you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-01-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;platform&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A space-delimited combination of these is also possible. Currently available options are:&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;platform&amp;gt;linux osx-x86_64 windows-x86_64&amp;lt;/platform&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;language&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers, etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;license&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.dev/ids/ SPDX License Expression] for the license(s) are preferable to the full license name:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&amp;lt;br /&amp;gt;&lt;br /&gt;
SPDX License Expression: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;vs&amp;lt;br /&amp;gt;&lt;br /&gt;
Full license name: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your add-on includes multiple licenses:&lt;br /&gt;
* Separate license names using &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; (the pipe or vertical bar character) when there is a choice between licenses:&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later | LGPL-2.0-or-later&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Separate license names using &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; (ampersand), or &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; (comma), when multiple licenses exist that cover different parts of the source.&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later &amp;amp; MIT&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;license&amp;gt;GPL-2.0-or-later, MIT&amp;lt;/license&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;forum&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the forum thread URL for this specific add-on. Omit this element if there is no forum thread.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;website&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;website&amp;gt;https://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;source&amp;gt;https://github.com/someone/myaddon&amp;lt;/source&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;email&amp;gt; ======&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element provides the e-mail address of the author, if they wish to do so for this specific add-on. Here are two examples of how you can format it (the second one is harder for spambots to scrape). This can be left blank if you do not wish to make your e-mail address public.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;lifecyclestate&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element will mark the add-on as broken or deprecated in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the add-on installed, so please try to be specific about the underlying reason for the tag. Also, the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tag presupposes that a version bump has been made to the add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate type=&amp;quot;deprecated&amp;quot;&amp;gt;Description why deprecated&amp;lt;/lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At your discretion, it can also be translated into several languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;lifecyclestate type=&amp;quot;broken&amp;quot; lang=&amp;quot;en_GB&amp;quot;&amp;gt;Description why broken&amp;lt;/lifecyclestate&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Valid values for &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
 ! scope=&amp;quot;col&amp;quot; | Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;broken&amp;lt;/code&amp;gt;&lt;br /&gt;
 | To mark add-on as broken and no more usable.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;deprecated&amp;lt;/code&amp;gt;&lt;br /&gt;
 | To mark add-on as deprecated and that it has been replaced by another add-on.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | (Default) To set add-on as normal. This value is not really needed, but made available to be able to declare all possible life paths.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;broken&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v18 Leia and earlier. For Matrix and later, see [[Addon.xml#.3Clifecyclestate.3E|§ &amp;lt;lifecyclestate&amp;gt;]]}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the underlying reason for the tag. Also, the broken tag presupposes that a version bump has been made to the add-on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;assets&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{Note|Kodi v18 Leia and later.}}&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, they will be treated as non-existent/not provided. Of all the above sub-elements, only &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; are mandatory for add-ons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
  &amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
====== &amp;lt;reuselanguageinvoker&amp;gt; ======&lt;br /&gt;
{{Note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; element is a feature introduced with Kodi 18.0 &amp;quot;Leia&amp;quot; that changes the way the Python invoker works - specifically, attempting to reuse the invoker instances as much as possible. As a result, the add-on performance should be greatly improved. However, note that for the element to work, some changes may be required in your add-on. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do &#039;&#039;not&#039;&#039; store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example&#039;&#039;: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the add-on, only setting its value to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin-specific elements ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;effectslowdown&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | A multiplier that is applied to all &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;animation&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; effects lengths in the skin; useful for globally slowing down all animations so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;debugging&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | When set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, it will display on-screen debugging information (XML filename, mouse position and focused control type/name) on top of the skin.&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;res&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 | Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
Kodi can run in many different resolutions, and a skin should try and cater to all of them. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;width&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;height&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4:3 aspect ratios).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
# It first looks in the current &amp;lt;code&amp;gt;screenmode&amp;lt;/code&amp;gt; folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current &amp;lt;code&amp;gt;screenmode&amp;lt;/code&amp;gt; is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;&amp;lt;code&amp;gt;res&amp;lt;/code&amp;gt;&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16:9 aspect ratios, etc., in the &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;defaultresolution&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Skin add-on ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;3.0.10&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.16.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;CC BY-SA 4.0, GNU GENERAL PUBLIC LICENSE Version 2.0&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;https://github.com/xbmc/xbmc/tree/master/addons/skin.estuary&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
      &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
      &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
      &amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&amp;amp;apos;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that {{Red|all tag names are lower case}}. XML tag names are case-sensitive!&lt;br /&gt;
&lt;br /&gt;
=== Script add-on ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.artwork.downloader&amp;quot; name=&amp;quot;Artwork Downloader&amp;quot; version=&amp;quot;12.0.28&amp;quot; provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                version=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xmbc.json&amp;quot;                  version=&amp;quot;6.0.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.addon&amp;quot;                 version=&amp;quot;12.0.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;   version=&amp;quot;3.3.0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot; version=&amp;quot;1.3.0&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;        library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the XBMC forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=114633&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;https://kodi.wiki/view/Add-on:Artwork_Downloader&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;Martijn@kodi.tv&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;https://github.com/XBMC-Addons/script.artwork.downloader&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.28&lt;br /&gt;
        - Don&#039;t set simplejson module to optional&lt;br /&gt;
      v12.0.27&lt;br /&gt;
        - Fix wrong order of listing using votes for artwork from fanart.tv&lt;br /&gt;
      …&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Common errors ==&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
#* .kodi/addons/temp&lt;br /&gt;
#* .kodi/temp/temp&lt;br /&gt;
#* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
== Schema Definition ==&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242937</id>
		<title>Internet video and audio streams</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242937"/>
		<updated>2022-09-07T22:28:59Z</updated>

		<summary type="html">&lt;p&gt;Enen92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Video library]] {{l2| [[Music library]] }} }}&lt;br /&gt;
{{see also|Add-ons}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Various internet video and audio streams can be played back in Kodi as if they were locally stored on your media center by using STRM files. As long as the format and streaming-method (network-protocol) is supported by Kodi, stream can be added. These are basic text files that look like &amp;lt;name&amp;gt;.strm and contain a URL to the internet stream. STRM files can also be added to the [[video library]] and can have cover art, summaries, etc.&lt;br /&gt;
&lt;br /&gt;
Some internet sites may have an add-on available that can also access these media streams, rather than having to manually create STRM files. See &#039;&#039;&#039;[[Add-ons]]&#039;&#039;&#039; for more information on how to find and install add-ons.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Internet Streams ==&lt;br /&gt;
There are two ways this can be done, either via a custom .STRM file or a standard [[playlists]] (.PLS or .M3U).&lt;br /&gt;
&lt;br /&gt;
=== The .STRM file method: ===&lt;br /&gt;
Create a normal text-file and rename the &#039;&#039;&#039;.txt&#039;&#039;&#039; extension to &#039;&#039;&#039;.strm&#039;&#039;&#039; then open it up with a text-editor (like Notepad in Microsoft Windows) and input the the &#039;&#039;&#039;direct URL-link&#039;&#039;&#039; of the stream. &lt;br /&gt;
:This should look like:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;mms://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;rtsp://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Other protocols are supported such as &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/to/somefile.mp3.&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Then save/copy the .strm file to somewhere where you can open it from Kodi, (like on a SMB/SAMBA, XBMS or UPnP share, or just your local hard drive), like you would with any video/audio file. Open it using &#039;&#039;&#039;play&#039;&#039;&#039; in Kodi under Videos (if it is a video stream) or Music (if it is an audio stream). If the video stream does not work then the URL-link could be wrong, or possibly the codec/format or the network-protocol it uses it not supported by Kodi.&lt;br /&gt;
&lt;br /&gt;
If you are creating a list of playlists (for example internal and external Shoutcast streams), save the pls or strm files into a directory accessible by Kodi and add the directory as the source, &#039;&#039;&#039;not&#039;&#039;&#039; the files themselves.&lt;br /&gt;
&lt;br /&gt;
==== Property support: ====&lt;br /&gt;
&lt;br /&gt;
strm files support passing additional properties to affect playback. This is the case for choosing specific [[Category:Input_stream_add-ons|inputstream addons]] or selecting specific protocol based properties. They usually take the form of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:key=value&lt;br /&gt;
protocol://host/path/stream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where key is the property key and value is the property value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: From Kodi v20 you can affect the rtsp transport protocol by defining the rtsp_transport property. For example, to force tcp transport mode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:rtsp_transport=tcp&lt;br /&gt;
rtsp://host:port/mystream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The standard playlists (.PLS or .M3U) method: ===&lt;br /&gt;
Download a supported playlist (like .PLS or .M3U) file from the internet, (these playlist files can often be found on the website of the web-radio stations or TV web-casts websites). For example stream.pls or something else, (you can rename it to whatever you want but keep the same extension). Then save/copy the file to somewhere where you can open it from Kodi, like you would with any video/audio file. You should be able to play the file in Kodi by selecting it ether from Videos -&amp;gt; Files or from the Music &amp;quot;file mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the video stream does not work then the URL-link could be wrong, or possible the codec/format or the network-protocol it uses it not supported by Kodi. You can check and edit playlists with a normal text-editor (like Notepad in Microsoft Windows) and see what the URLs look like.&lt;br /&gt;
&lt;br /&gt;
== Adding STRM files to the library ==&lt;br /&gt;
You can associate meta-data, such as cover art and summaries, to a .strm file just like normal entries in a library by using an NFO file, just as you would for a normal video file.&lt;br /&gt;
&lt;br /&gt;
{{Updated|19}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Music library]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242936</id>
		<title>Internet video and audio streams</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242936"/>
		<updated>2022-09-07T22:28:10Z</updated>

		<summary type="html">&lt;p&gt;Enen92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Video library]] {{l2| [[Music library]] }} }}&lt;br /&gt;
{{see also|Add-ons}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Various internet video and audio streams can be played back in Kodi as if they were locally stored on your media center by using STRM files. As long as the format and streaming-method (network-protocol) is supported by Kodi, stream can be added. These are basic text files that look like &amp;lt;name&amp;gt;.strm and contain a URL to the internet stream. STRM files can also be added to the [[video library]] and can have cover art, summaries, etc.&lt;br /&gt;
&lt;br /&gt;
Some internet sites may have an add-on available that can also access these media streams, rather than having to manually create STRM files. See &#039;&#039;&#039;[[Add-ons]]&#039;&#039;&#039; for more information on how to find and install add-ons.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Internet Streams ==&lt;br /&gt;
There are two ways this can be done, either via a custom .STRM file or a standard [[playlists]] (.PLS or .M3U).&lt;br /&gt;
&lt;br /&gt;
=== The .STRM file method: ===&lt;br /&gt;
Create a normal text-file and rename the &#039;&#039;&#039;.txt&#039;&#039;&#039; extension to &#039;&#039;&#039;.strm&#039;&#039;&#039; then open it up with a text-editor (like Notepad in Microsoft Windows) and input the the &#039;&#039;&#039;direct URL-link&#039;&#039;&#039; of the stream. &lt;br /&gt;
:This should look like:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;mms://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;rtsp://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Other protocols are supported such as &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/to/somefile.mp3.&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Then save/copy the .strm file to somewhere where you can open it from Kodi, (like on a SMB/SAMBA, XBMS or UPnP share, or just your local hard drive), like you would with any video/audio file. Open it using &#039;&#039;&#039;play&#039;&#039;&#039; in Kodi under Videos (if it is a video stream) or Music (if it is an audio stream). If the video stream does not work then the URL-link could be wrong, or possibly the codec/format or the network-protocol it uses it not supported by Kodi.&lt;br /&gt;
&lt;br /&gt;
If you are creating a list of playlists (for example internal and external Shoutcast streams), save the pls or strm files into a directory accessible by Kodi and add the directory as the source, &#039;&#039;&#039;not&#039;&#039;&#039; the files themselves.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property support: &lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
strm files support passing additional properties to affect playback. This is the case for choosing specific [[Category:Input_stream_add-ons|inputstream addons]] or selecting specific protocol based properties. They usually take the form of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:key=value&lt;br /&gt;
protocol://host/path/stream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where key is the property key and value is the property value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: From Kodi v20 you can affect the rtsp transport protocol by defining the rtsp_transport property. For example, to force tcp transport mode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:rtsp_transport=tcp&lt;br /&gt;
rtsp://host:port/mystream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The standard playlists (.PLS or .M3U) method: ===&lt;br /&gt;
Download a supported playlist (like .PLS or .M3U) file from the internet, (these playlist files can often be found on the website of the web-radio stations or TV web-casts websites). For example stream.pls or something else, (you can rename it to whatever you want but keep the same extension). Then save/copy the file to somewhere where you can open it from Kodi, like you would with any video/audio file. You should be able to play the file in Kodi by selecting it ether from Videos -&amp;gt; Files or from the Music &amp;quot;file mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the video stream does not work then the URL-link could be wrong, or possible the codec/format or the network-protocol it uses it not supported by Kodi. You can check and edit playlists with a normal text-editor (like Notepad in Microsoft Windows) and see what the URLs look like.&lt;br /&gt;
&lt;br /&gt;
== Adding STRM files to the library ==&lt;br /&gt;
You can associate meta-data, such as cover art and summaries, to a .strm file just like normal entries in a library by using an NFO file, just as you would for a normal video file.&lt;br /&gt;
&lt;br /&gt;
{{Updated|19}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Music library]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242935</id>
		<title>Internet video and audio streams</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242935"/>
		<updated>2022-09-07T22:27:39Z</updated>

		<summary type="html">&lt;p&gt;Enen92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Video library]] {{l2| [[Music library]] }} }}&lt;br /&gt;
{{see also|Add-ons}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Various internet video and audio streams can be played back in Kodi as if they were locally stored on your media center by using STRM files. As long as the format and streaming-method (network-protocol) is supported by Kodi, stream can be added. These are basic text files that look like &amp;lt;name&amp;gt;.strm and contain a URL to the internet stream. STRM files can also be added to the [[video library]] and can have cover art, summaries, etc.&lt;br /&gt;
&lt;br /&gt;
Some internet sites may have an add-on available that can also access these media streams, rather than having to manually create STRM files. See &#039;&#039;&#039;[[Add-ons]]&#039;&#039;&#039; for more information on how to find and install add-ons.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Internet Streams ==&lt;br /&gt;
There are two ways this can be done, either via a custom .STRM file or a standard [[playlists]] (.PLS or .M3U).&lt;br /&gt;
&lt;br /&gt;
=== The .STRM file method: ===&lt;br /&gt;
Create a normal text-file and rename the &#039;&#039;&#039;.txt&#039;&#039;&#039; extension to &#039;&#039;&#039;.strm&#039;&#039;&#039; then open it up with a text-editor (like Notepad in Microsoft Windows) and input the the &#039;&#039;&#039;direct URL-link&#039;&#039;&#039; of the stream. &lt;br /&gt;
:This should look like:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;mms://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;rtsp://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Other protocols are supported such as &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/to/somefile.mp3.&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Then save/copy the .strm file to somewhere where you can open it from Kodi, (like on a SMB/SAMBA, XBMS or UPnP share, or just your local hard drive), like you would with any video/audio file. Open it using &#039;&#039;&#039;play&#039;&#039;&#039; in Kodi under Videos (if it is a video stream) or Music (if it is an audio stream). If the video stream does not work then the URL-link could be wrong, or possibly the codec/format or the network-protocol it uses it not supported by Kodi.&lt;br /&gt;
&lt;br /&gt;
If you are creating a list of playlists (for example internal and external Shoutcast streams), save the pls or strm files into a directory accessible by Kodi and add the directory as the source, &#039;&#039;&#039;not&#039;&#039;&#039; the files themselves.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property support: &lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
strm files support passing additional properties to affect playback. This is the case for choosing specific [[Category:Input_stream_add-ons|inputstream addons]] or selecting specific protocol based properties. They usually take the form of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:key=value&lt;br /&gt;
protocol://host/path/stream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where key is the property key and value is the property value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: From Kodi v20 you can affect the rtsp transport protocol by defining the rtsp_transport property. For example, to force tcp transport mode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:rtsp_transport=tcp&lt;br /&gt;
rtsp://host:port/mystream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The standard playlists (.PLS or .M3U) method: ===&lt;br /&gt;
Download a supported playlist (like .PLS or .M3U) file from the internet, (these playlist files can often be found on the website of the web-radio stations or TV web-casts websites). For example stream.pls or something else, (you can rename it to whatever you want but keep the same extension). Then save/copy the file to somewhere where you can open it from Kodi, like you would with any video/audio file. You should be able to play the file in Kodi by selecting it ether from Videos -&amp;gt; Files or from the Music &amp;quot;file mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the video stream does not work then the URL-link could be wrong, or possible the codec/format or the network-protocol it uses it not supported by Kodi. You can check and edit playlists with a normal text-editor (like Notepad in Microsoft Windows) and see what the URLs look like.&lt;br /&gt;
&lt;br /&gt;
== Adding STRM files to the library ==&lt;br /&gt;
You can associate meta-data, such as cover art and summaries, to a .strm file just like normal entries in a library by using an NFO file, just as you would for a normal video file.&lt;br /&gt;
&lt;br /&gt;
{{Matrix updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Music library]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242934</id>
		<title>Internet video and audio streams</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Internet_video_and_audio_streams&amp;diff=242934"/>
		<updated>2022-09-07T22:27:18Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Property support and v20 addition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Video library]] {{l2| [[Music library]] }} }}&lt;br /&gt;
{{see also|Add-ons}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Various internet video and audio streams can be played back in Kodi as if they were locally stored on your media center by using STRM files. As long as the format and streaming-method (network-protocol) is supported by Kodi, stream can be added. These are basic text files that look like &amp;lt;name&amp;gt;.strm and contain a URL to the internet stream. STRM files can also be added to the [[video library]] and can have cover art, summaries, etc.&lt;br /&gt;
&lt;br /&gt;
Some internet sites may have an add-on available that can also access these media streams, rather than having to manually create STRM files. See &#039;&#039;&#039;[[Add-ons]]&#039;&#039;&#039; for more information on how to find and install add-ons.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Internet Streams ==&lt;br /&gt;
There are two ways this can be done, either via a custom .STRM file or a standard [[playlists]] (.PLS or .M3U).&lt;br /&gt;
&lt;br /&gt;
=== The .STRM file method: ===&lt;br /&gt;
Create a normal text-file and rename the &#039;&#039;&#039;.txt&#039;&#039;&#039; extension to &#039;&#039;&#039;.strm&#039;&#039;&#039; then open it up with a text-editor (like Notepad in Microsoft Windows) and input the the &#039;&#039;&#039;direct URL-link&#039;&#039;&#039; of the stream. &lt;br /&gt;
:This should look like:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;mms://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:or&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;rtsp://host/path/stream&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Other protocols are supported such as &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/path/to/somefile.mp3.&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
Then save/copy the .strm file to somewhere where you can open it from Kodi, (like on a SMB/SAMBA, XBMS or UPnP share, or just your local hard drive), like you would with any video/audio file. Open it using &#039;&#039;&#039;play&#039;&#039;&#039; in Kodi under Videos (if it is a video stream) or Music (if it is an audio stream). If the video stream does not work then the URL-link could be wrong, or possibly the codec/format or the network-protocol it uses it not supported by Kodi.&lt;br /&gt;
&lt;br /&gt;
If you are creating a list of playlists (for example internal and external Shoutcast streams), save the pls or strm files into a directory accessible by Kodi and add the directory as the source, &#039;&#039;&#039;not&#039;&#039;&#039; the files themselves.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Property support: &lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
strm files support passing additional properties to affect playback. This is the case for choosing specific [[Category:Input_stream_add-ons|inputstream addons]] or selecting specific protocol based properties. They usually take the form of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:key=value&lt;br /&gt;
protocol://host/path/stream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where key is the property key and value is the property value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: From Kodi v20 you can affect the rtsp transport protocol by defining the rtsp_transport property. For example, to force tcp transport mode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
#KODIPROP:rtsp_transport=tcp&lt;br /&gt;
rtsp://host:port/mystream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The standard playlists (.PLS or .M3U) method: ===&lt;br /&gt;
Download a supported playlist (like .PLS or .M3U) file from the internet, (these playlist files can often be found on the website of the web-radio stations or TV web-casts websites). For example stream.pls or something else, (you can rename it to whatever you want but keep the same extension). Then save/copy the file to somewhere where you can open it from Kodi, like you would with any video/audio file. You should be able to play the file in Kodi by selecting it ether from Videos -&amp;gt; Files or from the Music &amp;quot;file mode&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the video stream does not work then the URL-link could be wrong, or possible the codec/format or the network-protocol it uses it not supported by Kodi. You can check and edit playlists with a normal text-editor (like Notepad in Microsoft Windows) and see what the URLs look like.&lt;br /&gt;
&lt;br /&gt;
== Adding STRM files to the library ==&lt;br /&gt;
You can associate meta-data, such as cover art and summaries, to a .strm file just like normal entries in a library by using an NFO file, just as you would for a normal video file.&lt;br /&gt;
&lt;br /&gt;
{{Isengard updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Music library]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241628</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241628"/>
		<updated>2022-02-23T21:32:14Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Note about removal of old dharma compatible structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;sha256&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such definition was supported until Kodi Nexus (v20):&lt;br /&gt;
&lt;br /&gt;
{{note|This was removed in Kodi v20}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
  &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
  &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
  &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Hashes is used to control whether to transfer addon zips or not. Since kodi might already have a copy of the package stored locally, it will first issue an head request to the remote server and look for the &amp;quot;content-{hashesvalue}&amp;quot; HTTP header. It&#039;ll compare the provided hash (in base64) to the one stored in the database for the addon package. It will only transfer the package if the values differ.&lt;br /&gt;
&lt;br /&gt;
Supported values:&lt;br /&gt;
* &#039;&#039;&#039;sha256&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sha512&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sha1&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;md5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For historical reasons the values &amp;quot;false&amp;quot; and &amp;quot;true&amp;quot; are also supported. If &amp;quot;true&amp;quot; is supplied, kodi will default to md5. It&#039;s highly recommended &#039;&#039;&#039;not to use&#039;&#039;&#039; md5 as an option as a security countermeasure. It is somehow broken and only guards against unintentional data corruption.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241626</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241626"/>
		<updated>2022-02-23T11:25:28Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* hashes */  documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;sha256&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
  &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
  &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
  &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Hashes is used to control whether to transfer addon zips or not. Since kodi might already have a copy of the package stored locally, it will first issue an head request to the remote server and look for the &amp;quot;content-{hashesvalue}&amp;quot; HTTP header. It&#039;ll compare the provided hash (in base64) to the one stored in the database for the addon package. It will only transfer the package if the values differ.&lt;br /&gt;
&lt;br /&gt;
Supported values:&lt;br /&gt;
* &#039;&#039;&#039;sha256&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sha512&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sha1&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;md5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For historical reasons the values &amp;quot;false&amp;quot; and &amp;quot;true&amp;quot; are also supported. If &amp;quot;true&amp;quot; is supplied, kodi will default to md5. It&#039;s highly recommended &#039;&#039;&#039;not to use&#039;&#039;&#039; md5 as an option as a security countermeasure. It is somehow broken and only guards against unintentional data corruption.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241625</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241625"/>
		<updated>2022-02-23T11:07:32Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Repository Add-on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;sha256&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
  &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
  &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
  &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241624</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241624"/>
		<updated>2022-02-23T11:06:59Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Repository Add-on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
  &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
  &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
  &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241623</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241623"/>
		<updated>2022-02-23T11:05:50Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Repository Add-on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dir&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/dir&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
    &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241622</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241622"/>
		<updated>2022-02-23T11:01:37Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add {{updated|19}} label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dir&amp;gt;&lt;br /&gt;
      &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
    &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241621</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241621"/>
		<updated>2022-02-23T11:01:16Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Update For kodi matrix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dir&amp;gt;&lt;br /&gt;
      &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dir block wraps the main repository directory information. You can have multiple dirs defined in the extension point. This can be useful to provide different directories depending on the kodi version as exemplified below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot; name=&amp;quot;Inputstream Adaptive Testing Repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dir maxversion=&amp;quot;18.9.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/leia/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/leia/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/leia/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
    &amp;lt;dir minversion=&amp;quot;19.0.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;info compressed=&amp;quot;false&amp;quot;&amp;gt;https://example.com/matrix/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
      &amp;lt;checksum&amp;gt;https://example.com/matrix/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
      &amp;lt;datadir zip=&amp;quot;true&amp;quot;&amp;gt;https://example.com/matrix/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
      &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
    &amp;lt;/dir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, the first directory will only be served to Kodi Leia while the second will only be served to the Matrix version of Kodi.&lt;br /&gt;
There&#039;s also another, simpler way to define a repository by adding all the dir items in the root of the extension element. Such alternative is not recommended and will probably be removed in a future kodi version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
    &amp;lt;hashes&amp;gt;false&amp;lt;/hashes&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dir ===&lt;br /&gt;
The dir element wraps all the other repository information elements such as info, checksum, datadir or hashes. It supports the additional attributes:&lt;br /&gt;
* &#039;&#039;&#039;minversion&#039;&#039;&#039;: the minimum kodi version that supports this directory&lt;br /&gt;
* &#039;&#039;&#039;maxversion&#039;&#039;&#039;: the maximum kodi version that supports this directory&lt;br /&gt;
&lt;br /&gt;
{{note|both can be ommited}}&lt;br /&gt;
&lt;br /&gt;
{{note|minversion and maxversion where introduced in Kodi Matrix (v19).}}&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
=== hashes ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241620</id>
		<title>Add-on repositories</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_repositories&amp;diff=241620"/>
		<updated>2022-02-23T10:31:43Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Move dharma context to the bottom, it&amp;#039;s really just a curiosity by now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodi includes an interface to browse remote repositories where add-ons can be retrieved. The model is similar to the way many current Linux distributions work, whereby there is a &amp;quot;main&amp;quot; repository that is the default, and additional ones may be added by the user. The [[Official_add-on_repository|Official Add-on Repository]] is included with Kodi by default and is maintained by the Kodi team.&lt;br /&gt;
The repository functionality was first introduced in the Dharma version of Kodi (XBMC at the time)&lt;br /&gt;
&lt;br /&gt;
After you have created your repository, consider adding it to the [[Unofficial add-on repositories]] list.&lt;br /&gt;
&lt;br /&gt;
== Ingredients for a Repository ==&lt;br /&gt;
Repositories were created with the idea that they should be simple and easy enough to setup for anyone interested. The basic requirements are as follows:&lt;br /&gt;
&lt;br /&gt;
* An HTTP server. Any should work.&lt;br /&gt;
* Some add-ons.&lt;br /&gt;
* A master xml file. This file contains metadata about all available add-ons.&lt;br /&gt;
* A checksum of the above file.&lt;br /&gt;
* A repository add-on for distribution. This allows you to share your repository with others.&lt;br /&gt;
&lt;br /&gt;
== Directory Structure ==&lt;br /&gt;
  addon.id&lt;br /&gt;
     addon.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
  addon2.id&lt;br /&gt;
     addon2.id-x.y.z.zip&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
In addition, each add-on directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.&lt;br /&gt;
&lt;br /&gt;
* addon.id should be the same as the addon&#039;s id, which is expected to be unique.&lt;br /&gt;
* x.y.z is the addon&#039;s version, the same should be listed in its version attribute.&lt;br /&gt;
&lt;br /&gt;
== Addons.xml ==&lt;br /&gt;
Kodi expects to fetch a master xml file that contains the information for each add-on inside the repo. This file is named addons.xml - it can be placed external to the main repository of add-on files if you wish. This file merely encapsulates the other addon.xml files in an &amp;lt;addons&amp;gt; tag. See below for the basic structure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addons&amp;gt;&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon1&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;addon&lt;br /&gt;
    id=&amp;quot;sample.addon2&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/addons&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository Add-on ==&lt;br /&gt;
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you&#039;ll need to [[Add-on_development|create an add-on]] and install it. The repository addon extends the xbmc.addon.repository extension point, so in addition to the general XML structure, you&#039;ll need an &#039;extension&#039; block as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.repository&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;https://example.com/addons/addons.xml&amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;checksum&amp;gt;https://example.com/addons/addons.xml.md5&amp;lt;/checksum&amp;gt;&lt;br /&gt;
    &amp;lt;datadir&amp;gt;https://example.com/addons/&amp;lt;/datadir&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== info ===&lt;br /&gt;
URL to the main xml file.&lt;br /&gt;
&lt;br /&gt;
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it &#039;&#039;may&#039;&#039; be pre-gzipped, in which case it must have a .gz ending ending.&lt;br /&gt;
&lt;br /&gt;
Note: Kodi v15 and older do not support pre-gzipped files and must specify the attribute compressed=&amp;quot;true&amp;quot; to request gzip content encoding.&lt;br /&gt;
&lt;br /&gt;
=== checksum ===&lt;br /&gt;
A text file that identifies the content of &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Before fetching the full info file, Kodi will fetch the &amp;quot;checksum&amp;quot; and compare it to the previously fetched one. If changed, the info file will be fetched.  &lt;br /&gt;
&lt;br /&gt;
Note: for historical reason it is called &amp;quot;checksum&amp;quot;, but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.&lt;br /&gt;
&lt;br /&gt;
=== datadir ===&lt;br /&gt;
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). The location of the zip files should be /datadir/addon.id/addon.id-x.y.z.zip.&lt;br /&gt;
If the &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; attribute (Note: this feature has been dropped in v17 Krypton) is set to false, then Kodi assumes that each addon.id directory simply contains the addon itself, i.e. /datadir/addon.id/files for addon. Online repositories should always have zip set to true, both for efficiency of download and for the protection that .zip offers by way of verifying the download (i.e. can we unzip it).&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
We &#039;&#039;&#039;highly&#039;&#039;&#039; recommend you to enable SSL on your HTTP server and only use https URIs for your repository. Otherwise, you expose yourself and users of your repository to a great risk as they can easily be served malicious add-ons. Kodi writes a warning to the log file if you do not use https URIs starting with Leia.&lt;br /&gt;
&lt;br /&gt;
== Repository Tools ==&lt;br /&gt;
&lt;br /&gt;
Once the individual add-ons have been created, the repository itself can be put together by a script.&lt;br /&gt;
The script will package up your add-ons from your source folders or it can fetch the sources directly from a Git repository.&lt;br /&gt;
* [https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py Download the &amp;lt;tt&amp;gt;create_repository.py&amp;lt;/tt&amp;gt; script from GitHub with this link] or with this command:&lt;br /&gt;
 wget https://raw.githubusercontent.com/chadparry/kodi-repository.chad.parry.org/master/tools/create_repository.py &amp;amp;&amp;amp; chmod +x create_repository.py&lt;br /&gt;
* Run the script, and pass it the location of your add-ons. The location can be a local folder, a local ZIP file, or a Git repository URL.&lt;br /&gt;
For example, if you have one zipped add-on and one add-on folder, then the following command will create the add-on repository in the current directory:&lt;br /&gt;
 ./create_repository.py ~/my.spectacular.project.zip ~/development.project/&lt;br /&gt;
* The &amp;lt;tt&amp;gt;--datadir&amp;lt;/tt&amp;gt; option can specify a different directory for the repository. The &amp;lt;tt&amp;gt;--compressed&amp;lt;/tt&amp;gt; flag uses gzip to pre-compress the addons.xml file. Also, a Git URL can have an optional &amp;lt;tt&amp;gt;#&#039;&#039;branch&#039;&#039;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;#&#039;&#039;tag&#039;&#039;&amp;lt;/tt&amp;gt; and optional &amp;lt;tt&amp;gt;:&#039;&#039;path&#039;&#039;&amp;lt;/tt&amp;gt; at the end to designate the add-on&#039;s location within the repository.&lt;br /&gt;
For example, if you are publishing two add-ons that are both stored within separate Git repositories, then the following command would create a compressed repository:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;./create_repository.py --datadir=~/html/software/kodi --compressed \&lt;br /&gt;
     https://github.com/chadparry/kodi-repository.chad.parry.org.git#release-1.0.0:repository.chad.parry.org \&lt;br /&gt;
     https://github.com/chadparry/kodi-plugin.program.remote.control.browser.git:plugin.program.remote.control.browser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Every time you update an add-on, run the script again.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Window_Structure&amp;diff=241489</id>
		<title>Window Structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Window_Structure&amp;diff=241489"/>
		<updated>2022-01-30T10:12:31Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Changes for v20&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
==About the Window XML Files==&lt;br /&gt;
Each window in an Kodi skin is represented by a single .xml file. [[Window IDs|See here for a list of the standard windows and links to their .xml files.]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important thing to remember is that each window has a unique identifying name. This is how Kodi identifies the window from within the source code. &lt;br /&gt;
The window names are all listed in the Appendix I: List of Windows.&lt;br /&gt;
&lt;br /&gt;
Each .xml file has the same basic structure – it starts with some heading information that pertains to the window as a whole, and then contains a &amp;lt;controls&amp;gt; block within which all the controls that describe the window are defined.&lt;br /&gt;
Many of the controls within each window should have a unique id&#039;s, unless they&#039;re just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely.&lt;br /&gt;
&lt;br /&gt;
== Window Header ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;window&amp;gt;&lt;br /&gt;
  &amp;lt;onload&amp;gt;RunScript(script.foobar)&amp;lt;/onload&amp;gt;&lt;br /&gt;
  &amp;lt;onunload&amp;gt;SetProperty(foo,bar)&amp;lt;/onunload&amp;gt;&lt;br /&gt;
  &amp;lt;defaultcontrol always=&amp;quot;false&amp;quot;&amp;gt;2&amp;lt;/defaultcontrol&amp;gt;&lt;br /&gt;
  &amp;lt;menucontrol&amp;gt;9000&amp;lt;/menucontrol&amp;gt;&lt;br /&gt;
  &amp;lt;backgroundcolor&amp;gt;0xff00ff00&amp;lt;/backgroundcolor&amp;gt;&lt;br /&gt;
  &amp;lt;views&amp;gt;50,51,509,510&amp;lt;/views&amp;gt;&lt;br /&gt;
  &amp;lt;visible&amp;gt;Window.IsActive(Home)&amp;lt;/visible&amp;gt;&lt;br /&gt;
  &amp;lt;animation effect=&amp;quot;fade&amp;quot; time=&amp;quot;100&amp;quot;&amp;gt;WindowOpen&amp;lt;/animation&amp;gt;&lt;br /&gt;
  &amp;lt;animation effect=&amp;quot;slide&amp;quot; end=&amp;quot;0,576&amp;quot; time=&amp;quot;100&amp;quot;&amp;gt;WindowClose&amp;lt;/animation&amp;gt;&lt;br /&gt;
  &amp;lt;zorder&amp;gt;1&amp;lt;/zorder&amp;gt;&lt;br /&gt;
  &amp;lt;coordinates&amp;gt;&lt;br /&gt;
    &amp;lt;left&amp;gt;40&amp;lt;/left&amp;gt;&lt;br /&gt;
    &amp;lt;top&amp;gt;50&amp;lt;/top&amp;gt;&lt;br /&gt;
    &amp;lt;origin x=&amp;quot;100&amp;quot; y=&amp;quot;50&amp;quot;&amp;gt;Window.IsActive(Home)&amp;lt;/origin&amp;gt;&lt;br /&gt;
  &amp;lt;/coordinates&amp;gt;&lt;br /&gt;
  &amp;lt;previouswindow&amp;gt;MyVideos&amp;lt;/previouswindow&amp;gt;&lt;br /&gt;
  &amp;lt;controls&amp;gt;&lt;br /&gt;
    &amp;lt;control&amp;gt;&lt;br /&gt;
    &amp;lt;/control&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/controls&amp;gt;&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One thing to note is that all tag names are lower case. &#039;&#039;&#039;XML tag names are case sensitive!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;The header contains the following tags:&lt;br /&gt;
&lt;br /&gt;
; onload&lt;br /&gt;
: Optional: the [[List_of_built-in_functions|build-in function]] to execute when the window opens&lt;br /&gt;
; onunload&lt;br /&gt;
: Optional: the [[List_of_built-in_functions|build-in function]] to execute when the window closes&lt;br /&gt;
; defaultcontrol&lt;br /&gt;
: This specifies the default control of the window. This is the id of the control that will receive focus when the window is first opened. Note that most Kodi windows save the current focus when you leave the window, and will return to the last focused item when you return to a window. This behaviour can be stopped by specifying the attribute always=&amp;quot;true&amp;quot;.&lt;br /&gt;
; menucontrol&lt;br /&gt;
: This specifies the control that will be focused when the users presses the &#039;menu&#039; / &#039;m&#039; button.&lt;br /&gt;
; backgroundcolor&lt;br /&gt;
: Specifies whether the window needs clearing prior to rendering, and if so which colour to use. Defaults to clearing to black. Set to 0 (or 0x00000000) to have no clearing at all. If your skin always renders opaque textures over the entire screen (eg using a backdrop image or multiple backdrop images) then setting the background color to 0 is the most optimal value and may improve performance significantly on slow GPUs.&lt;br /&gt;
; visible&lt;br /&gt;
: Specifies the conditions under which a dialog will be visible. Kodi evaluates this at render time, and shows or hides a dialog depending on the evaluation of this tag. [[Conditional_visibility|See here for more details.]] &#039;&#039;&#039;Applies only to type=&amp;quot;dialog&amp;quot; windows.&#039;&#039;&#039;. By default if a dialog visibility depends on visible condition it will be set as Modeless. A modeless dialog won&#039;t be able to catch input as any keystroke/action will be sent to the underlying window. Since v20 you can override this behaviour by setting &#039;&#039;&#039;modality=&amp;quot;modal&amp;quot;&#039;&#039;&#039; on the root element of the window/dialog XML definition.&lt;br /&gt;
; animation&lt;br /&gt;
: Specifies the animation effect to perform when opening or closing the window. [[Animating_your_skin|See here for more details.]]&lt;br /&gt;
; zorder&lt;br /&gt;
: This specifies the “depth” that the window should be drawn at. Windows with higher zorder are drawn on top of windows with lower z-order. All dialogs by default have zorder 1, so if you have a particular dialog that you want underneath all others, give it a zorder of 0. (Note that the normal render order is: The base window, then the overlays (music + video), then dialogs. &amp;lt;zorder&amp;gt; only effects the rendering of the dialogs.&lt;br /&gt;
; coordinates&lt;br /&gt;
: This block is used to specify how Kodi should compute the coordinates of all controls.&lt;br /&gt;
; left&lt;br /&gt;
: Sets the horizontal “origin” position of the window. Defaults to 0 if not present.&lt;br /&gt;
; top&lt;br /&gt;
: Sets the vertical “origin” position of the window. Defaults to 0 if not present.&lt;br /&gt;
; origin&lt;br /&gt;
: Sets a conditional origin for the window. The window will display at (x,y) whenever the origin condition is met. You can have as many origin tags as you like – they are evaluated in the order present in the file, and the first one for which the condition is met wins. If none of the origin conditions are met, we fall back to the &amp;lt;left&amp;gt; and &amp;lt;top&amp;gt; tags.&lt;br /&gt;
; previouswindow&lt;br /&gt;
: This can be used to specify a window to force Kodi to go to on press of the Back button. Normally Kodi keeps a “window stack” of previous windows to handle this. This tag allows you to override this behaviour. The value is the name of the window.&lt;br /&gt;
; views&lt;br /&gt;
: This tag lets you use view id&#039;s beyond 50 to 59 it also lets you set the order in which they cycle with the change view button in the skin. Only useful in My&amp;lt;Foo&amp;gt;.xml windows.&lt;br /&gt;
; controls&lt;br /&gt;
: This is the block the defines all controls that will appear on this window.&lt;br /&gt;
&lt;br /&gt;
=== The Different Types of Controls ===&lt;br /&gt;
&lt;br /&gt;
Kodi supports many different types of controls.&lt;br /&gt;
&lt;br /&gt;
[[Controls|Click here for the control types and what they all do.]]&lt;br /&gt;
&lt;br /&gt;
Some of these controls are required on specific windows, as they&#039;re necessary for that window to perform it&#039;s duty, or, the contents of the control are only valid on a particular window. The mandatory controls for each window are listed [[List of Built In Controls|here]]. While the controls are mandatory, you can ofcourse move them about and change their appearance within the windows to your hearts content!&lt;br /&gt;
&lt;br /&gt;
=== Adding Extra Windows ===&lt;br /&gt;
&lt;br /&gt;
All of the windows in the [[Window IDs|window list]] are defined within the executable of Kodi itself, as most of them have a specific purpose. However, the skinner may add extra windows as and when they are needed or wanted. The only restriction to this is that only controls that do not require specific source code to operate can be used. This is not too much of a restriction though, as many skinners have found out.&lt;br /&gt;
&lt;br /&gt;
To add an extra window, all you need to do is design up the window&#039;s .xml file in the usual way, assign it an &amp;lt;id&amp;gt; within the 1100–1199 range (see [[Window IDs|window list]]), and then name the file customN.xml, where N is a number or name. You can have as many as you like, as long as they have unique &amp;lt;id&amp;gt;&#039;s, and are named differently. Then just define the type of window you want, the coordinate system and so on, add the controls and setup the navigation. To activate your window, you can do it by adding a button control elsewhere in the skin, or you can get it to popup on a press of the controller or remote via keymap.xml and so on. Basically you just need to run ActivateWindow(id) from a suitable place.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=241236</id>
		<title>Advancedsettings.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=241236"/>
		<updated>2022-01-11T17:24:36Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* handlemounting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}{{mininav|[[Settings]]|page=advancedsettings.xml}}&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;The advancedsettings.xml file does not exist by default. You have to create it first!&#039;&#039;&#039;}} }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;The [[advancedsettings.xml]] file, which does not exist by default, can be created by a user in their &#039;&#039;&#039;[[Userdata|userdata folder]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This file is used for advanced settings and options that do not have GUI controls inside of {{kodi}}. Some settings are experimental or very rarely set, so they can only be used via the advancedsettings.xml file. The file is simply a plain text file and can be edited by various text editors, so long as the name is &amp;quot;advancedsettings.xml&amp;quot;. These advanced settings can be used to tweak various things such as episode naming patterns, special network ports, special behaviors, and more.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following page will describe the structure of the advancedsettings.xml file and the various individual settings.&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
# All XML tags must be lowercase. The start and end of the advancedsettings.xml file must have the &amp;lt;advancedsettings&amp;gt; and &amp;lt;/advancedsettings&amp;gt; tags.&lt;br /&gt;
# Kodi will only read the advancedsettings.xml file when it starts up. If you make changes while it is running then you must restart Kodi.&lt;br /&gt;
# For some Windows versions, Kodi has two &amp;lt;code&amp;gt;\userdata\&amp;lt;/code&amp;gt; folders. The correct one to put the advancedsettings.xml file in is not the one in Program Files, but in &amp;lt;code&amp;gt;%appdata%\Kodi\userdata\.&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
The layout of &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;setting&amp;quot; gives the name of the setting, and &amp;quot;value&amp;quot; gives its value.&lt;br /&gt;
&lt;br /&gt;
A list of the available &amp;quot;setting&amp;quot; strings and their values is given below.&lt;br /&gt;
&lt;br /&gt;
= List of available settings =&lt;br /&gt;
List of available settings that are recognised in the advancedsettings.xml file &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/blob/master/xbmc/settings/AdvancedSettings.cpp&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommended: Use the table of contents or the search function in your browser to locate items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== loglevel ===&lt;br /&gt;
{{Anchor|.3Cloglevel.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
Sets the logging level used to log errors and information. The &amp;quot;hide&amp;quot; attribute is optional. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;loglevel hide=&amp;quot;attribute&amp;quot;&amp;gt;options&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Attribute&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;true&#039;&#039;&#039; &lt;br /&gt;
| Hides the &amp;quot;enable debugging&amp;quot; setting in the Settings page. (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
| Allows &amp;quot;enable debugging&amp;quot; setting to switch between &#039;&#039;&#039;0&#039;&#039;&#039; and &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Option&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;-1&#039;&#039;&#039;&lt;br /&gt;
| No logging, suppresses all log output &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Normal logging, only logging errors (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Debug logging with freemem, fps and cpu usage (no on screen)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 (with on screen display)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;3&#039;&#039;&#039; &lt;br /&gt;
| Same as 2 + full smb logging (no on screen display)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Example &lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
! Example 1:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel&amp;gt;2&amp;lt;/loglevel&amp;gt;  &lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Example 2:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel hide=&amp;quot;true&amp;quot;&amp;gt;2&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The setting is persistent through shutdown and restarts.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If debugging is enabled in the GUI, loglevel will be set to &#039;&#039;&#039;2&#039;&#039;&#039;. This will over-ride the &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; setting. You must disable the GUI Setting before adding the entry to &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
:&#039;&#039;{{see also|Log_file|label 1=Debug Log}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== jsonrpc ===&lt;br /&gt;
{{Anchor|.3Cjsonrpc.3E}}&lt;br /&gt;
To make it easier for developers using the [[JSON-RPC_API]] API in their (third party) applications to debug during development the json output of Kodi can be prettified by setting &#039;&#039;&#039;compactoutput&#039;&#039;&#039; to &#039;&#039;&#039;false&#039;&#039;&#039;. Default json output mode is a compact print which does not contain any unnecessary whitespaces and therefore is difficult to read for humans.&lt;br /&gt;
Furthermore using the &#039;&#039;&#039;tcpport&#039;&#039;&#039; setting it is possible to change the default TCP port used by Kodi for JSON RPC (which is 9090) to any other valid port.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jsonrpc&amp;gt;&lt;br /&gt;
    &amp;lt;compactoutput&amp;gt;false&amp;lt;/compactoutput&amp;gt;&lt;br /&gt;
    &amp;lt;tcpport&amp;gt;9999&amp;lt;/tcpport&amp;gt;&lt;br /&gt;
&amp;lt;/jsonrpc&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audio/video playback settings ==&lt;br /&gt;
&lt;br /&gt;
=== skiploopfilter ===&lt;br /&gt;
{{anchor|.3Cskiploopfilter.3E}}&lt;br /&gt;
The amount of the loop filter to skip on h.264 decoding.  This can help the performance of slower machines when decoding h264 content.  Values, in decreasing CPU usage (and decreasing quality)&lt;br /&gt;
* -16 None&lt;br /&gt;
* 0 Skip only empty frames (default)&lt;br /&gt;
* 8 Skip non-reference frames&lt;br /&gt;
* 16 Skip bi-dir frames&lt;br /&gt;
* 32 Skip all non-key frames&lt;br /&gt;
* 48 Skip all frames&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;skiploopfilter&amp;gt;8&amp;lt;/skiploopfilter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== video ===&lt;br /&gt;
{{anchor|.3Cvideo.3E}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;video&amp;gt; section also includes the following child-tags, which have their own sections:&lt;br /&gt;
*[[#cleandatetime]]&lt;br /&gt;
*[[#cleanstrings]]&lt;br /&gt;
*[[#excludefromscan]]&lt;br /&gt;
*[[#excludefromlisting]]&lt;br /&gt;
*[[#excludetvshowsfromscan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{note|Some tags that have a &amp;quot;third-level&amp;quot; and are grouped together are highlighted in color.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Parent tag that all other child tags need to be placed inside of. Do not use more than one &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; tag, but instead place all other child-tags within a single &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; set.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subsdelayrange&amp;gt;10&amp;lt;/subsdelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for subtitles, in seconds.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;maxtempo&amp;gt;2.1&amp;lt;/maxtempo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow further increase of playback speed over the default of 1.5&amp;lt;br&amp;gt;&lt;br /&gt;
maxtempo must be in the range of 1.5 to 2.1 &amp;lt;br&amp;gt;&lt;br /&gt;
Be aware of the limitations of your platform / hardware as not all are capable of the increased maxtempo &amp;lt;ref&amp;gt;https://forum.kodi.tv/showthread.php?tid=10023&amp;amp;pid=2795069#pid2795069&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;audiodelayrange&amp;gt;10&amp;lt;/audiodelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for audio/video sync, in seconds.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to use time based or percentage based seeking. {{small see also|Skip steps}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforward&amp;gt;2&amp;lt;/percentseekforward&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackward&amp;gt;-2&amp;lt;/percentseekbackward&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a short seek.  Defaults to 2 (2%) and -2 (2%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforwardbig&amp;gt;10&amp;lt;/percentseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackwardbig&amp;gt;-10&amp;lt;/percentseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a long seek.  Defaults to 10 (10%) and -10 (10%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fullscreenonmoviestart&amp;gt;true&amp;lt;/fullscreenonmoviestart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to go to fullscreen or not when starting a movie. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;VideoPlayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Set the default video player: VideoPlayer or an external player. See &#039;&#039;&#039;[[External players]]&#039;&#039;&#039; for more info.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be added to library.  It is possible to add multiple &amp;lt;code&amp;gt;&amp;lt;regexp&amp;gt;&amp;lt;/code&amp;gt; tags to match multiple patterns&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be displayed in files view.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;90&amp;lt;/playcountminimumpercent&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Minimum percentage that has to be played before it is marked as watched. Set to 101 to never auto-mark items as watched. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignoresecondsatstart&amp;gt;180&amp;lt;/ignoresecondsatstart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Number of seconds to ignore at video start after which a resume point is created. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignorepercentatend&amp;gt;8&amp;lt;/ignorepercentatend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Percentage of video to ignore at the end. If you stop watching the video here no resume point is created. Set to 101 to never save a resume point. The video is already marked as watched at 90%, see above. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;vdpauscaling&amp;gt;true&amp;lt;/vdpauscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Scales with vdpau instead of opengl and turns on its HQ scaler when available, enabling this might slow down rendering and cause framedrops especially on ION systems, this setting requires a vdpau feature set C GPU.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;enablehighqualityhwscalers&amp;gt;true&amp;lt;/enablehighqualityhwscalers&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow turning on the spline36 and lanczos3 shader (for GL builds).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;dxvaallowhqscaling&amp;gt;false&amp;lt;/dxvaallowhqscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Enables high quality video upscaling for Windows.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegdeinterlacing&amp;gt;linblenddeint&amp;lt;/ppffmpegdeinterlacing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the deinterlacing options passed to libpostproc.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegpostprocessing&amp;gt;ha:128:7,va,dr&amp;lt;/ppffmpegpostprocessing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the post processing options passed to libpostproc when &#039;Video post-processing&#039; is activated in GUI Videos-Settings-Playback.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;autoscalemaxfps&amp;gt;30&amp;lt;/autoscalemaxfps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| When scaling method is set to auto, bilinear is chosen when the fps is higher than this limit, the default is 30.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;adjustrefreshrate&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | Settings for when &amp;quot;Adjust refreshrate to match video fps&amp;quot; is enabled in the video playback GUI settings.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fps&amp;gt;23.976&amp;lt;/fps&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;60.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &amp;quot;Adjust refreshrate to match video fps&amp;quot; will try to select the best refreshrate for the video fps but it doesn&#039;t always get it right, for example it might switch to an unsupported refreshrate. You can add overrides here to switch to a certain refreshrate based on video fps. It&#039;s possible to add as many overrides as you need.  Overrides are processed in order, if the first one doesn&#039;t match the fps or no refreshrates match that override, it will try the next one until no overrides are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fps&#039;&#039;&#039; - if the fps is between 23.966 and 23.986&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - switch to the first found refreshrate that is between 59.99 and 60.01&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmin&amp;gt;29.96&amp;lt;/fpsmin&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmax&amp;gt;30.01&amp;lt;/fpsmax&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;59.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;61.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;fpsmin&#039;&#039;&#039; / &#039;&#039;&#039;fpsmin&#039;&#039;&#039; - You can also specify the fps range yourself.&lt;br /&gt;
* &#039;&#039;&#039;refreshmin&#039;&#039;&#039; / &#039;&#039;&#039;refreshmax&#039;&#039;&#039; - Same for the refreshrate&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;50.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; If none of the overrides match, or none of the refreshrates match any of the fps matching overrides, it will choose a fallback refreshrate. Fallbacks are process in order, if the first fallback doesn&#039;t match any refreshrate, it will try the next one until no fallbacks are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - Switch to the first found refreshrate that is between 49.99 and 50.01.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;49.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;51.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; You can also specify the range for the fallback yourself.&lt;br /&gt;
&lt;br /&gt;
If none of the overrides match the video fps, or no refreshrates match any of the fps matching overrides, and no fallbacks are specified or no refreshrates match any fallbacks, it will automatically choose the best refreshrate (same as having no overrides and fallbacks).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/adjustrefreshrate&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;checkdxvacompatibility&amp;gt;value&amp;lt;/checkdxvacompatibility&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Advanced setting not present: let Kodi autodetect cards that support H.264 profile &amp;gt; L4.1. Set value to false to enable DXVA no matter what. Set value to true if Kodi doesn&#039;t autodetect that the graphics card doesn&#039;t support &amp;gt; L4.1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;useocclusionquery&amp;gt;-1&amp;lt;/useocclusionquery&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Use an occlusion query when capturing videoframes, -1 means auto detect, 0 means disabled, 1 means enabled, the default is -1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fpsdetect&amp;gt;1&amp;lt;/fpsdetect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| FPS detection for video playback&lt;br /&gt;
* 0 = trust codec fps&lt;br /&gt;
* 1 = recalculate from video timestamps with uniform spacing&lt;br /&gt;
* 2 = recalculate from video timestamps always&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot;| Start of &#039;&#039;&#039;latency&#039;&#039;&#039; tags. Display latency (video lag). Latency is given in msecs.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;delay&amp;gt;0&amp;lt;/delay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Global default display latency.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Override latency for given display (not video) refresh rates. When Kodi is in windowed mode, override is ignored. Multiple overrides are allowed.&lt;br /&gt;
&lt;br /&gt;
Syntax of an override entry:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;refresh&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;, &amp;lt;max&amp;gt; refresh rate range, OR&lt;br /&gt;
  &amp;lt;rate&amp;gt; exact refresh rate&lt;br /&gt;
  &amp;lt;delay&amp;gt; display latency for the given refresh rate&lt;br /&gt;
&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;23&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;24&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;125&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 125 msec latency at 23-24 Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;rate&amp;gt;50&amp;lt;/rate&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;50&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 50 msec latency at 50 (+/-0.01) Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregex3d&amp;gt;[-. _]3d[-. _]&amp;lt;/stereoscopicregex3d&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregexsbs&amp;gt;[-. _]h?sbs[-. _]&amp;lt;/stereoscopicregexsbs&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregextab&amp;gt;[-. _]h?tab[-. _]&amp;lt;/stereoscopicregextab&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Filename triggers for 3D (stereoscopic) mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;assfixedworks&amp;gt;false&amp;lt;/assfixedworks&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Position behavior of ass subtitiles when setting &amp;quot;subtitle position on screen&amp;quot; set to &amp;quot;fixed&amp;quot;. True to show at the fixed position set in video calibration. False to show at the bottom of video (default). {{note|Removed in Kodi v20.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subtitleverticalmargin&amp;gt;120&amp;lt;/subtitleverticalmargin&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allows to customise the vertical margin of subtitles, which will be applied to each type of subtitle position in subtitle settings. {{note|Available in Kodi v20 and above.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== audio ===&lt;br /&gt;
{{anchor|.3Caudio.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;audio&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of headroom Kodi should use above the maximum volume level, in decibels.  Defaults to 0, valid values 0, 6, 12. --&amp;gt;&lt;br /&gt;
  &amp;lt;headroom&amp;gt;0&amp;lt;/headroom&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Default audio player: paplayer or videoplayer --&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;paplayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be added to library. --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of gain (dB) to be applied to AC3 streams that have been mixed-down to 2 channels. Default is 12.0. Valid values are: -96.0 to 96.0. --&amp;gt;&lt;br /&gt;
  &amp;lt;ac3downmixgain&amp;gt;12.0&amp;lt;/ac3downmixgain&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Whether to use time based or percentage based seeking. --&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekfowardbig&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek backward in seconds when doing a long seek back.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackward&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Minimum percentage that has to be played before it is considered for incrementing in the Top 100 database view, or for last.fm submittal --&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;99&amp;lt;/playcountminimumpercent&amp;gt; &lt;br /&gt;
  &amp;lt;!-- Whether to use Dynamic Range Compression (DRC) on AC3 streams. 1.0 is &amp;quot;full&amp;quot; compression, as defined by the audio track&#039;s metadata, which is recommended for &amp;quot;basic&amp;quot; sound systems such as the internal speakers on a TV. 0.0 is no compression at all, which is recommended for people with nice multi-speaker sound systems. -1.0 (default) defaults to whatever ffmpeg uses, which is currently the same as 1.0. This has no effect if passthrough is enabled for AC3. --&amp;gt;&lt;br /&gt;
  &amp;lt;applydrc&amp;gt;-1.0&amp;lt;/applydrc&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterhold&amp;gt;0.025&amp;lt;/limiterhold&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterrelease&amp;gt;0.1&amp;lt;/limiterrelease&amp;gt; &lt;br /&gt;
&amp;lt;/audio&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== forcedswaptime ===&lt;br /&gt;
{{anchor|.3Cforcedswaptime.3E}}&lt;br /&gt;
Use to force a backbuffer-&amp;gt;frontbuffer swap while vsync is enabled. Set to the time (in ms) to allow for the swap (e.g. &amp;lt;forcedswaptime&amp;gt;1&amp;lt;/forcedswaptime&amp;gt; is typical).  &lt;br /&gt;
&lt;br /&gt;
Default: Off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edl ===&lt;br /&gt;
{{anchor|.3Cedl.3E}}&lt;br /&gt;
{{main|Edit_decision_list}}&lt;br /&gt;
Commercial break detection not as good you think it could be? Are some commercial breaks in a series of adverts not being skipped? Are some parts being skipped that are clearly not commercials? Does the end of the previous recording still show? The following advanced settings can be used to better identify full commercial break sequences, remove incorrectly flagged commercial breaks, and have playback start at the actual beginning of the recording.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;edl&amp;gt;&lt;br /&gt;
  &amp;lt;!-- if true, commercial breaks will be merged according to the remaining options. --&amp;gt;&lt;br /&gt;
  &amp;lt;mergeshortcommbreaks&amp;gt;false&amp;lt;/mergeshortcommbreaks&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Commercial breaks won&#039;t be merged if the total length of the commercial break would be greater than this (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreaklength&amp;gt;250&amp;lt;/maxcommbreaklength&amp;gt;&lt;br /&gt;
  &amp;lt;!-- After merging, commercial breaks shorter than this will be removed (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;mincommbreaklength&amp;gt;90&amp;lt;/mincommbreaklength&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Commercial breaks that are further apart than this won&#039;t be merged (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreakgap&amp;gt;120&amp;lt;/maxcommbreakgap&amp;gt;&lt;br /&gt;
  &amp;lt;!-- How long to wait before automatically skipping when the start of a commercial break reached (seconds). Possible values: from -60 to 60--&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowait&amp;gt;0&amp;lt;/commbreakautowait&amp;gt;&lt;br /&gt;
  &amp;lt;!-- How long to rewind after automatically skipping to the end of the commercial break (seconds). Possible values: from -60 to 60 --&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowind&amp;gt;0&amp;lt;/commbreakautowind&amp;gt;&lt;br /&gt;
&amp;lt;/edl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PVR &amp;amp; Live TV ==&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
Settings available for PVR, EPG and Live TV. Edit Decision List settings are located in the previous section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pvr ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
  &amp;lt;timecorrection&amp;gt;0&amp;lt;/timecorrection&amp;gt;  &amp;lt;!-- Correct all times (epg tags, timer tags, recording tags) by this amount of minutes. --&amp;gt;&lt;br /&gt;
  &amp;lt;infotoggleinterval&amp;gt;3000&amp;lt;/infotoggleinterval&amp;gt;  &amp;lt;!-- If there is more than one pvr gui info item available (e.g. multiple recordings active at the same time), use this toggle delay in milliseconds. --&amp;gt;&lt;br /&gt;
  &amp;lt;channeliconsautoscan&amp;gt;true&amp;lt;/channeliconsautoscan&amp;gt; &amp;lt;!-- Automatically scan user defined folder for channel icons when loading internal channel groups. --&amp;gt;&lt;br /&gt;
  &amp;lt;autoscaniconsuserset&amp;gt;false&amp;lt;/autoscaniconsuserset&amp;gt; &amp;lt;!-- Mark channel icons populated by auto scan as &amp;quot;user set&amp;quot;. --&amp;gt;&lt;br /&gt;
  &amp;lt;numericchannelswitchtimeout&amp;gt;1000&amp;lt;/numericchannelswitchtimeout&amp;gt; &amp;lt;!-- Time in ms before the numeric dialog auto closes when confirmchannelswitch is disabled. --&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pvrrecordings ====&lt;br /&gt;
In v19 and later, allows users to modify sort type and order of pvr recordings. &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/18605&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Note- These settings are child tags to the &#039;&#039;&amp;lt;pvr&amp;gt;&#039;&#039; tag in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
   &amp;lt;pvrrecordings&amp;gt;&lt;br /&gt;
      &amp;lt;sortmethod&amp;gt;2&amp;lt;/sortmethod&amp;gt;  &amp;lt;!-- 1=Name 2=Date 3=Size 4=File --&amp;gt;&lt;br /&gt;
      &amp;lt;sortorder&amp;gt;2&amp;lt;/sortorder&amp;gt;    &amp;lt;!-- 1=Ascending 2=Descending --&amp;gt;&lt;br /&gt;
   &amp;lt;/pvrrecordings&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== epg ===&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;epg&amp;gt;&lt;br /&gt;
  &amp;lt;updatecheckinterval&amp;gt;300&amp;lt;/updatecheckinterval&amp;gt;  &amp;lt;!-- Check every X seconds, if EPG data need to be updated. This does not mean that every X seconds an EPG update is actually triggered, it&#039;s just the interval how often to check whether an update should be triggered. If this value is greater than GUI setting &#039;epg.epgupdate&#039; value, then EPG updates will done with the value specified for &#039;updatecheckinterval&#039;, effectively overriding the GUI setting&#039;s value. --&amp;gt;&lt;br /&gt;
  &amp;lt;updateemptytagsinterval&amp;gt;60&amp;lt;/updateemptytagsinterval&amp;gt;  &amp;lt;!-- If a TV channel has no EPG data, try to obtain data for that channel every X seconds. This overrides the GUI setting &#039;epg.epgupdate&#039; value, but only for channels without EPG data. If this value is less than &#039;updatecheckinterval&#039; value, then data update will be done with the interval specified by &#039;updatecheckinterval&#039;. Example 1: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 60 =&amp;gt; trigger an EPG update for every channel without EPG data every 5 minutes and trigger an EPG update for every channel with EPG data every 2 hours. Example 2: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 3600 =&amp;gt; trigger an EPG update for every channel without EPG data every 2 hours and trigger an EPG update for every channel with EPG data every 1 hour. --&amp;gt;&lt;br /&gt;
  &amp;lt;cleanupinterval&amp;gt;900&amp;lt;/cleanupinterval&amp;gt;  &amp;lt;!-- remove old entries from the EPG every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;activetagcheckinterval&amp;gt;60&amp;lt;/activetagcheckinterval&amp;gt;  &amp;lt;!-- check for updated active tags every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;retryinterruptedupdateinterval&amp;gt;60&amp;lt;/retryinterruptedupdateinterval&amp;gt;  &amp;lt;!-- retry an interrupted EPG update after X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;displayupdatepopup&amp;gt;true&amp;lt;/displayupdatepopup&amp;gt;  &amp;lt;!-- display a progress popup while updating EPG data from clients --&amp;gt;&lt;br /&gt;
  &amp;lt;displayincrementalupdatepopup&amp;gt;false&amp;lt;/displayincrementalupdatepopup&amp;gt;  &amp;lt;!-- also display a progress popup while doing incremental EPG updates --&amp;gt;&lt;br /&gt;
&amp;lt;/epg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video library settings ==&lt;br /&gt;
&lt;br /&gt;
=== videoextensions ===&lt;br /&gt;
{{anchor|.3Cvideoextensions.3E}}&amp;lt;section begin=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Video windows.&lt;br /&gt;
&lt;br /&gt;
Default extensions for VIDEOS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.m4v .3g2 .3gp .nsv .tp .ts .ty .strm .pls .rm .rmvb .mpd .m3u .m3u8 .ifo .mov .qt .divx .xvid&lt;br /&gt;
.bivx .vob .nrg .img .iso .udf .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .mpg .mpeg .mp4&lt;br /&gt;
.mkv .mk3d .avc .vp3 .svq3 .nuv .viv .dv .fli .flv .001 .wpl .xspf .zip .vdr .dvr-ms .xsp .mts&lt;br /&gt;
.m2t .m2ts .evo .ogv .sdp .avs .rec .url .pxml .vc1 .h264 .rcv .rss .mpls .mpl .webm .bdmv&lt;br /&gt;
.bdm .wtv .trp .f4v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;videoextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/videoextensions&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== discstubextensions ===&lt;br /&gt;
{{main|Media stubs}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
The default filename extension for Disc Stubs is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
.disc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Using the following tags, it is possible to &amp;lt;tt&amp;gt;&amp;lt;add&amp;gt;&amp;lt;/tt&amp;gt; additional or &amp;lt;tt&amp;gt;&amp;lt;remove&amp;gt;&amp;lt;/tt&amp;gt; existing disc stub extensions to better suit your requirements.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;discstubextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.disk|.stub&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.disc&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/discstubextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== languagecodes ===&lt;br /&gt;
{{anchor|.3Clanguagecodes.3E}}&lt;br /&gt;
Translation table for subtitle and audio names.  Contains entries of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;alt&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Alternate&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== moviestacking ===&lt;br /&gt;
{{anchor|.3Cmoviestacking.3E}}&amp;lt;section begin=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is used by the [[Naming_video_files/Movies#Split_Video_Files|file stacking]] algorithm to combine multi-part files and contains a list of &amp;quot;&#039;&#039;[[RegEx_tutorial|regular expressions]]&#039;&#039;&amp;quot;. For stacking videos that are contained in folders, such as VIDEO_TS folders, see &#039;&#039;&#039;[[advancedsettings.xml#folderstacking|&amp;lt;folderstacking&amp;gt;]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As of v9.11, video stacking regular expressions &#039;&#039;&#039;must&#039;&#039;&#039; contain exactly four (4) capture expressions. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[0-9]+)(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;a-d&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- movienamea-xvid.avi, movienameb-xvid.avi --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;append=&amp;quot;yes&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the end.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;append&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This expression will match movename1-xvid.avi, moviename2-xvid.avi.&lt;br /&gt;
         Be warned that it will likely stack sequels in a flat directory layout,&lt;br /&gt;
         so it is only recommend in a dir-per-video layout. --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[0-9])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the beginning. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;prepend&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(Title)(Volume)(Ignore)(Extension)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no argument is supplied, or the argument &amp;lt;tt&amp;gt;append=&amp;quot;no&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions are overwritten by the user specified ones.&lt;br /&gt;
&amp;lt;section end=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== folderstacking ===&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is similar to &#039;&#039;&#039;[[advancedsettings.xml#moviestacking|&amp;lt;moviestacking&amp;gt;]]&#039;&#039;&#039;, but is used for videos that are contained in folders that use the folder names to stack, such as VIDEO_TS folders (DVD rips that are not in ISO format).&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folderstacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;((cd|dvd|dis[ck])[0-9]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/folderstacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cleandatetime ===&lt;br /&gt;
{{anchor|.3Ccleandatetime.3E}}&lt;br /&gt;
Matches a year number in a string using a &#039;&#039;[[RegEx_tutorial|Regular Expression]]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Default expression:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleandatetime&amp;gt;(.*[^ _\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\,\.\(\)\[\]\-]|[^0-9]$)?&amp;lt;/cleandatetime&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* The string found before will be used as basis string getting cleaned by the cleanstrings expressions. &lt;br /&gt;
:* By default date formats like MM:YY are ignored.&lt;br /&gt;
&lt;br /&gt;
=== cleanstrings ===&lt;br /&gt;
{{anchor|.3Ccleanstrings.3E}}&lt;br /&gt;
Clean unwanted characters from filenames or folders by using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;. Please note that everything right of the match (at the end of the file name) is removed, so if you would have a file named &#039;&#039;Super movie.mp4&#039;&#039; and would add &amp;lt;tt&amp;gt;&amp;lt;regexp&amp;gt; &amp;lt;/regexp&amp;gt;&amp;lt;/tt&amp;gt; (only a space), the only thing that would be left is &#039;&#039;Super&#039;&#039;, which is probably not what you want.&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L188 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Default expressions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleanstrings&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;[ _\,\.\(\)\[\]\-](aka|ac3|dts|custom|dc|remastered|divx|divx5|dsr|dsrip|dutch|dvd|dvd5|dvd9|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multisubs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|r3|r5|bd5|se|svcd|swedish|german|read.nfo|nfofix|unrated|extended|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|3d|hrhd|hrhdtv|hddvd|bluray|x264|h264|xvid|xvidvd|xxx|www.www|cd[1-9]|\[.*\])([ _\,\.\(\)\[\]\-]|$)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;(\[.*\])&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/cleanstrings&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== tvshowmatching ===&lt;br /&gt;
{{anchor|.3Ctvshowmatching.3E}}&lt;br /&gt;
Matches the season and episode numbers in file paths by using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L232 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvshowmatching&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;s([0-9]+)[ ._x-]*e([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02, S01xE02 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.ep01, foo.EP_01 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.yyyy.mm.dd.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.mm.dd.yyyy.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.1x09* or just /1x09* --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.103*, 103 foo --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- Part I, Pt.VI --&amp;gt;&lt;br /&gt;
&amp;lt;/tvshowmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
:* Paths are converted to lower case before matching.&lt;br /&gt;
:* Examples of matching regexps for certain filenames can be found on the [[Naming_video_files/TV_shows|TV shows]] page.&lt;br /&gt;
&lt;br /&gt;
:* For multi-episode matching to work, there needs to be a third set of parentheses &#039;()&#039; at the end, this part is fed back into the regexp engine.&lt;br /&gt;
&lt;br /&gt;
:* A [https://forum.kodi.tv/showthread.php?tid=51614 forum thread] has a discussion of pre-made regex lists to match common names. These might improve Kodi&#039;s ability to match TV show names in some situations, at the risk of additional false positives.&lt;br /&gt;
&lt;br /&gt;
==== Filenames without Season ====&lt;br /&gt;
There are two methods to add episodes without a season in their file path. Both ways will force the season to &#039;1&#039; by default, so that you can use&lt;br /&gt;
the &#039;Use Absolute Ordering (Single Season)&#039; setting from the TheTvDb.com scraper.&lt;br /&gt;
&lt;br /&gt;
; Simple Method &#039;&#039;(XBMC v9.11 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Use only one pair of parentheses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]([0-9]+)&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
; Advanced Method &#039;&#039;(XBMC v10.05 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Supports multi-episode files without season&lt;br /&gt;
: Use an empty pair of parentheses for the season&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Specifying Default Season &#039;&#039;(XBMC v12.0 onwards and Kodi)&#039;&#039;&lt;br /&gt;
It is possible to set the default season for specific regular expressions by setting the &#039;defaultseason&#039; attribute.&lt;br /&gt;
: Works with both the simple method and advanced method&lt;br /&gt;
: If not used, the season will be set to &#039;1&#039;&lt;br /&gt;
: Useful for setting specials to season &#039;0&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp defaultseason=&amp;quot;0&amp;quot;&amp;gt;[/\._ \-]X()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;regexp defaultseason=&amp;quot;1&amp;quot;&amp;gt;[/\._ \-]E()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== tvmultipartmatching ===&lt;br /&gt;
{{anchor|.3Ctvmultipartmatching.3E}}&lt;br /&gt;
Matches a multipart episode number based on a previously identified episode file, using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvmultipartmatching&amp;gt;^[-_ex]+([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)&amp;lt;/tvmultipartmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* Text matching is compared case-insensitive.&lt;br /&gt;
:* Specifying this option &#039;&#039;&#039;replaces&#039;&#039;&#039; the default value&lt;br /&gt;
&lt;br /&gt;
=== excludefromscan ===&lt;br /&gt;
{{anchor|.3Cexcludefromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a library scan (except tvshows) using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;. This can be for both Video or Audio sections of &amp;lt;tt&amp;gt;advancedsettings.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;-trailer&amp;lt;/regexp&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== excludefromlisting ===&lt;br /&gt;
{{anchor|.3Cexcludefromlisting.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;  &lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== excludetvshowsfromscan ===&lt;br /&gt;
{{anchor|.3Cexcludetvshowsfromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a tvshow library scan using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludetvshowsfromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludetvshowsfromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== trailermatching ===&lt;br /&gt;
{{anchor|.3Ctrailermatching.3E}}&lt;br /&gt;
Contains &amp;quot;&#039;&#039;[[RegEx_tutorial|Regular Expression]]&#039;&#039;&amp;quot; syntax (commonly referred to as &amp;quot;&#039;&#039;[[RegEx_tutorial|RegEx]]&#039;&#039;&amp;quot; or &amp;quot;&#039;&#039;[[RegEx_tutorial|RegExp]]&#039;&#039;&amp;quot;) to match the locally stored trailers to movies in the library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;trailermatching&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This regexp will match moviename_Trailer.avi --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;(.*?)(_Trailer)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/trailermatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videolibrary ===&lt;br /&gt;
{{anchor|.3Cvideolibrary.3E}}&lt;br /&gt;
Options specific to the Video Library&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;false&amp;lt;/allitemsonbottom&amp;gt;  &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;  &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;usefasthash&amp;gt;true&amp;lt;/usefasthash&amp;gt; &amp;lt;!-- defaults to true. Set to false in order to skip hashing based on the folders modification time. --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt; &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;  &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* --&amp;gt;&lt;br /&gt;
    &amp;lt;exportautothumbs&amp;gt;false&amp;lt;/exportautothumbs&amp;gt;  &amp;lt;!-- export auto-generated thumbs. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importwatchedstate&amp;gt;false&amp;lt;/importwatchedstate&amp;gt;  &amp;lt;!-- import previously exported playdate and playcount from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importresumepoint&amp;gt;false&amp;lt;/importresumepoint&amp;gt;  &amp;lt;!-- import previously exported resume point from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt; &amp;lt;!-- 0 results in using the current datetime when adding a video;&lt;br /&gt;
                                  1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                  2 results in using the newer datetime of the file&#039;s mtime and ctime --&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Extra artwork ====&lt;br /&gt;
&lt;br /&gt;
Applies to Kodi v18 only.&lt;br /&gt;
&lt;br /&gt;
Configuration to expand the artwork automatically added by Kodi to media items in the library, either from local files or online scrapers.&lt;br /&gt;
&lt;br /&gt;
The original basic artwork types are still hardcoded so they don&#039;t need to be configured here (and can&#039;t be removed). &amp;quot;poster&amp;quot; and &amp;quot;fanart&amp;quot; for movies, movie sets, TV shows, seasons, and music videos; &amp;quot;banner&amp;quot; for TV shows and seasons; and &amp;quot;thumb&amp;quot; for episodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... combine with &amp;quot;videolibrary&amp;quot; settings above --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV shows --&amp;gt;&lt;br /&gt;
    &amp;lt;tvshowextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;characterart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/tvshowextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV show seasons --&amp;gt;&lt;br /&gt;
    &amp;lt;tvseasonextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/tvseasonextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV show episodes --&amp;gt;&lt;br /&gt;
    &amp;lt;episodeextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;fanart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/episodeextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for movies --&amp;gt;&lt;br /&gt;
    &amp;lt;movieextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/movieextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for movie sets / collections --&amp;gt;&lt;br /&gt;
    &amp;lt;moviesetextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/moviesetextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for musicvideos --&amp;gt;&lt;br /&gt;
    &amp;lt;musicvideoextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/musicvideoextraart&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videoscanner ===&lt;br /&gt;
{{anchor|.3Cvideoscanner.3E}}&lt;br /&gt;
Options specific to the Video scanner&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videoscanner&amp;gt;&lt;br /&gt;
    &amp;lt;ignoreerrors&amp;gt;true&amp;lt;/ignoreerrors&amp;gt; &amp;lt;!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don&#039;t have to keep hitting &amp;quot;yes&amp;quot; to keep scanning.--&amp;gt;&lt;br /&gt;
  &amp;lt;/videoscanner&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Library artwork ==&lt;br /&gt;
&lt;br /&gt;
{{note|Using &amp;lt;imageres&amp;gt;9999&amp;lt;/imageres&amp;gt; and &amp;lt;fanartres&amp;gt;9999&amp;lt;/fanartres&amp;gt; will allow caching artwork at original size.}}&lt;br /&gt;
&lt;br /&gt;
=== imageres ===&lt;br /&gt;
{{anchor|.3Cimageres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;imageres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached artwork]] (other than fanart / 16:9 images) should be resized to in pixels. The width is automatically calculated as being 16/9*height.  The image will be resized to fit within this size. e.g. an image that is 2000x500 will be cached at size 1280x320. An image that is 500x800 will be cached at size 450x720 using the default value of 720.&amp;lt;section end=&amp;quot;imageres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imageres&amp;gt;720&amp;lt;/imageres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fanartres ===&lt;br /&gt;
{{anchor|.3Cfanartres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;fanartres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached fanart]] should be resized to in pixels. The width is automatically calculated as being 16/9*height. Only images that are exactly 16x9 and equal to or greater than this resolution will be cached at this size - all other images will be cached using &amp;lt;imageres&amp;gt;. The default value is 1080.&amp;lt;section end=&amp;quot;fanartres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fanartres&amp;gt;1080&amp;lt;/fanartres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagescalingalgorithm ===&lt;br /&gt;
Specify the image scaling algorithm for image resizing when [[Artwork/Cache#Texture optimization| caching artwork]] to the local texture cache.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagescalingalgorithm&amp;gt;bicubic&amp;lt;/imagescalingalgorithm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/xbmc/xbmc/blob/1a8753d5cd93890dc6a9f9d4b2ce8848066ea5d0/xbmc/pictures/PictureScalingAlgorithm.cpp#L32-L43 Available image scaling algorithms]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
fast_bilinear&lt;br /&gt;
bilinear&lt;br /&gt;
bicubic&lt;br /&gt;
experimental&lt;br /&gt;
nearest_neighbor&lt;br /&gt;
averaging_area&lt;br /&gt;
bicublin&lt;br /&gt;
gaussian&lt;br /&gt;
sinc&lt;br /&gt;
lanczos&lt;br /&gt;
bicubic_spline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video and music library settings ==&lt;br /&gt;
&lt;br /&gt;
=== playlistasfolders ===&lt;br /&gt;
{{anchor|.3Cplaylistasfolders.3E}}&lt;br /&gt;
In the recent releases, playlists are treated as folders. Selecting a playlist no longer plays it, but opens it, as if it were a folder.&lt;br /&gt;
&lt;br /&gt;
Set to false to revert to the previous behaviour. When you select a playlist, its content is added to the list of elements to be played.&lt;br /&gt;
&lt;br /&gt;
:{{note|This setting will not affect smart playlists, they will always show as folders.}}&lt;br /&gt;
&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlistasfolders&amp;gt;true&amp;lt;/playlistasfolders&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlistretries ===&lt;br /&gt;
{{anchor|.3Cplaylistretries.3E}}&lt;br /&gt;
The number of retries attempted if a source is offline. With this control you can alter the number of consecutive failed items before a playlist fails.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;playlistretries&amp;gt;100&amp;lt;/playlistretries&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlisttimeout ===&lt;br /&gt;
{{anchor|.3Cplaylisttimeout.3E}}&lt;br /&gt;
The timeout, in seconds, before item failure.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlisttimeout&amp;gt;20&amp;lt;/playlisttimeout&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sorttokens ===&lt;br /&gt;
Allows you to specify additional tokens that will be ignored at the start of lines during sorting.&lt;br /&gt;
{{note|Sort tokens are case sensitive.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
  &amp;lt;token&amp;gt;the&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example &amp;quot;the &amp;quot;, &amp;quot;the.&amp;quot; and &amp;quot;the_&amp;quot; will be ignored at the start of titles or names when sorting items, in both video and music libraries. A separator can also be specified, for example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
    &amp;lt;token separators=&amp;quot;&#039;&amp;quot;&amp;gt;L&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In that case the value L&#039;, as in French movie name &#039;&#039;L&#039;argent&#039;&#039;, will be ignored and the item listed under &amp;quot;A&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== musicdatabase/videodatabase ===&lt;br /&gt;
{{anchor|.3Cmusicdatabase.3E/.3Cvideodatabase.3E|musicdatabase/videodatabase|database tags music/video/tv/epg/adsp}}&lt;br /&gt;
{{main|MySQL}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
Allows advanced customization of the default database settings for music, video, TV, EPG, and ADSP databases.&lt;br /&gt;
&lt;br /&gt;
:{{note| &#039;&#039;&#039;It is HIGHLY recommended that you not attempt to place an sqlite3 database outside of kodi&#039;s path.  sqlite3 contains no filesystem abstraction, so this will plain break on any non-local (as far as Kodi is concerned) paths.  Use this for mysql only.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parent tags:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
{{MySQL warning}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child tags: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;type&amp;gt;&lt;br /&gt;
: &#039;&#039;Required&#039;&#039; - Can be either &amp;quot;sqlite3&amp;quot; or &amp;quot;mysql&amp;quot; (default: sqlite3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;host&amp;gt;&lt;br /&gt;
:&#039;&#039;Required&#039;&#039; - &lt;br /&gt;
* sqlite3: defines the relative path to the database file (eg. /usr/local/kodi/databases).&lt;br /&gt;
* mysql: defines the host of the mysql socket (eg. localhost, 192.168.0.1, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;port&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the port of the mysql socket (default: 3306)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;name&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
:by default &amp;quot;MyVideos&amp;quot;+DB number will be used.&lt;br /&gt;
* sqlite3: defines the name of the database file to read from, excluding the &amp;quot;.db&amp;quot; extension.&lt;br /&gt;
* mysql: defines the name of the database to use&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;user&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;pass&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the password for the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;compression&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - Defaults to false. Set to &amp;quot;true&amp;quot; to enable MySQL compression protocol. Performance benefit is going to be largely dependent on the network bandwidth, latency between database and clients and on the size of the result sets. [https://github.com/xbmc/xbmc/pull/6484]&lt;br /&gt;
: {{Note|Slower clients (such as the RPi and others) won&#039;t benefit from it as the zlib de-compression overhead is higher than the actual compression savings}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;key&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;cert&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ca&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;capath&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ciphers&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1) Configure a database for MySQL.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;videodatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;192.168.0.10&amp;lt;/host&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;kodi_video&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
  &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
&amp;lt;/videodatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Configure a database for an sqlite database.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicdatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;sqlite3&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;/usr/local/share/kodi/databases&amp;lt;/host&amp;gt;&lt;br /&gt;
&amp;lt;/musicdatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== externalplayer ===&lt;br /&gt;
{{anchor|.3Cexternalplayer.3E}}&lt;br /&gt;
{{see|External players}}&lt;br /&gt;
&lt;br /&gt;
== Music settings ==&lt;br /&gt;
&lt;br /&gt;
=== musicextensions ===&lt;br /&gt;
{{anchor|.3Cmusicextensions.3E}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
Default extensions for MUSIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.nsv .m4a .flac .aac .strm .pls .rm .rma .mpa .wav .wma .ogg .mp3 .mp2 .m3u .gdm .imf .m15 .sfx&lt;br /&gt;
.uni .ac3 .dts .cue .aif .aiff .wpl .xspf .ape .mac .mpc .mp+ .mpp .shn .zip .wv .dsp .xsp .xwav&lt;br /&gt;
.waa .wvs .wam .gcm .idsp .mpdsp .mss .spt .rsd .sap .cmc .cmr .dmc .mpt .mpd .rmt .tmc .tm8&lt;br /&gt;
.tm2 .oga .url .pxml .tta .rss .wtv .mka .tak .opus .dff .dsf .m4b .dtshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to add or remove extensions for Music, using the following XML tags. Useful if you keep, say, FLAC and mp3 versions of music in the same folder. The &amp;lt;remove&amp;gt; tag can be used to remove mp3 from being listed in the library, leaving only the higher quality FLAC being displayed.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;musicextensions&amp;gt;&lt;br /&gt;
   &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
   &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
 &amp;lt;/musicextensions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cddbaddress ===&lt;br /&gt;
{{anchor|.3Ccddbaddress.3E}}&lt;br /&gt;
The address of the online CDDb database.  You may set this to another freedb mirror if there is a more suitable one.  &lt;br /&gt;
&lt;br /&gt;
Default: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;gt;&lt;br /&gt;
&amp;lt;cddbaddress&amp;gt;freedb.freedb.org&amp;lt;/cddbaddress&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== songinfoduration ===&lt;br /&gt;
{{anchor|.3Csonginfoduration.3E}}&lt;br /&gt;
This controls how long the song information will remain onscreen when the song changes during visualisations.  The valid range is &amp;quot;1&amp;quot; to &amp;quot;Indefinite (0)&amp;quot;, in seconds.  This does not include the duration of any transition effects. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;songinfoduration&amp;gt;10&amp;lt;/songinfoduration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musicfilenamefilters ===&lt;br /&gt;
{{anchor|.3Cmusicfilenamefilters.3E}}&lt;br /&gt;
Contains filters to match music information (artist, title etc.) from a tag-less music filename.  The first &amp;lt;filter&amp;gt; to match completely is used. Matched items include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%A - Artist&lt;br /&gt;
%T - Title&lt;br /&gt;
%B - Album&lt;br /&gt;
%N - Track number&lt;br /&gt;
%S - Part of set (disk number)&lt;br /&gt;
%D - Duration&lt;br /&gt;
%G - Genre&lt;br /&gt;
%Y - Year&lt;br /&gt;
%R - Rating&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicfilenamefilters&amp;gt;&lt;br /&gt;
  &amp;lt;filter&amp;gt;%A - %T&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/musicfilenamefilters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musiclibrary ===&lt;br /&gt;
Options specific to the Music Library&lt;br /&gt;
&amp;lt;section begin=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;musiclibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;true&amp;lt;/allitemsonbottom&amp;gt;       &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;            &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt;     &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;albumformat&amp;gt;%B - %Y&amp;lt;/albumformat&amp;gt;              &amp;lt;!-- album label template, default is &amp;quot;%B&amp;quot; --&amp;gt;&lt;br /&gt;
    &amp;lt;prioritiseapetags&amp;gt;true&amp;lt;/prioritiseapetags&amp;gt;     &amp;lt;!-- prioritise APEv2 tags over ID3v1/2 tags, default is false. --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;              &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* See Note below--&amp;gt;&lt;br /&gt;
    &amp;lt;artistseparators&amp;gt;                              &amp;lt;!-- separator used for multiple artists. Note that spaces are used for some separators. See Note below--&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;;&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;:&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;|&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; feat. &amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; ft. &amp;lt;/separator&amp;gt;&lt;br /&gt;
    &amp;lt;/artistseparators&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt;                        &amp;lt;!--0 results in using the current datetime when adding a song;&lt;br /&gt;
                                                        1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                                        2 results in using the newer datetime of the file&#039;s mtime and ctime   --&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- New for v19 and later releases --&amp;gt;&lt;br /&gt;
    &amp;lt;useisodates&amp;gt;false&amp;lt;/useisodates&amp;gt;                &amp;lt;!-- When &amp;quot;true&amp;quot; all dates displayed in the music library will be in ISO 8601 format (YYYY-MM-DD or part thereof).&lt;br /&gt;
                                                         Defaults to &amp;quot;false&amp;quot; (use localized dates) --&amp;gt;  &lt;br /&gt;
&amp;lt;/musiclibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Changing the &amp;lt;itemseparator&amp;gt; or &amp;lt;artistseparators&amp;gt; will only affect newly added items. A rescan won&#039;t change the existing ones. Remove the Source(s) or delete the Music DB and rebuild. This process should be made easier from v18 and up using &amp;lt;promptfulltagscan&amp;gt;}}&amp;lt;section end=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos settings ==&lt;br /&gt;
&lt;br /&gt;
=== pictureextensions ===&lt;br /&gt;
{{anchor|.3Cpictureextensions.3E}}&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Pictures window.&lt;br /&gt;
&lt;br /&gt;
Default extensions for PICTURES:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.png .jpg .jpeg .bmp .gif .ico .tif .tiff .tga .pcx .cbz .zip .rss .webp .jp2 .apng&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/pictureextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pictureexcludes ===&lt;br /&gt;
{{anchor|.3Cpictureexcludes.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from being displayed in My Pictures using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureexcludes&amp;gt;  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in My Pictures --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;small&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/pictureexcludes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== slideshow ===&lt;br /&gt;
{{anchor|.3Cslideshow.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;slideshow&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to pan images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;panamount&amp;gt;2.5&amp;lt;/panamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to zoom images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;zoomamount&amp;gt;5.0&amp;lt;/zoomamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to compensate (zoom) images to attempt to reduce black bars. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Results in cropping of the longer length of the image in order to reduce the black bars on the shorter length of the image.  --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Defaults to 20. --&amp;gt;&lt;br /&gt;
  &amp;lt;blackbarcompensation&amp;gt;20&amp;lt;/blackbarcompensation&amp;gt;  &lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network settings ==&lt;br /&gt;
&lt;br /&gt;
=== ftp ===&lt;br /&gt;
{{anchor|.3Cftp.3DE}}&lt;br /&gt;
Specific settings if a ftp server is in use as a source&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ftp&amp;gt;&lt;br /&gt;
  &amp;lt;remotethumbs&amp;gt;true&amp;lt;/remotethumbs&amp;gt; &amp;lt;!-- enable extraction of flag and thumb for ftp --&amp;gt;&lt;br /&gt;
&amp;lt;/ftp&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== samba ===&lt;br /&gt;
{{anchor|.3Csamba.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samba&amp;gt;&lt;br /&gt;
  &amp;lt;doscodepage&amp;gt;&amp;lt;/doscodepage&amp;gt;  &amp;lt;!-- code page to use for filenames --&amp;gt;&lt;br /&gt;
  &amp;lt;clienttimeout&amp;gt;10&amp;lt;/clienttimeout&amp;gt;  &amp;lt;!-- timeout (in seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;statfiles&amp;gt;true&amp;lt;/statfiles&amp;gt;  &amp;lt;!-- Set to false to disable smb stat() on files to speed up listings of large directories (over slow links) --&amp;gt;&lt;br /&gt;
&amp;lt;/samba&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hosts ===&lt;br /&gt;
{{anchor|.3Cfhosts.3E}}&lt;br /&gt;
Static dns entries which take precedence over your dns server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hosts&amp;gt;&lt;br /&gt;
  &amp;lt;entry name=&amp;quot;HOSTNAME&amp;quot;&amp;gt;IPADDRESS&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/hosts&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== network ===&lt;br /&gt;
{{anchor|.3Cnetwork.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;network&amp;gt;&lt;br /&gt;
  &amp;lt;curlclienttimeout&amp;gt;10&amp;lt;/curlclienttimeout&amp;gt;  &amp;lt;!-- Timeout in seconds for libcurl (http/ftp) connections --&amp;gt;&lt;br /&gt;
  &amp;lt;curllowspeedtime&amp;gt;20&amp;lt;/curllowspeedtime&amp;gt;    &amp;lt;!-- Time in seconds for libcurl to consider a connection lowspeed --&amp;gt;&lt;br /&gt;
  &amp;lt;curlretries&amp;gt;2&amp;lt;/curlretries&amp;gt;               &amp;lt;!-- Amount of retries for certain failed libcurl operations (e.g. timeout) --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxyusername&amp;gt;&amp;lt;/httpproxyusername&amp;gt;    &amp;lt;!-- username for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxypassword&amp;gt;&amp;lt;/httpproxypassword&amp;gt;    &amp;lt;!-- password for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;disableipv6&amp;gt;false&amp;lt;/disableipv6&amp;gt;           &amp;lt;!-- Certain hardware/OS combinations have trouble with ipv6. Set &amp;quot;true&amp;quot; to disable --&amp;gt;&lt;br /&gt;
  &amp;lt;disablehttp2&amp;gt;false&amp;lt;/disablehttp2&amp;gt;         &amp;lt;!-- Added in v19- Allows disabling HTTP2 for broken Curl / HTTP2 servers --&amp;gt;&lt;br /&gt;
  &amp;lt;nfstimeout&amp;gt;30&amp;lt;/nfstimeout&amp;gt;                &amp;lt;!-- Added in v19- Timeout in seconds for NFS access, 0 = wait forever (previous behaviour) default is 5s  --&amp;gt;&lt;br /&gt;
  &amp;lt;catrustfile&amp;gt;filepath&amp;lt;/catrustfile&amp;gt;        &amp;lt;!-- Added in v19- Allows specifying a custom SSL CA trust store bundle. e.g. special://masterprofile/cacerts.pem --&amp;gt;&lt;br /&gt;
  &amp;lt;curlkeepaliveinterval&amp;gt;30&amp;lt;/curlkeepaliveinterval&amp;gt;     &amp;lt;!-- Added in v19- Enable TCP keepalive probes in curl --&amp;gt; &lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Kodi v17, the three buffer settings are removed from the &amp;lt;code&amp;gt;&amp;lt;network&amp;gt;&amp;lt;/code&amp;gt; tag and now placed under the new &amp;lt;code&amp;gt;&amp;lt;cache&amp;gt;&amp;lt;/code&amp;gt; tag. See &#039;&#039;&#039;[[#cache]]&#039;&#039;&#039; for full details.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;curlkeepaliveinterval&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19319&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cache ===&lt;br /&gt;
{{see also|HOW-TO:Modify_the_video_cache}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cache&amp;gt;&lt;br /&gt;
  &amp;lt;memorysize&amp;gt;0&amp;lt;/memorysize&amp;gt;   &amp;lt;!-- Number of bytes used for buffering streams in memory when set to 0 the cache will be written to disk instead of RAM --&amp;gt;&lt;br /&gt;
  &amp;lt;buffermode&amp;gt;0&amp;lt;/buffermode&amp;gt;   &amp;lt;!-- Choose what to buffer:&lt;br /&gt;
                                    0) Buffer all internet filesystems (like &amp;quot;2&amp;quot; but additionally also ftp, webdav, etc.) &lt;br /&gt;
                                    1) Buffer all filesystems (including local) (default since Kodi 19)&lt;br /&gt;
                                    2) Only buffer true internet filesystems (streams) (http, https, etc.)&lt;br /&gt;
                                    3) No buffer&lt;br /&gt;
                                    4) Buffer all network filesystems (incl. smb, nfs, etc.) --&amp;gt;&lt;br /&gt;
  &amp;lt;readfactor&amp;gt;4.0&amp;lt;/readfactor&amp;gt; &amp;lt;!-- This factor determines the max readrate in terms of readfactor * avg bitrate of a video file. &lt;br /&gt;
                                    This can help on bad connections to keep the cache filled. It will also greatly speed up buffering. Default value 4.0. --&amp;gt;&lt;br /&gt;
&amp;lt;/cache&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airtunesport ===&lt;br /&gt;
{{anchor|.3Cairtunesport.3E}}&amp;lt;section begin=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the defalt listening port of the AirTunes server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airplayport ===&lt;br /&gt;
{{anchor|.3Cairplayport.3E}}&amp;lt;section begin=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the default listening port of the AirPlay server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File system settings ==&lt;br /&gt;
&lt;br /&gt;
=== packagefoldersize ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
{{anchor|.3Cpackagefoldersize.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = packagefoldersize&lt;br /&gt;
 | option type = numerical&lt;br /&gt;
 | option values = &lt;br /&gt;
 | default values = 200&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = 12&lt;br /&gt;
 | description = The amount (in megabytes) of add-on zip packages saved from previous add-on installs. These packages are mainly used for the [[Add-ons|add-on]] rollback feature. Increasing the size should increase the amount of past versions saved. Defaults to 200 MB.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;packagefoldersize&amp;gt;200&amp;lt;/packagefoldersize&amp;gt; &amp;lt;!-- this example would keep up to 200MB of add-on packages. --&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== detectasudf ===&lt;br /&gt;
{{anchor|.3Cdetectasudf.3E}}&lt;br /&gt;
Set to true if you wish to detect joint ISO9660/UDF disks as UDF.  &lt;br /&gt;
&lt;br /&gt;
Default: False&lt;br /&gt;
&lt;br /&gt;
=== handlemounting ===&lt;br /&gt;
{{anchor|.3Chandlemounting.3E}}&lt;br /&gt;
Only used in Linux, it defines if Kodi should attempt to mount media drives (via udisks or udisks2).&lt;br /&gt;
&lt;br /&gt;
Default: False. If kodi is executed with the --standalone option (e.g. as done by kodi-standalone.sh) it by default will be True.&lt;br /&gt;
&lt;br /&gt;
=== pathsubstitution ===&lt;br /&gt;
{{anchor|.3Cpathsubstitution.3E}}&lt;br /&gt;
{{main|Path substitution}}&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; Path substition for &amp;quot;sources&amp;quot; and profiles is broken, and will &#039;&#039;&#039;NOT&#039;&#039;&#039; be fixed.}}&lt;br /&gt;
&lt;br /&gt;
Path substitutions are for use for redirecting file paths.  These are processed in order, and are useful for substituting an absolute path on a PC with a path suitable for Kodi to handle.  &lt;br /&gt;
&lt;br /&gt;
Default: No path substitutions defined.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pathsubstitution&amp;gt;&lt;br /&gt;
  &amp;lt;substitute&amp;gt;&lt;br /&gt;
    &amp;lt;from&amp;gt;G:\dvds\&amp;lt;/from&amp;gt;&lt;br /&gt;
    &amp;lt;to&amp;gt;smb://somecomputer/g-share/dvds/&amp;lt;/to&amp;gt; &amp;lt;!-- Note the difference between the usage of forward and backslashes --&amp;gt;&lt;br /&gt;
  &amp;lt;/substitute&amp;gt;&lt;br /&gt;
&amp;lt;/pathsubstitution&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input control settings ==&lt;br /&gt;
&lt;br /&gt;
=== remotedelay ===&lt;br /&gt;
{{anchor|.3Cremotedelay.3E}}&lt;br /&gt;
The repeat delay for a LIRC remote control. A delay value between 1 and 20 before a remote button starts repeating on a long keypress (i.e. continuously sending button pushes while it&#039;s held down). &lt;br /&gt;
&lt;br /&gt;
Default: 3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;remotedelay&amp;gt;10&amp;lt;/remotedelay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== controllerdeadzone ===&lt;br /&gt;
{{anchor|.3Ccontrollerdeadzone.3E}}&lt;br /&gt;
This advanced settings has been removed. &lt;br /&gt;
Since v17, the [[Advancedsettings.xml#controllerdeadzone|&amp;amp;lt;controllerdeadzone&amp;amp;gt;]] advanced setting has been removed. Deadzones can now be configured by plugging in the controller and selecting it in Settings -&amp;gt; System settings -&amp;gt; Input -&amp;gt; Peripherals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== enablemultimediakeys ===&lt;br /&gt;
{{anchor|.3Cenablemultimediakeys.3E}}&lt;br /&gt;
This setting only has any effect on Windows versions of Kodi, and only applies to builds from 28th May 2011 onwards.&lt;br /&gt;
In Windows the multimedia keys generate a WM_APPCOMMAND message in addition the keypress. Kodi processes both keypresses and the WM_APPCOMMAND messages, and the end result would be that the command is executed twice. To avoid this, by default multimedia keypresses are disabled. Although it should rarely be necessary, the enablemultimediakeys setting allows you to enable the multimedia keys.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enablemultimediakeys&amp;gt;true&amp;lt;/enablemultimediakeys&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== seeksteps ===&lt;br /&gt;
{{Main|Skip steps}}&lt;br /&gt;
&lt;br /&gt;
This setting changes which increments are available in the settings GUI for additive seeking. Note that &amp;lt;code&amp;gt;&amp;lt;seeksteps&amp;gt;&amp;lt;/code&amp;gt; is not used to actually choose which seek steps are enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;seeksteps&amp;gt;7, 15, 30, 60, 180, 300, 600, 900, 1800&amp;lt;/seeksteps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{editor note|the defaults need to be updated for seeksteps.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== touchscreen ===&lt;br /&gt;
{{anchor|.3Ctouchscreen.3E}}&lt;br /&gt;
This setting allows you to move/align the origin of the touch screen with the origin of the display used. If touch input does not result in a correct movement of the mouse pointer, the behaviour can be corrected with an offset and a stretch/compress factor.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;touchscreen&amp;gt;&lt;br /&gt;
		&amp;lt;x_offset&amp;gt;0&amp;lt;/x_offset&amp;gt; &amp;lt;!-- set pixel x offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;y_offset&amp;gt;0&amp;lt;/y_offset&amp;gt; &amp;lt;!-- set pixel y offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;x_stretch_factor&amp;gt;1.0&amp;lt;/x_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch x axis--&amp;gt;&lt;br /&gt;
		&amp;lt;y_stretch_factor&amp;gt;1.0&amp;lt;/y_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch y axis--&amp;gt;&lt;br /&gt;
    &amp;lt;/touchscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== scanirserver ===&lt;br /&gt;
Introduced in v18 and used in MS Windows setups only.&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/13896&amp;lt;/ref&amp;gt;&lt;br /&gt;
Used to disable the regular connection attempts to the IR Server Suite when there is no remote to connect to.&lt;br /&gt;
&lt;br /&gt;
The default setting is to allow connection attempts. To disable connection attempts change value to &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;scanirserver&amp;gt;true&amp;lt;/scanirserver&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other interface settings ==&lt;br /&gt;
&lt;br /&gt;
=== window ===&lt;br /&gt;
{{anchor|.3Cwindow.3E}}&lt;br /&gt;
{{note|This is a &amp;quot;hidden&amp;quot; guisettings.xml setting (defined by the mouse moving the window size), but it is mentioned here because it is a particularly useful override when used in advancedsettings.xml}}&lt;br /&gt;
This allows you to manually set the default size of Kodi&#039;s windowed mode.  If you resize the window, it will return to the set size when restarting.&lt;br /&gt;
&lt;br /&gt;
WIDTH and HEIGHT are the values for each dimension, in pixels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;window&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;WIDTH&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;HEIGHT&amp;lt;/height&amp;gt;&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restrictcapsmask ===&lt;br /&gt;
{{anchor|.3Crestrictcapsmask.3E}}&lt;br /&gt;
Windows only. A bitmask to prevent Kodi from using detected texture capabilities of the GPU. This helps work around buggy hardware/drivers.&lt;br /&gt;
&lt;br /&gt;
1: prevent the use of compressed textures (DXT1, DXT3, DXT5)&lt;br /&gt;
2: prevent the use of non-power-of-two dimensions for textures&lt;br /&gt;
4: prevent the use of compressed textures with non-power-of-two dimensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;restrictcapsmask&amp;gt;0&amp;lt;/restrictcapsmask&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== algorithmdirtyregions ===&lt;br /&gt;
{{anchor|.3Calgorithmdirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;{{note|Some GPU/hardware configurations will have some minor issues (such as a visual &amp;quot;flicker&amp;quot;). For those situations try mode 2 or use the default (mode 3, which requires no advancedsetting). Almost all ARM-based devices (such as [[Android]]) willl likely have flickering issues.}}&lt;br /&gt;
 &lt;br /&gt;
Enable dirty-region processing. Dirty regions are any parts of the screen that have changed since the last frame. By not re-rendering what hasn&#039;t changed the GUI can be sped up. Because all GPUs work differently, only Mode 3 is guaranteed to work for everyone without flickering issues. This mode will reduce CPU/GPU usage, but will not increase GUI speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! value !! result !! description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
| Off&lt;br /&gt;
| The entire viewport is always rendered.&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|Union&lt;br /&gt;
|All dirty regions are grouped into the smallest possible rectangle. This is typically the fastest mode for slower GPUs due to only making one pass.&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| {{nowrap|Cost reduction}}&lt;br /&gt;
| Each dirty region is presented separately, in as many passes as there are regions.&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| {{nowrap|Whole Screen}}&lt;br /&gt;
| The entire screen is rendered if there are any dirty regions. This is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). &#039;&#039;&#039;Default&#039;&#039;&#039;&lt;br /&gt;
|}&amp;lt;section end=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;algorithmdirtyregions&amp;gt;1&amp;lt;/algorithmdirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== visualizedirtyregions ===&lt;br /&gt;
{{anchor|.3Cvisualizedirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;Enable dirty-region visualization. Paints a rectangle over marked controls.&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|This is only a development mode and isn&#039;t of use to normal users.}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;visualizedirtyregions&amp;gt;true&amp;lt;/visualizedirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== smartredraw ===&lt;br /&gt;
&lt;br /&gt;
{{note|This is an experimental feature and you might face issues using it. So please be aware of that.}}&lt;br /&gt;
&lt;br /&gt;
This new feature was introduced in Kodi 18 and if enabled, the GUI process call (and therefore the render call) is only done if anything has changed. The result will be a faster GUI and less load if Kodi plays a video&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;smartredraw&amp;gt;true&amp;lt;/smartredraw&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== showexitbutton ===&lt;br /&gt;
{{anchor|.3Cshowexitbutton.3E}}&lt;br /&gt;
Setting to hide the exit button, useful for people running appliance based setups where exit would only confuse/complicate the user. Modifiable via the advancedsettings.xml by setting showexitbutton to false, default is true (show)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;showexitbutton&amp;gt;true&amp;lt;/showexitbutton&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== fullscreen ===&lt;br /&gt;
{{anchor|.3Cfullscreen.3E}}&lt;br /&gt;
Starts Kodi in full screen (check resolutions!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fullscreen&amp;gt;false&amp;lt;/fullscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== splash ===&lt;br /&gt;
{{anchor|.3Csplash.3E}}&lt;br /&gt;
Set to false if you wish to disable the startup splash image. Defaults to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;splash&amp;gt;true&amp;lt;/splash&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== cputempcommand ===&lt;br /&gt;
{{anchor|.3Ccputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get CPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia and Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sed -e &#039;s/\([0-9]*\)[0-9]\{3\}.*/\1 C/&#039; /sys/class/thermal/thermal_zone0/temp&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;echo &amp;quot;$(sensors -u | tail -n64 | grep temp1_input | awk &#039;{print $2 }&#039; |awk &#039;{printf(&amp;quot;%d\n&amp;quot;,$1 + 0.5);}&#039;) C&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sensors|sed -ne &amp;quot;s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== gputempcommand ===&lt;br /&gt;
{{anchor|.3Cgputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get GPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-settings -tq gpuCoreTemp) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/usr/bin/aticonfig --od-gettemperature | grep Temperature | cut -f 2 -d &amp;quot;-&amp;quot; | cut -f 1 -d &amp;quot;.&amp;quot; | sed -e &amp;quot;s, ,,&amp;quot; | sed &#039;s/$/ C/&#039;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;For Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/opt/vc/bin/vcgencmd measure_temp | sed -e &amp;quot;s/temp=//&amp;quot; -e &amp;quot;s/\..*&#039;/ /&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== glrectanglehack ===&lt;br /&gt;
{{anchor|.3Cglrectanglehack.3E}}&lt;br /&gt;
Problems with ghosting or videos which are only played back in the left upper quarter? The following ATI hack may solve it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;glrectanglehack&amp;gt;yes&amp;lt;/glrectanglehack&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== alwaysontop ===&lt;br /&gt;
{{anchor|.3Calwaysontop.3E}}&lt;br /&gt;
Added in XBMC v9.11 (Windows OS only). Keeps Kodi always on top when windowed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;alwaysontop&amp;gt;yes&amp;lt;/alwaysontop&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a fake fullscreen GUI option in Kodi&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== minimizetotray ===&lt;br /&gt;
{{anchor|.3Cminimizetotray.3E}}&lt;br /&gt;
{{note|Available in Kodi v20 and above.}}&lt;br /&gt;
&lt;br /&gt;
Windows only. Minimizes Kodi to the system tray. Defaults to false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;minimizetotray&amp;gt;true&amp;lt;/minimizetotray&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Removed tags =&lt;br /&gt;
{{anchor|Recently removed tags}}&lt;br /&gt;
* {{anchor|.3Cthumbsize.3E}}&#039;&#039;&#039;&amp;lt;thumbsize&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#imageres|imageres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cfanartheight.3E}}&#039;&#039;&#039;&amp;lt;fanartheight&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#fanartres|fanartres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cdvdthumbs.3E}}&#039;&#039;&#039;&amp;lt;dvdthumbs&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbusydialogdelayms.3E}}&#039;&#039;&#039;&amp;lt;busydialogdelayms&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbginfoloadermaxthreads.3E}}&#039;&#039;&#039;&amp;lt;bginfoloadermaxthreads&amp;gt;&#039;&#039;&#039; - removed in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;showepginfoonselect&amp;gt;&#039;&#039;&#039; - replaced by a GUI setting in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;resample&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;forceDirectSound&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiophile&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiosinkbufferdurationmsec&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;allowtranscode44100&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;streamsilence&amp;gt;&#039;&#039;&#039; - These were various sub-tags for &amp;lt;audio&amp;gt; that were removed in v13 Gotham and either replaced by GUI settings or were no longer needed.&lt;br /&gt;
* {{anchor|.3Cenableairtunesdebuglog.3E}}&#039;&#039;&#039;&amp;lt;enableairtunesdebuglog&amp;gt;&#039;&#039;&#039; - replaced by a GUI option in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videoDisableHi10pMultithreading&amp;gt;&#039;&#039;&#039; - renamed to &amp;lt;disableswmultithreading&amp;gt; in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideallitems&amp;gt;&#039;&#039;&#039; - For both the &amp;lt;code&amp;gt;&amp;lt;videolibrary&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;musiclibrary&amp;gt;&amp;lt;/code&amp;gt; sections, this is replaced by a GUI option in v15 Isengard&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;SmallStepBackSeconds&amp;gt;&#039;&#039;&#039; - In v15 the &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; [[Action_IDs]] has been replaced by &amp;lt;code&amp;gt;seek(-7)&amp;lt;/code&amp;gt; in default keymaps. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details. When the original &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; action ID is used it defaults to the first backwards [[skip steps|additive seeking value]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;timeseekforward&amp;gt;/&amp;lt;timeseekbackward&amp;gt;&#039;&#039;&#039; - In v15 these tags are replaced by GUI options via [[skip steps|additive seeking]], which is configured in the GUI. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details.&lt;br /&gt;
* {{anchor|.3Ckaraoke.3E}}&#039;&#039;&#039;&amp;lt;karaoke&amp;gt;&#039;&#039;&#039; - In v16 all of the karaoke features in Kodi were removed.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useddsfanart&amp;gt;&#039;&#039;&#039; - removed in v17 Krypton.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;lt;readbufferfactor&amp;gt;&#039;&#039;&#039; - In v17 &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; is renamed to &#039;&#039;&#039;&amp;lt;memorysize&amp;gt;&#039;&#039;&#039; and &amp;lt;code&amp;gt;&amp;lt;readbufferfactor&amp;gt;&amp;lt;/code&amp;gt; is renamed to &amp;lt;code&amp;gt;&amp;lt;readfactor&amp;gt;&amp;lt;/code&amp;gt;. In addition, all three buffer related settings in &amp;lt;network&amp;gt; are moved out of &amp;lt;network&amp;gt; and into a new &amp;lt;cache&amp;gt; parent tag.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;minvideocachelevel&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;minaudiocachelevel&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;cacheindvdplayer&amp;gt;&#039;&#039;&#039; have been removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useffmpegvda&amp;gt;&#039;&#039;&#039; - Tag was only used for development testing. Removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;nofliptimeout&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;blackbarcolour&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;disableswmultithreading&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* {{anchor|.3Cmeasurerefreshrate.3E}}&#039;&#039;&#039;&amp;lt;measurerefreshrate&amp;gt;&#039;&#039;&#039; - Removed in v17 or v18?&lt;br /&gt;
* {{anchor|.3Cmyth.3E}}&#039;&#039;&#039;&amp;lt;myth&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* {{anchor|.3Ctuxbox.3E}}&#039;&#039;&#039;&amp;lt;tuxbox&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;backgroundupdate&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideemptyseries&amp;gt;&#039;&#039;&#039; - Replaced by a GUI option.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;mymovies&amp;gt;&#039;&#039;&#039; and child tag &#039;&#039;&#039;&amp;lt;categoriestogenres&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumssortbyartistthenyear&#039;&#039;&#039;&amp;gt; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumformatright&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Cremoterepeat.3E}}&#039;&#039;&#039;&amp;lt;remoterepeat&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Callowd3d9ex.3E}}&#039;&#039;&#039;&amp;lt;allowd3d9ex&amp;gt;&#039;&#039;&#039; and {{anchor|.3Cforced3d9ex.3E}}&#039;&#039;&#039;&amp;lt;forced3d9ex&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;lingertime&amp;gt;&#039;&#039;&#039; - Replaced by a GUI setting in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;forcevaapienabled&amp;gt;&#039;&#039;&#039; - Removed in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;promptfulltagscan&amp;gt;false&amp;lt;/promptfulltagscan&amp;gt;&#039;&#039;&#039; Removed in v18. Now automatically asked each time a scan is conducted.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;controllerdeadzone&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;omxdecodestartwithvalidframe&amp;gt;&#039;&#039;&#039; - This tag is only in some Raspberry Pi specific distributions, such as OpenELEC. As of March 2015, this tag has not been merged into &amp;quot;vanilla&amp;quot; Kodi builds&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicthumbs&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Thumbnail image files&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;artistextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Artist art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Album art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;fanart&amp;gt;&#039;&#039;&#039; Removed in v19&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;assfixedworks&amp;gt;&#039;&#039;&#039; Removed in v20&lt;br /&gt;
&lt;br /&gt;
= guisettings.xml Setting Conversion =&lt;br /&gt;
It is possible to convert settings found in the &#039;&#039;&#039;[[Settings]]&#039;&#039;&#039; &#039;&#039;(guisettings.xml)&#039;&#039; pages of {{kodi}} into entries for the advancedsettings.xml file.&lt;br /&gt;
&lt;br /&gt;
When a setting from the guisettings.xml is added to the advancedsettings.xml file, it will override the existing guisettings.xml values and the setting will be removed from the settings pages.&lt;br /&gt;
&lt;br /&gt;
Why would I need to do this?&lt;br /&gt;
* You set up multiple devices and then need to individually change settings and preferences on each device. Using this conversion method, you save those settings in the advancedsettings.xml file and simply add the file to each device&lt;br /&gt;
* You need to hide settings to prevent those settings from being modified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To convert a guisetting to advancedsettings.xml follow these steps:&lt;br /&gt;
# In the {{kodi}} settings pages, adjust the setting(s) to your preference.&lt;br /&gt;
# Back out of the settings pages to the main menu, which forces {{kodi}} to save the adjusted settings to the guisettings.xml file&lt;br /&gt;
# Locate the guisettings.xml file in the [[Userdata]] folder and open it&lt;br /&gt;
# Locate the setting(s) to be converted. The list can be overwhelming so make use of the Search feature of whichever editor you are using&lt;br /&gt;
# Using the following setting as an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;setting id=&amp;quot;videolibrary.showemptytvshows&amp;quot;&amp;gt;true&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Breaking down the string:&lt;br /&gt;
::&#039;&#039;&#039;videolibrary&#039;&#039;&#039;- parent tag&lt;br /&gt;
::&#039;&#039;&#039;showemptytvshows&#039;&#039;&#039;- child tag&lt;br /&gt;
::&#039;&#039;&#039;true&#039;&#039;&#039;- value&lt;br /&gt;
: The conversion is as follows and place this in the advancedsettings.xml file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
          &amp;lt;showemptytvshows&amp;gt;true&amp;lt;/showemptytvshows&amp;gt;&lt;br /&gt;
     &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Some parent tags may already be in use in your advancedsettings.xml file. Do not duplicate them, but add the child tag beneath the existing parent tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
{{DISPLAYTITLE:advancedsettings.xml}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced topics]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=241235</id>
		<title>Advancedsettings.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Advancedsettings.xml&amp;diff=241235"/>
		<updated>2022-01-11T17:20:30Z</updated>

		<summary type="html">&lt;p&gt;Enen92: handlemounting - This setting was missing from the documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}{{mininav|[[Settings]]|page=advancedsettings.xml}}&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;The advancedsettings.xml file does not exist by default. You have to create it first!&#039;&#039;&#039;}} }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;The [[advancedsettings.xml]] file, which does not exist by default, can be created by a user in their &#039;&#039;&#039;[[Userdata|userdata folder]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This file is used for advanced settings and options that do not have GUI controls inside of {{kodi}}. Some settings are experimental or very rarely set, so they can only be used via the advancedsettings.xml file. The file is simply a plain text file and can be edited by various text editors, so long as the name is &amp;quot;advancedsettings.xml&amp;quot;. These advanced settings can be used to tweak various things such as episode naming patterns, special network ports, special behaviors, and more.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following page will describe the structure of the advancedsettings.xml file and the various individual settings.&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
# All XML tags must be lowercase. The start and end of the advancedsettings.xml file must have the &amp;lt;advancedsettings&amp;gt; and &amp;lt;/advancedsettings&amp;gt; tags.&lt;br /&gt;
# Kodi will only read the advancedsettings.xml file when it starts up. If you make changes while it is running then you must restart Kodi.&lt;br /&gt;
# For some Windows versions, Kodi has two &amp;lt;code&amp;gt;\userdata\&amp;lt;/code&amp;gt; folders. The correct one to put the advancedsettings.xml file in is not the one in Program Files, but in &amp;lt;code&amp;gt;%appdata%\Kodi\userdata\.&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
The layout of &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;setting&amp;gt;value&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;setting&amp;quot; gives the name of the setting, and &amp;quot;value&amp;quot; gives its value.&lt;br /&gt;
&lt;br /&gt;
A list of the available &amp;quot;setting&amp;quot; strings and their values is given below.&lt;br /&gt;
&lt;br /&gt;
= List of available settings =&lt;br /&gt;
List of available settings that are recognised in the advancedsettings.xml file &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/blob/master/xbmc/settings/AdvancedSettings.cpp&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recommended: Use the table of contents or the search function in your browser to locate items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== loglevel ===&lt;br /&gt;
{{Anchor|.3Cloglevel.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
Sets the logging level used to log errors and information. The &amp;quot;hide&amp;quot; attribute is optional. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;loglevel hide=&amp;quot;attribute&amp;quot;&amp;gt;options&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Attribute&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;true&#039;&#039;&#039; &lt;br /&gt;
| Hides the &amp;quot;enable debugging&amp;quot; setting in the Settings page. (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
| Allows &amp;quot;enable debugging&amp;quot; setting to switch between &#039;&#039;&#039;0&#039;&#039;&#039; and &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Option&lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;-1&#039;&#039;&#039;&lt;br /&gt;
| No logging, suppresses all log output &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Normal logging, only logging errors (default)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Debug logging with freemem, fps and cpu usage (no on screen)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
| Same as 1 (with on screen display)&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;3&#039;&#039;&#039; &lt;br /&gt;
| Same as 2 + full smb logging (no on screen display)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:100px;&amp;quot; | Example &lt;br /&gt;
! style=&amp;quot;width:500px;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
! Example 1:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel&amp;gt;2&amp;lt;/loglevel&amp;gt;  &lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Example 2:&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
    &amp;lt;loglevel hide=&amp;quot;true&amp;quot;&amp;gt;2&amp;lt;/loglevel&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The setting is persistent through shutdown and restarts.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If debugging is enabled in the GUI, loglevel will be set to &#039;&#039;&#039;2&#039;&#039;&#039;. This will over-ride the &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt; setting. You must disable the GUI Setting before adding the entry to &amp;lt;code&amp;gt;advancedsettings.xml&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;loglevel&amp;quot; /&amp;gt;&lt;br /&gt;
:&#039;&#039;{{see also|Log_file|label 1=Debug Log}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== jsonrpc ===&lt;br /&gt;
{{Anchor|.3Cjsonrpc.3E}}&lt;br /&gt;
To make it easier for developers using the [[JSON-RPC_API]] API in their (third party) applications to debug during development the json output of Kodi can be prettified by setting &#039;&#039;&#039;compactoutput&#039;&#039;&#039; to &#039;&#039;&#039;false&#039;&#039;&#039;. Default json output mode is a compact print which does not contain any unnecessary whitespaces and therefore is difficult to read for humans.&lt;br /&gt;
Furthermore using the &#039;&#039;&#039;tcpport&#039;&#039;&#039; setting it is possible to change the default TCP port used by Kodi for JSON RPC (which is 9090) to any other valid port.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jsonrpc&amp;gt;&lt;br /&gt;
    &amp;lt;compactoutput&amp;gt;false&amp;lt;/compactoutput&amp;gt;&lt;br /&gt;
    &amp;lt;tcpport&amp;gt;9999&amp;lt;/tcpport&amp;gt;&lt;br /&gt;
&amp;lt;/jsonrpc&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audio/video playback settings ==&lt;br /&gt;
&lt;br /&gt;
=== skiploopfilter ===&lt;br /&gt;
{{anchor|.3Cskiploopfilter.3E}}&lt;br /&gt;
The amount of the loop filter to skip on h.264 decoding.  This can help the performance of slower machines when decoding h264 content.  Values, in decreasing CPU usage (and decreasing quality)&lt;br /&gt;
* -16 None&lt;br /&gt;
* 0 Skip only empty frames (default)&lt;br /&gt;
* 8 Skip non-reference frames&lt;br /&gt;
* 16 Skip bi-dir frames&lt;br /&gt;
* 32 Skip all non-key frames&lt;br /&gt;
* 48 Skip all frames&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;skiploopfilter&amp;gt;8&amp;lt;/skiploopfilter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== video ===&lt;br /&gt;
{{anchor|.3Cvideo.3E}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;video&amp;gt; section also includes the following child-tags, which have their own sections:&lt;br /&gt;
*[[#cleandatetime]]&lt;br /&gt;
*[[#cleanstrings]]&lt;br /&gt;
*[[#excludefromscan]]&lt;br /&gt;
*[[#excludefromlisting]]&lt;br /&gt;
*[[#excludetvshowsfromscan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{note|Some tags that have a &amp;quot;third-level&amp;quot; and are grouped together are highlighted in color.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Parent tag that all other child tags need to be placed inside of. Do not use more than one &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; tag, but instead place all other child-tags within a single &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; set.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subsdelayrange&amp;gt;10&amp;lt;/subsdelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for subtitles, in seconds.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;maxtempo&amp;gt;2.1&amp;lt;/maxtempo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow further increase of playback speed over the default of 1.5&amp;lt;br&amp;gt;&lt;br /&gt;
maxtempo must be in the range of 1.5 to 2.1 &amp;lt;br&amp;gt;&lt;br /&gt;
Be aware of the limitations of your platform / hardware as not all are capable of the increased maxtempo &amp;lt;ref&amp;gt;https://forum.kodi.tv/showthread.php?tid=10023&amp;amp;pid=2795069#pid2795069&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;audiodelayrange&amp;gt;10&amp;lt;/audiodelayrange&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Delay range for audio/video sync, in seconds.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to use time based or percentage based seeking. {{small see also|Skip steps}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforward&amp;gt;2&amp;lt;/percentseekforward&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackward&amp;gt;-2&amp;lt;/percentseekbackward&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a short seek.  Defaults to 2 (2%) and -2 (2%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekforwardbig&amp;gt;10&amp;lt;/percentseekforwardbig&amp;gt;&lt;br /&gt;
  &amp;lt;percentseekbackwardbig&amp;gt;-10&amp;lt;/percentseekbackwardbig&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Amount to seek forward as a percentage, when doing a long seek.  Defaults to 10 (10%) and -10 (10%) respectively. &#039;&#039;{{small|See also: [[Skip steps]] }}&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fullscreenonmoviestart&amp;gt;true&amp;lt;/fullscreenonmoviestart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Whether to go to fullscreen or not when starting a movie. Defaults to true.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;VideoPlayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Set the default video player: VideoPlayer or an external player. See &#039;&#039;&#039;[[External players]]&#039;&#039;&#039; for more info.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be added to library.  It is possible to add multiple &amp;lt;code&amp;gt;&amp;lt;regexp&amp;gt;&amp;lt;/code&amp;gt; tags to match multiple patterns&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Regular expressions that if evaluated to true won&#039;t be displayed in files view.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;90&amp;lt;/playcountminimumpercent&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Minimum percentage that has to be played before it is marked as watched. Set to 101 to never auto-mark items as watched. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignoresecondsatstart&amp;gt;180&amp;lt;/ignoresecondsatstart&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Number of seconds to ignore at video start after which a resume point is created. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ignorepercentatend&amp;gt;8&amp;lt;/ignorepercentatend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Percentage of video to ignore at the end. If you stop watching the video here no resume point is created. Set to 101 to never save a resume point. The video is already marked as watched at 90%, see above. &#039;&#039;{{small|See also: [[HOW-TO:Modify automatic watch and resume points]] }}&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;vdpauscaling&amp;gt;true&amp;lt;/vdpauscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Scales with vdpau instead of opengl and turns on its HQ scaler when available, enabling this might slow down rendering and cause framedrops especially on ION systems, this setting requires a vdpau feature set C GPU.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;enablehighqualityhwscalers&amp;gt;true&amp;lt;/enablehighqualityhwscalers&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allow turning on the spline36 and lanczos3 shader (for GL builds).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;dxvaallowhqscaling&amp;gt;false&amp;lt;/dxvaallowhqscaling&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Enables high quality video upscaling for Windows.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegdeinterlacing&amp;gt;linblenddeint&amp;lt;/ppffmpegdeinterlacing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the deinterlacing options passed to libpostproc.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;ppffmpegpostprocessing&amp;gt;ha:128:7,va,dr&amp;lt;/ppffmpegpostprocessing&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Override the post processing options passed to libpostproc when &#039;Video post-processing&#039; is activated in GUI Videos-Settings-Playback.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;autoscalemaxfps&amp;gt;30&amp;lt;/autoscalemaxfps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| When scaling method is set to auto, bilinear is chosen when the fps is higher than this limit, the default is 30.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;adjustrefreshrate&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | Settings for when &amp;quot;Adjust refreshrate to match video fps&amp;quot; is enabled in the video playback GUI settings.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fps&amp;gt;23.976&amp;lt;/fps&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;60.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &amp;quot;Adjust refreshrate to match video fps&amp;quot; will try to select the best refreshrate for the video fps but it doesn&#039;t always get it right, for example it might switch to an unsupported refreshrate. You can add overrides here to switch to a certain refreshrate based on video fps. It&#039;s possible to add as many overrides as you need.  Overrides are processed in order, if the first one doesn&#039;t match the fps or no refreshrates match that override, it will try the next one until no overrides are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fps&#039;&#039;&#039; - if the fps is between 23.966 and 23.986&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - switch to the first found refreshrate that is between 59.99 and 60.01&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;override&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmin&amp;gt;29.96&amp;lt;/fpsmin&amp;gt;&lt;br /&gt;
      &amp;lt;fpsmax&amp;gt;30.01&amp;lt;/fpsmax&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;59.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;61.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/override&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;fpsmin&#039;&#039;&#039; / &#039;&#039;&#039;fpsmin&#039;&#039;&#039; - You can also specify the fps range yourself.&lt;br /&gt;
* &#039;&#039;&#039;refreshmin&#039;&#039;&#039; / &#039;&#039;&#039;refreshmax&#039;&#039;&#039; - Same for the refreshrate&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refresh&amp;gt;50.0&amp;lt;/refresh&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; If none of the overrides match, or none of the refreshrates match any of the fps matching overrides, it will choose a fallback refreshrate. Fallbacks are process in order, if the first fallback doesn&#039;t match any refreshrate, it will try the next one until no fallbacks are left.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;refresh&#039;&#039;&#039; - Switch to the first found refreshrate that is between 49.99 and 50.01.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;fallback&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmin&amp;gt;49.0&amp;lt;/refreshmin&amp;gt;&lt;br /&gt;
      &amp;lt;refreshmax&amp;gt;51.0&amp;lt;/refreshmax&amp;gt;&lt;br /&gt;
    &amp;lt;/fallback&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &#039;&#039;&#039;Example -&#039;&#039;&#039; You can also specify the range for the fallback yourself.&lt;br /&gt;
&lt;br /&gt;
If none of the overrides match the video fps, or no refreshrates match any of the fps matching overrides, and no fallbacks are specified or no refreshrates match any fallbacks, it will automatically choose the best refreshrate (same as having no overrides and fallbacks).&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/adjustrefreshrate&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#CADCFB;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;checkdxvacompatibility&amp;gt;value&amp;lt;/checkdxvacompatibility&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Advanced setting not present: let Kodi autodetect cards that support H.264 profile &amp;gt; L4.1. Set value to false to enable DXVA no matter what. Set value to true if Kodi doesn&#039;t autodetect that the graphics card doesn&#039;t support &amp;gt; L4.1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;useocclusionquery&amp;gt;-1&amp;lt;/useocclusionquery&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Use an occlusion query when capturing videoframes, -1 means auto detect, 0 means disabled, 1 means enabled, the default is -1.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;fpsdetect&amp;gt;1&amp;lt;/fpsdetect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| FPS detection for video playback&lt;br /&gt;
* 0 = trust codec fps&lt;br /&gt;
* 1 = recalculate from video timestamps with uniform spacing&lt;br /&gt;
* 2 = recalculate from video timestamps always&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot;| Start of &#039;&#039;&#039;latency&#039;&#039;&#039; tags. Display latency (video lag). Latency is given in msecs.&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;delay&amp;gt;0&amp;lt;/delay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Global default display latency.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | Override latency for given display (not video) refresh rates. When Kodi is in windowed mode, override is ignored. Multiple overrides are allowed.&lt;br /&gt;
&lt;br /&gt;
Syntax of an override entry:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;refresh&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;, &amp;lt;max&amp;gt; refresh rate range, OR&lt;br /&gt;
  &amp;lt;rate&amp;gt; exact refresh rate&lt;br /&gt;
  &amp;lt;delay&amp;gt; display latency for the given refresh rate&lt;br /&gt;
&amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;23&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;24&amp;lt;/max&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;125&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 125 msec latency at 23-24 Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
    &amp;lt;refresh&amp;gt;&lt;br /&gt;
      &amp;lt;rate&amp;gt;50&amp;lt;/rate&amp;gt;&lt;br /&gt;
      &amp;lt;delay&amp;gt;50&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/refresh&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &#039;&#039;&#039;Example:&#039;&#039;&#039; display has 50 msec latency at 50 (+/-0.01) Hz&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;/latency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#F0E68C;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregex3d&amp;gt;[-. _]3d[-. _]&amp;lt;/stereoscopicregex3d&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregexsbs&amp;gt;[-. _]h?sbs[-. _]&amp;lt;/stereoscopicregexsbs&amp;gt;&lt;br /&gt;
  &amp;lt;stereoscopicregextab&amp;gt;[-. _]h?tab[-. _]&amp;lt;/stereoscopicregextab&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Filename triggers for 3D (stereoscopic) mode.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;assfixedworks&amp;gt;false&amp;lt;/assfixedworks&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Position behavior of ass subtitiles when setting &amp;quot;subtitle position on screen&amp;quot; set to &amp;quot;fixed&amp;quot;. True to show at the fixed position set in video calibration. False to show at the bottom of video (default). {{note|Removed in Kodi v20.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;subtitleverticalmargin&amp;gt;120&amp;lt;/subtitleverticalmargin&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Allows to customise the vertical margin of subtitles, which will be applied to each type of subtitle position in subtitle settings. {{note|Available in Kodi v20 and above.}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== audio ===&lt;br /&gt;
{{anchor|.3Caudio.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;audio&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of headroom Kodi should use above the maximum volume level, in decibels.  Defaults to 0, valid values 0, 6, 12. --&amp;gt;&lt;br /&gt;
  &amp;lt;headroom&amp;gt;0&amp;lt;/headroom&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Default audio player: paplayer or videoplayer --&amp;gt;&lt;br /&gt;
  &amp;lt;defaultplayer&amp;gt;paplayer&amp;lt;/defaultplayer&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be added to library. --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](podcast)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount of gain (dB) to be applied to AC3 streams that have been mixed-down to 2 channels. Default is 12.0. Valid values are: -96.0 to 96.0. --&amp;gt;&lt;br /&gt;
  &amp;lt;ac3downmixgain&amp;gt;12.0&amp;lt;/ac3downmixgain&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Whether to use time based or percentage based seeking. --&amp;gt;&lt;br /&gt;
  &amp;lt;usetimeseeking&amp;gt;true&amp;lt;/usetimeseeking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekforwardbig&amp;gt;600&amp;lt;/timeseekfowardbig&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Time to seek backward in seconds when doing a long seek back.  Defaults to 600 (10 minutes) and -600 (-10 minutes) respectively. --&amp;gt;&lt;br /&gt;
  &amp;lt;timeseekbackwardbig&amp;gt;-600&amp;lt;/timeseekbackward&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Minimum percentage that has to be played before it is considered for incrementing in the Top 100 database view, or for last.fm submittal --&amp;gt;&lt;br /&gt;
  &amp;lt;playcountminimumpercent&amp;gt;99&amp;lt;/playcountminimumpercent&amp;gt; &lt;br /&gt;
  &amp;lt;!-- Whether to use Dynamic Range Compression (DRC) on AC3 streams. 1.0 is &amp;quot;full&amp;quot; compression, as defined by the audio track&#039;s metadata, which is recommended for &amp;quot;basic&amp;quot; sound systems such as the internal speakers on a TV. 0.0 is no compression at all, which is recommended for people with nice multi-speaker sound systems. -1.0 (default) defaults to whatever ffmpeg uses, which is currently the same as 1.0. This has no effect if passthrough is enabled for AC3. --&amp;gt;&lt;br /&gt;
  &amp;lt;applydrc&amp;gt;-1.0&amp;lt;/applydrc&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterhold&amp;gt;0.025&amp;lt;/limiterhold&amp;gt; &lt;br /&gt;
  &amp;lt;!-- default values for limiter/compressor --&amp;gt;&lt;br /&gt;
  &amp;lt;limiterrelease&amp;gt;0.1&amp;lt;/limiterrelease&amp;gt; &lt;br /&gt;
&amp;lt;/audio&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== forcedswaptime ===&lt;br /&gt;
{{anchor|.3Cforcedswaptime.3E}}&lt;br /&gt;
Use to force a backbuffer-&amp;gt;frontbuffer swap while vsync is enabled. Set to the time (in ms) to allow for the swap (e.g. &amp;lt;forcedswaptime&amp;gt;1&amp;lt;/forcedswaptime&amp;gt; is typical).  &lt;br /&gt;
&lt;br /&gt;
Default: Off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edl ===&lt;br /&gt;
{{anchor|.3Cedl.3E}}&lt;br /&gt;
{{main|Edit_decision_list}}&lt;br /&gt;
Commercial break detection not as good you think it could be? Are some commercial breaks in a series of adverts not being skipped? Are some parts being skipped that are clearly not commercials? Does the end of the previous recording still show? The following advanced settings can be used to better identify full commercial break sequences, remove incorrectly flagged commercial breaks, and have playback start at the actual beginning of the recording.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;edl&amp;gt;&lt;br /&gt;
  &amp;lt;!-- if true, commercial breaks will be merged according to the remaining options. --&amp;gt;&lt;br /&gt;
  &amp;lt;mergeshortcommbreaks&amp;gt;false&amp;lt;/mergeshortcommbreaks&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Commercial breaks won&#039;t be merged if the total length of the commercial break would be greater than this (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreaklength&amp;gt;250&amp;lt;/maxcommbreaklength&amp;gt;&lt;br /&gt;
  &amp;lt;!-- After merging, commercial breaks shorter than this will be removed (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;mincommbreaklength&amp;gt;90&amp;lt;/mincommbreaklength&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Commercial breaks that are further apart than this won&#039;t be merged (seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;maxcommbreakgap&amp;gt;120&amp;lt;/maxcommbreakgap&amp;gt;&lt;br /&gt;
  &amp;lt;!-- How long to wait before automatically skipping when the start of a commercial break reached (seconds). Possible values: from -60 to 60--&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowait&amp;gt;0&amp;lt;/commbreakautowait&amp;gt;&lt;br /&gt;
  &amp;lt;!-- How long to rewind after automatically skipping to the end of the commercial break (seconds). Possible values: from -60 to 60 --&amp;gt;&lt;br /&gt;
  &amp;lt;commbreakautowind&amp;gt;0&amp;lt;/commbreakautowind&amp;gt;&lt;br /&gt;
&amp;lt;/edl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PVR &amp;amp; Live TV ==&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
Settings available for PVR, EPG and Live TV. Edit Decision List settings are located in the previous section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== pvr ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
  &amp;lt;timecorrection&amp;gt;0&amp;lt;/timecorrection&amp;gt;  &amp;lt;!-- Correct all times (epg tags, timer tags, recording tags) by this amount of minutes. --&amp;gt;&lt;br /&gt;
  &amp;lt;infotoggleinterval&amp;gt;3000&amp;lt;/infotoggleinterval&amp;gt;  &amp;lt;!-- If there is more than one pvr gui info item available (e.g. multiple recordings active at the same time), use this toggle delay in milliseconds. --&amp;gt;&lt;br /&gt;
  &amp;lt;channeliconsautoscan&amp;gt;true&amp;lt;/channeliconsautoscan&amp;gt; &amp;lt;!-- Automatically scan user defined folder for channel icons when loading internal channel groups. --&amp;gt;&lt;br /&gt;
  &amp;lt;autoscaniconsuserset&amp;gt;false&amp;lt;/autoscaniconsuserset&amp;gt; &amp;lt;!-- Mark channel icons populated by auto scan as &amp;quot;user set&amp;quot;. --&amp;gt;&lt;br /&gt;
  &amp;lt;numericchannelswitchtimeout&amp;gt;1000&amp;lt;/numericchannelswitchtimeout&amp;gt; &amp;lt;!-- Time in ms before the numeric dialog auto closes when confirmchannelswitch is disabled. --&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== pvrrecordings ====&lt;br /&gt;
In v19 and later, allows users to modify sort type and order of pvr recordings. &amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/18605&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Note- These settings are child tags to the &#039;&#039;&amp;lt;pvr&amp;gt;&#039;&#039; tag in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;pvr&amp;gt;&lt;br /&gt;
   &amp;lt;pvrrecordings&amp;gt;&lt;br /&gt;
      &amp;lt;sortmethod&amp;gt;2&amp;lt;/sortmethod&amp;gt;  &amp;lt;!-- 1=Name 2=Date 3=Size 4=File --&amp;gt;&lt;br /&gt;
      &amp;lt;sortorder&amp;gt;2&amp;lt;/sortorder&amp;gt;    &amp;lt;!-- 1=Ascending 2=Descending --&amp;gt;&lt;br /&gt;
   &amp;lt;/pvrrecordings&amp;gt;&lt;br /&gt;
&amp;lt;/pvr&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== epg ===&lt;br /&gt;
{{anchor|.3Cpvr.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;epg&amp;gt;&lt;br /&gt;
  &amp;lt;updatecheckinterval&amp;gt;300&amp;lt;/updatecheckinterval&amp;gt;  &amp;lt;!-- Check every X seconds, if EPG data need to be updated. This does not mean that every X seconds an EPG update is actually triggered, it&#039;s just the interval how often to check whether an update should be triggered. If this value is greater than GUI setting &#039;epg.epgupdate&#039; value, then EPG updates will done with the value specified for &#039;updatecheckinterval&#039;, effectively overriding the GUI setting&#039;s value. --&amp;gt;&lt;br /&gt;
  &amp;lt;updateemptytagsinterval&amp;gt;60&amp;lt;/updateemptytagsinterval&amp;gt;  &amp;lt;!-- If a TV channel has no EPG data, try to obtain data for that channel every X seconds. This overrides the GUI setting &#039;epg.epgupdate&#039; value, but only for channels without EPG data. If this value is less than &#039;updatecheckinterval&#039; value, then data update will be done with the interval specified by &#039;updatecheckinterval&#039;. Example 1: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 60 =&amp;gt; trigger an EPG update for every channel without EPG data every 5 minutes and trigger an EPG update for every channel with EPG data every 2 hours. Example 2: epg.epgupdate = 120 (minutes!), updatecheckinterval = 300, updateemptytagsinterval = 3600 =&amp;gt; trigger an EPG update for every channel without EPG data every 2 hours and trigger an EPG update for every channel with EPG data every 1 hour. --&amp;gt;&lt;br /&gt;
  &amp;lt;cleanupinterval&amp;gt;900&amp;lt;/cleanupinterval&amp;gt;  &amp;lt;!-- remove old entries from the EPG every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;activetagcheckinterval&amp;gt;60&amp;lt;/activetagcheckinterval&amp;gt;  &amp;lt;!-- check for updated active tags every X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;retryinterruptedupdateinterval&amp;gt;60&amp;lt;/retryinterruptedupdateinterval&amp;gt;  &amp;lt;!-- retry an interrupted EPG update after X seconds --&amp;gt;&lt;br /&gt;
  &amp;lt;displayupdatepopup&amp;gt;true&amp;lt;/displayupdatepopup&amp;gt;  &amp;lt;!-- display a progress popup while updating EPG data from clients --&amp;gt;&lt;br /&gt;
  &amp;lt;displayincrementalupdatepopup&amp;gt;false&amp;lt;/displayincrementalupdatepopup&amp;gt;  &amp;lt;!-- also display a progress popup while doing incremental EPG updates --&amp;gt;&lt;br /&gt;
&amp;lt;/epg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video library settings ==&lt;br /&gt;
&lt;br /&gt;
=== videoextensions ===&lt;br /&gt;
{{anchor|.3Cvideoextensions.3E}}&amp;lt;section begin=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Video windows.&lt;br /&gt;
&lt;br /&gt;
Default extensions for VIDEOS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.m4v .3g2 .3gp .nsv .tp .ts .ty .strm .pls .rm .rmvb .mpd .m3u .m3u8 .ifo .mov .qt .divx .xvid&lt;br /&gt;
.bivx .vob .nrg .img .iso .udf .pva .wmv .asf .asx .ogm .m2v .avi .bin .dat .mpg .mpeg .mp4&lt;br /&gt;
.mkv .mk3d .avc .vp3 .svq3 .nuv .viv .dv .fli .flv .001 .wpl .xspf .zip .vdr .dvr-ms .xsp .mts&lt;br /&gt;
.m2t .m2ts .evo .ogv .sdp .avs .rec .url .pxml .vc1 .h264 .rcv .rss .mpls .mpl .webm .bdmv&lt;br /&gt;
.bdm .wtv .trp .f4v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;videoextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/videoextensions&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;videoextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== discstubextensions ===&lt;br /&gt;
{{main|Media stubs}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
The default filename extension for Disc Stubs is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
.disc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Using the following tags, it is possible to &amp;lt;tt&amp;gt;&amp;lt;add&amp;gt;&amp;lt;/tt&amp;gt; additional or &amp;lt;tt&amp;gt;&amp;lt;remove&amp;gt;&amp;lt;/tt&amp;gt; existing disc stub extensions to better suit your requirements.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;discstubextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.disk|.stub&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.disc&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/discstubextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;discstubextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== languagecodes ===&lt;br /&gt;
{{anchor|.3Clanguagecodes.3E}}&lt;br /&gt;
Translation table for subtitle and audio names.  Contains entries of the form&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languagecodes&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;short&amp;gt;alt&amp;lt;/short&amp;gt;&lt;br /&gt;
    &amp;lt;long&amp;gt;Alternate&amp;lt;/long&amp;gt;&lt;br /&gt;
  &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/languagecodes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== moviestacking ===&lt;br /&gt;
{{anchor|.3Cmoviestacking.3E}}&amp;lt;section begin=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is used by the [[Naming_video_files/Movies#Split_Video_Files|file stacking]] algorithm to combine multi-part files and contains a list of &amp;quot;&#039;&#039;[[RegEx_tutorial|regular expressions]]&#039;&#039;&amp;quot;. For stacking videos that are contained in folders, such as VIDEO_TS folders, see &#039;&#039;&#039;[[advancedsettings.xml#folderstacking|&amp;lt;folderstacking&amp;gt;]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As of v9.11, video stacking regular expressions &#039;&#039;&#039;must&#039;&#039;&#039; contain exactly four (4) capture expressions. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[0-9]+)(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/part/pt/disk/disc&amp;gt; &amp;lt;a-d&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck])[ _.-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;!-- movienamea-xvid.avi, movienameb-xvid.avi --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;append=&amp;quot;yes&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the end.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;append&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This expression will match movename1-xvid.avi, moviename2-xvid.avi.&lt;br /&gt;
         Be warned that it will likely stack sequels in a flat directory layout,&lt;br /&gt;
         so it is only recommend in a dir-per-video layout. --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(.*?)([ ._-]*[0-9])(.*?)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions will remain intact and the user specified ones will be added to the beginning. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;moviestacking action=&amp;quot;prepend&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;(Title)(Volume)(Ignore)(Extension)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/moviestacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no argument is supplied, or the argument &amp;lt;tt&amp;gt;append=&amp;quot;no&amp;quot;&amp;lt;/tt&amp;gt; is supplied, the default moviestacking regular expressions are overwritten by the user specified ones.&lt;br /&gt;
&amp;lt;section end=&amp;quot;moviestacking&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== folderstacking ===&lt;br /&gt;
{{main|Naming_video_files/Movies}}&lt;br /&gt;
This is similar to &#039;&#039;&#039;[[advancedsettings.xml#moviestacking|&amp;lt;moviestacking&amp;gt;]]&#039;&#039;&#039;, but is used for videos that are contained in folders that use the folder names to stack, such as VIDEO_TS folders (DVD rips that are not in ISO format).&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folderstacking&amp;gt;&lt;br /&gt;
  &amp;lt;!-- &amp;lt;cd/dvd/disk/disc&amp;gt; &amp;lt;0-N&amp;gt; --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;((cd|dvd|dis[ck])[0-9]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/folderstacking&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cleandatetime ===&lt;br /&gt;
{{anchor|.3Ccleandatetime.3E}}&lt;br /&gt;
Matches a year number in a string using a &#039;&#039;[[RegEx_tutorial|Regular Expression]]&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Default expression:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleandatetime&amp;gt;(.*[^ _\,\.\(\)\[\]\-])[ _\.\(\)\[\]\-]+(19[0-9][0-9]|20[0-9][0-9])([ _\,\.\(\)\[\]\-]|[^0-9]$)?&amp;lt;/cleandatetime&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* The string found before will be used as basis string getting cleaned by the cleanstrings expressions. &lt;br /&gt;
:* By default date formats like MM:YY are ignored.&lt;br /&gt;
&lt;br /&gt;
=== cleanstrings ===&lt;br /&gt;
{{anchor|.3Ccleanstrings.3E}}&lt;br /&gt;
Clean unwanted characters from filenames or folders by using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;. Please note that everything right of the match (at the end of the file name) is removed, so if you would have a file named &#039;&#039;Super movie.mp4&#039;&#039; and would add &amp;lt;tt&amp;gt;&amp;lt;regexp&amp;gt; &amp;lt;/regexp&amp;gt;&amp;lt;/tt&amp;gt; (only a space), the only thing that would be left is &#039;&#039;Super&#039;&#039;, which is probably not what you want.&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L188 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Default expressions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;cleanstrings&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;[ _\,\.\(\)\[\]\-](aka|ac3|dts|custom|dc|remastered|divx|divx5|dsr|dsrip|dutch|dvd|dvd5|dvd9|dvdrip|dvdscr|dvdscreener|screener|dvdivx|cam|fragment|fs|hdtv|hdrip|hdtvrip|internal|limited|multisubs|ntsc|ogg|ogm|pal|pdtv|proper|repack|rerip|retail|r3|r5|bd5|se|svcd|swedish|german|read.nfo|nfofix|unrated|extended|ws|telesync|ts|telecine|tc|brrip|bdrip|480p|480i|576p|576i|720p|720i|1080p|1080i|3d|hrhd|hrhdtv|hddvd|bluray|x264|h264|xvid|xvidvd|xxx|www.www|cd[1-9]|\[.*\])([ _\,\.\(\)\[\]\-]|$)&amp;lt;/regexp&amp;gt;&lt;br /&gt;
   &amp;lt;regexp&amp;gt;(\[.*\])&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/cleanstrings&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== tvshowmatching ===&lt;br /&gt;
{{anchor|.3Ctvshowmatching.3E}}&lt;br /&gt;
Matches the season and episode numbers in file paths by using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Github_link|[https://github.com/xbmc/xbmc/blob/Matrix/xbmc/settings/AdvancedSettings.cpp#L232 Code in Github]}}&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvshowmatching&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;s([0-9]+)[ ._x-]*e([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02, S01xE02 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.ep01, foo.EP_01 --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.yyyy.mm.dd.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.mm.dd.yyyy.* (byDate=true) --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.1x09* or just /1x09* --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- foo.103*, 103 foo --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$&amp;lt;/regexp&amp;gt;  &amp;lt;!-- Part I, Pt.VI --&amp;gt;&lt;br /&gt;
&amp;lt;/tvshowmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
:* Paths are converted to lower case before matching.&lt;br /&gt;
:* Examples of matching regexps for certain filenames can be found on the [[Naming_video_files/TV_shows|TV shows]] page.&lt;br /&gt;
&lt;br /&gt;
:* For multi-episode matching to work, there needs to be a third set of parentheses &#039;()&#039; at the end, this part is fed back into the regexp engine.&lt;br /&gt;
&lt;br /&gt;
:* A [https://forum.kodi.tv/showthread.php?tid=51614 forum thread] has a discussion of pre-made regex lists to match common names. These might improve Kodi&#039;s ability to match TV show names in some situations, at the risk of additional false positives.&lt;br /&gt;
&lt;br /&gt;
==== Filenames without Season ====&lt;br /&gt;
There are two methods to add episodes without a season in their file path. Both ways will force the season to &#039;1&#039; by default, so that you can use&lt;br /&gt;
the &#039;Use Absolute Ordering (Single Season)&#039; setting from the TheTvDb.com scraper.&lt;br /&gt;
&lt;br /&gt;
; Simple Method &#039;&#039;(XBMC v9.11 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Use only one pair of parentheses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]([0-9]+)&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
; Advanced Method &#039;&#039;(XBMC v10.05 onwards and Kodi)&#039;&#039;&lt;br /&gt;
: Supports multi-episode files without season&lt;br /&gt;
: Use an empty pair of parentheses for the season&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp&amp;gt;[/\._ \-]()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Specifying Default Season &#039;&#039;(XBMC v12.0 onwards and Kodi)&#039;&#039;&lt;br /&gt;
It is possible to set the default season for specific regular expressions by setting the &#039;defaultseason&#039; attribute.&lt;br /&gt;
: Works with both the simple method and advanced method&lt;br /&gt;
: If not used, the season will be set to &#039;1&#039;&lt;br /&gt;
: Useful for setting specials to season &#039;0&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;regexp defaultseason=&amp;quot;0&amp;quot;&amp;gt;[/\._ \-]X()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;regexp defaultseason=&amp;quot;1&amp;quot;&amp;gt;[/\._ \-]E()([0-9]+)(-[0-9]+)?&amp;lt;/regexp&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== tvmultipartmatching ===&lt;br /&gt;
{{anchor|.3Ctvmultipartmatching.3E}}&lt;br /&gt;
Matches a multipart episode number based on a previously identified episode file, using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tvmultipartmatching&amp;gt;^[-_ex]+([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)&amp;lt;/tvmultipartmatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:* Text matching is compared case-insensitive.&lt;br /&gt;
:* Specifying this option &#039;&#039;&#039;replaces&#039;&#039;&#039; the default value&lt;br /&gt;
&lt;br /&gt;
=== excludefromscan ===&lt;br /&gt;
{{anchor|.3Cexcludefromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a library scan (except tvshows) using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;. This can be for both Video or Audio sections of &amp;lt;tt&amp;gt;advancedsettings.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludefromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;-trailer&amp;lt;/regexp&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== excludefromlisting ===&lt;br /&gt;
{{anchor|.3Cexcludefromlisting.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;  &lt;br /&gt;
  &amp;lt;excludefromlisting&amp;gt; &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in Files View --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludefromlisting&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== excludetvshowsfromscan ===&lt;br /&gt;
{{anchor|.3Cexcludetvshowsfromscan.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from a tvshow library scan using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defaults:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;video&amp;gt;&lt;br /&gt;
  &amp;lt;excludetvshowsfromscan&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;[!-._ \\/]sample[-._ \\/]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/excludetvshowsfromscan&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:* Arguments &amp;lt;tt&amp;gt;action=&amp;quot;append&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;action=&amp;quot;prepend&amp;quot;&amp;lt;/tt&amp;gt; will insert user specified expressions after, or before, the defaults above. (Further details in [[Advancedsettings.xml#.3Cmoviestacking.3E|moviestacking]] section)&lt;br /&gt;
&lt;br /&gt;
=== trailermatching ===&lt;br /&gt;
{{anchor|.3Ctrailermatching.3E}}&lt;br /&gt;
Contains &amp;quot;&#039;&#039;[[RegEx_tutorial|Regular Expression]]&#039;&#039;&amp;quot; syntax (commonly referred to as &amp;quot;&#039;&#039;[[RegEx_tutorial|RegEx]]&#039;&#039;&amp;quot; or &amp;quot;&#039;&#039;[[RegEx_tutorial|RegExp]]&#039;&#039;&amp;quot;) to match the locally stored trailers to movies in the library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;trailermatching&amp;gt;&lt;br /&gt;
    &amp;lt;!-- This regexp will match moviename_Trailer.avi --&amp;gt;&lt;br /&gt;
    &amp;lt;regexp&amp;gt;(.*?)(_Trailer)(\.[^.]+)$&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;/trailermatching&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videolibrary ===&lt;br /&gt;
{{anchor|.3Cvideolibrary.3E}}&lt;br /&gt;
Options specific to the Video Library&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;false&amp;lt;/allitemsonbottom&amp;gt;  &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;  &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;usefasthash&amp;gt;true&amp;lt;/usefasthash&amp;gt; &amp;lt;!-- defaults to true. Set to false in order to skip hashing based on the folders modification time. --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt; &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;  &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* --&amp;gt;&lt;br /&gt;
    &amp;lt;exportautothumbs&amp;gt;false&amp;lt;/exportautothumbs&amp;gt;  &amp;lt;!-- export auto-generated thumbs. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importwatchedstate&amp;gt;false&amp;lt;/importwatchedstate&amp;gt;  &amp;lt;!-- import previously exported playdate and playcount from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;importresumepoint&amp;gt;false&amp;lt;/importresumepoint&amp;gt;  &amp;lt;!-- import previously exported resume point from .nfo files. Defaults to false --&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt; &amp;lt;!-- 0 results in using the current datetime when adding a video;&lt;br /&gt;
                                  1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                  2 results in using the newer datetime of the file&#039;s mtime and ctime --&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Extra artwork ====&lt;br /&gt;
&lt;br /&gt;
Applies to Kodi v18 only.&lt;br /&gt;
&lt;br /&gt;
Configuration to expand the artwork automatically added by Kodi to media items in the library, either from local files or online scrapers.&lt;br /&gt;
&lt;br /&gt;
The original basic artwork types are still hardcoded so they don&#039;t need to be configured here (and can&#039;t be removed). &amp;quot;poster&amp;quot; and &amp;quot;fanart&amp;quot; for movies, movie sets, TV shows, seasons, and music videos; &amp;quot;banner&amp;quot; for TV shows and seasons; and &amp;quot;thumb&amp;quot; for episodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ... combine with &amp;quot;videolibrary&amp;quot; settings above --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV shows --&amp;gt;&lt;br /&gt;
    &amp;lt;tvshowextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;characterart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/tvshowextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV show seasons --&amp;gt;&lt;br /&gt;
    &amp;lt;tvseasonextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/tvseasonextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for TV show episodes --&amp;gt;&lt;br /&gt;
    &amp;lt;episodeextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;fanart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/episodeextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for movies --&amp;gt;&lt;br /&gt;
    &amp;lt;movieextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/movieextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for movie sets / collections --&amp;gt;&lt;br /&gt;
    &amp;lt;moviesetextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;keyart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/moviesetextraart&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Additional artwork to add for musicvideos --&amp;gt;&lt;br /&gt;
    &amp;lt;musicvideoextraart&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;banner&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;clearlogo&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;discart&amp;lt;/arttype&amp;gt;&lt;br /&gt;
      &amp;lt;arttype&amp;gt;landscape&amp;lt;/arttype&amp;gt;&lt;br /&gt;
    &amp;lt;/musicvideoextraart&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== videoscanner ===&lt;br /&gt;
{{anchor|.3Cvideoscanner.3E}}&lt;br /&gt;
Options specific to the Video scanner&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;videoscanner&amp;gt;&lt;br /&gt;
    &amp;lt;ignoreerrors&amp;gt;true&amp;lt;/ignoreerrors&amp;gt; &amp;lt;!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don&#039;t have to keep hitting &amp;quot;yes&amp;quot; to keep scanning.--&amp;gt;&lt;br /&gt;
  &amp;lt;/videoscanner&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Library artwork ==&lt;br /&gt;
&lt;br /&gt;
{{note|Using &amp;lt;imageres&amp;gt;9999&amp;lt;/imageres&amp;gt; and &amp;lt;fanartres&amp;gt;9999&amp;lt;/fanartres&amp;gt; will allow caching artwork at original size.}}&lt;br /&gt;
&lt;br /&gt;
=== imageres ===&lt;br /&gt;
{{anchor|.3Cimageres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;imageres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached artwork]] (other than fanart / 16:9 images) should be resized to in pixels. The width is automatically calculated as being 16/9*height.  The image will be resized to fit within this size. e.g. an image that is 2000x500 will be cached at size 1280x320. An image that is 500x800 will be cached at size 450x720 using the default value of 720.&amp;lt;section end=&amp;quot;imageres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imageres&amp;gt;720&amp;lt;/imageres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== fanartres ===&lt;br /&gt;
{{anchor|.3Cfanartres.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=&amp;quot;fanartres description&amp;quot; /&amp;gt;Specify the maximum resolution that [[Artwork/Cache#Texture optimization| cached fanart]] should be resized to in pixels. The width is automatically calculated as being 16/9*height. Only images that are exactly 16x9 and equal to or greater than this resolution will be cached at this size - all other images will be cached using &amp;lt;imageres&amp;gt;. The default value is 1080.&amp;lt;section end=&amp;quot;fanartres description&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fanartres&amp;gt;1080&amp;lt;/fanartres&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== imagescalingalgorithm ===&lt;br /&gt;
Specify the image scaling algorithm for image resizing when [[Artwork/Cache#Texture optimization| caching artwork]] to the local texture cache.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;imagescalingalgorithm&amp;gt;bicubic&amp;lt;/imagescalingalgorithm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/xbmc/xbmc/blob/1a8753d5cd93890dc6a9f9d4b2ce8848066ea5d0/xbmc/pictures/PictureScalingAlgorithm.cpp#L32-L43 Available image scaling algorithms]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
fast_bilinear&lt;br /&gt;
bilinear&lt;br /&gt;
bicubic&lt;br /&gt;
experimental&lt;br /&gt;
nearest_neighbor&lt;br /&gt;
averaging_area&lt;br /&gt;
bicublin&lt;br /&gt;
gaussian&lt;br /&gt;
sinc&lt;br /&gt;
lanczos&lt;br /&gt;
bicubic_spline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video and music library settings ==&lt;br /&gt;
&lt;br /&gt;
=== playlistasfolders ===&lt;br /&gt;
{{anchor|.3Cplaylistasfolders.3E}}&lt;br /&gt;
In the recent releases, playlists are treated as folders. Selecting a playlist no longer plays it, but opens it, as if it were a folder.&lt;br /&gt;
&lt;br /&gt;
Set to false to revert to the previous behaviour. When you select a playlist, its content is added to the list of elements to be played.&lt;br /&gt;
&lt;br /&gt;
:{{note|This setting will not affect smart playlists, they will always show as folders.}}&lt;br /&gt;
&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlistasfolders&amp;gt;true&amp;lt;/playlistasfolders&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlistretries ===&lt;br /&gt;
{{anchor|.3Cplaylistretries.3E}}&lt;br /&gt;
The number of retries attempted if a source is offline. With this control you can alter the number of consecutive failed items before a playlist fails.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;playlistretries&amp;gt;100&amp;lt;/playlistretries&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== playlisttimeout ===&lt;br /&gt;
{{anchor|.3Cplaylisttimeout.3E}}&lt;br /&gt;
The timeout, in seconds, before item failure.&lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;playlisttimeout&amp;gt;20&amp;lt;/playlisttimeout&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sorttokens ===&lt;br /&gt;
Allows you to specify additional tokens that will be ignored at the start of lines during sorting.&lt;br /&gt;
{{note|Sort tokens are case sensitive.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
  &amp;lt;token&amp;gt;the&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example &amp;quot;the &amp;quot;, &amp;quot;the.&amp;quot; and &amp;quot;the_&amp;quot; will be ignored at the start of titles or names when sorting items, in both video and music libraries. A separator can also be specified, for example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sorttokens&amp;gt;&lt;br /&gt;
    &amp;lt;token separators=&amp;quot;&#039;&amp;quot;&amp;gt;L&amp;lt;/token&amp;gt;&lt;br /&gt;
&amp;lt;/sorttokens&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In that case the value L&#039;, as in French movie name &#039;&#039;L&#039;argent&#039;&#039;, will be ignored and the item listed under &amp;quot;A&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== musicdatabase/videodatabase ===&lt;br /&gt;
{{anchor|.3Cmusicdatabase.3E/.3Cvideodatabase.3E|musicdatabase/videodatabase|database tags music/video/tv/epg/adsp}}&lt;br /&gt;
{{main|MySQL}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
Allows advanced customization of the default database settings for music, video, TV, EPG, and ADSP databases.&lt;br /&gt;
&lt;br /&gt;
:{{note| &#039;&#039;&#039;It is HIGHLY recommended that you not attempt to place an sqlite3 database outside of kodi&#039;s path.  sqlite3 contains no filesystem abstraction, so this will plain break on any non-local (as far as Kodi is concerned) paths.  Use this for mysql only.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parent tags:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; - Highly experimental/unstable and no practical benefit for most users. &#039;&#039;&#039;Avoid using.&#039;&#039;&#039;&lt;br /&gt;
{{MySQL warning}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child tags: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;type&amp;gt;&lt;br /&gt;
: &#039;&#039;Required&#039;&#039; - Can be either &amp;quot;sqlite3&amp;quot; or &amp;quot;mysql&amp;quot; (default: sqlite3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;host&amp;gt;&lt;br /&gt;
:&#039;&#039;Required&#039;&#039; - &lt;br /&gt;
* sqlite3: defines the relative path to the database file (eg. /usr/local/kodi/databases).&lt;br /&gt;
* mysql: defines the host of the mysql socket (eg. localhost, 192.168.0.1, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;port&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the port of the mysql socket (default: 3306)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;name&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; -&lt;br /&gt;
:by default &amp;quot;MyVideos&amp;quot;+DB number will be used.&lt;br /&gt;
* sqlite3: defines the name of the database file to read from, excluding the &amp;quot;.db&amp;quot; extension.&lt;br /&gt;
* mysql: defines the name of the database to use&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;user&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;pass&amp;gt;&lt;br /&gt;
: &#039;&#039;Required for MySQL&#039;&#039; -&lt;br /&gt;
* sqlite3: silently ignored&lt;br /&gt;
* mysql: defines the password for the user with privileged access to the database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;compression&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - Defaults to false. Set to &amp;quot;true&amp;quot; to enable MySQL compression protocol. Performance benefit is going to be largely dependent on the network bandwidth, latency between database and clients and on the size of the result sets. [https://github.com/xbmc/xbmc/pull/6484]&lt;br /&gt;
: {{Note|Slower clients (such as the RPi and others) won&#039;t benefit from it as the zlib de-compression overhead is higher than the actual compression savings}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;key&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;cert&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ca&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;capath&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;ciphers&amp;gt;&lt;br /&gt;
: &#039;&#039;Optional&#039;&#039; - SSL setting for MySQL [https://github.com/xbmc/xbmc/pull/2566]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1) Configure a database for MySQL.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;videodatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;192.168.0.10&amp;lt;/host&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;kodi_video&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
  &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
&amp;lt;/videodatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Configure a database for an sqlite database.&lt;br /&gt;
:{{note| &#039;&#039;The &#039;&#039;&#039;&amp;lt;videodatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;musicdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;tvdatabase&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;epgdatabase&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;adspdatabase&amp;gt;&#039;&#039;&#039; tags are interchangeable here.&#039;&#039;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicdatabase&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;sqlite3&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;host&amp;gt;/usr/local/share/kodi/databases&amp;lt;/host&amp;gt;&lt;br /&gt;
&amp;lt;/musicdatabase&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;videodatabase&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== externalplayer ===&lt;br /&gt;
{{anchor|.3Cexternalplayer.3E}}&lt;br /&gt;
{{see|External players}}&lt;br /&gt;
&lt;br /&gt;
== Music settings ==&lt;br /&gt;
&lt;br /&gt;
=== musicextensions ===&lt;br /&gt;
{{anchor|.3Cmusicextensions.3E}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
Default extensions for MUSIC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.nsv .m4a .flac .aac .strm .pls .rm .rma .mpa .wav .wma .ogg .mp3 .mp2 .m3u .gdm .imf .m15 .sfx&lt;br /&gt;
.uni .ac3 .dts .cue .aif .aiff .wpl .xspf .ape .mac .mpc .mp+ .mpp .shn .zip .wv .dsp .xsp .xwav&lt;br /&gt;
.waa .wvs .wam .gcm .idsp .mpdsp .mss .spt .rsd .sap .cmc .cmr .dmc .mpt .mpd .rmt .tmc .tm8&lt;br /&gt;
.tm2 .oga .url .pxml .tta .rss .wtv .mka .tak .opus .dff .dsf .m4b .dtshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to add or remove extensions for Music, using the following XML tags. Useful if you keep, say, FLAC and mp3 versions of music in the same folder. The &amp;lt;remove&amp;gt; tag can be used to remove mp3 from being listed in the library, leaving only the higher quality FLAC being displayed.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;musicextensions&amp;gt;&lt;br /&gt;
   &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
   &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
 &amp;lt;/musicextensions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=&amp;quot;musicextensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cddbaddress ===&lt;br /&gt;
{{anchor|.3Ccddbaddress.3E}}&lt;br /&gt;
The address of the online CDDb database.  You may set this to another freedb mirror if there is a more suitable one.  &lt;br /&gt;
&lt;br /&gt;
Default: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;gt;&lt;br /&gt;
&amp;lt;cddbaddress&amp;gt;freedb.freedb.org&amp;lt;/cddbaddress&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== songinfoduration ===&lt;br /&gt;
{{anchor|.3Csonginfoduration.3E}}&lt;br /&gt;
This controls how long the song information will remain onscreen when the song changes during visualisations.  The valid range is &amp;quot;1&amp;quot; to &amp;quot;Indefinite (0)&amp;quot;, in seconds.  This does not include the duration of any transition effects. &lt;br /&gt;
&lt;br /&gt;
Default:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;songinfoduration&amp;gt;10&amp;lt;/songinfoduration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musicfilenamefilters ===&lt;br /&gt;
{{anchor|.3Cmusicfilenamefilters.3E}}&lt;br /&gt;
Contains filters to match music information (artist, title etc.) from a tag-less music filename.  The first &amp;lt;filter&amp;gt; to match completely is used. Matched items include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%A - Artist&lt;br /&gt;
%T - Title&lt;br /&gt;
%B - Album&lt;br /&gt;
%N - Track number&lt;br /&gt;
%S - Part of set (disk number)&lt;br /&gt;
%D - Duration&lt;br /&gt;
%G - Genre&lt;br /&gt;
%Y - Year&lt;br /&gt;
%R - Rating&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;musicfilenamefilters&amp;gt;&lt;br /&gt;
  &amp;lt;filter&amp;gt;%A - %T&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/musicfilenamefilters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== musiclibrary ===&lt;br /&gt;
Options specific to the Music Library&lt;br /&gt;
&amp;lt;section begin=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;musiclibrary&amp;gt;&lt;br /&gt;
    &amp;lt;allitemsonbottom&amp;gt;true&amp;lt;/allitemsonbottom&amp;gt;       &amp;lt;!-- sorts the &amp;quot;*All&amp;quot; items at the bottom of the list when in Ascending order --&amp;gt;&lt;br /&gt;
    &amp;lt;cleanonupdate&amp;gt;false&amp;lt;/cleanonupdate&amp;gt;            &amp;lt;!-- default set to false to prevent Kodi from removing items from the database while updating.  --&amp;gt;&lt;br /&gt;
    &amp;lt;recentlyaddeditems&amp;gt;35&amp;lt;/recentlyaddeditems&amp;gt;     &amp;lt;!-- number of recently added items. Defaults to 25 --&amp;gt;&lt;br /&gt;
    &amp;lt;albumformat&amp;gt;%B - %Y&amp;lt;/albumformat&amp;gt;              &amp;lt;!-- album label template, default is &amp;quot;%B&amp;quot; --&amp;gt;&lt;br /&gt;
    &amp;lt;prioritiseapetags&amp;gt;true&amp;lt;/prioritiseapetags&amp;gt;     &amp;lt;!-- prioritise APEv2 tags over ID3v1/2 tags, default is false. --&amp;gt;&lt;br /&gt;
    &amp;lt;itemseparator&amp;gt; / &amp;lt;/itemseparator&amp;gt;              &amp;lt;!-- separator used for multiple artists/genres in tags. Note, this is *space* *slash* *space* See Note below--&amp;gt;&lt;br /&gt;
    &amp;lt;artistseparators&amp;gt;                              &amp;lt;!-- separator used for multiple artists. Note that spaces are used for some separators. See Note below--&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;;&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;:&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt;|&amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; feat. &amp;lt;/separator&amp;gt;&lt;br /&gt;
        &amp;lt;separator&amp;gt; ft. &amp;lt;/separator&amp;gt;&lt;br /&gt;
    &amp;lt;/artistseparators&amp;gt;&lt;br /&gt;
    &amp;lt;dateadded&amp;gt;1&amp;lt;/dateadded&amp;gt;                        &amp;lt;!--0 results in using the current datetime when adding a song;&lt;br /&gt;
                                                        1 (default) results in prefering to use the files mtime (if it&#039;s valid) and only using the file&#039;s ctime if the mtime isn&#039;t valid;&lt;br /&gt;
                                                        2 results in using the newer datetime of the file&#039;s mtime and ctime   --&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- New for v19 and later releases --&amp;gt;&lt;br /&gt;
    &amp;lt;useisodates&amp;gt;false&amp;lt;/useisodates&amp;gt;                &amp;lt;!-- When &amp;quot;true&amp;quot; all dates displayed in the music library will be in ISO 8601 format (YYYY-MM-DD or part thereof).&lt;br /&gt;
                                                         Defaults to &amp;quot;false&amp;quot; (use localized dates) --&amp;gt;  &lt;br /&gt;
&amp;lt;/musiclibrary&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Changing the &amp;lt;itemseparator&amp;gt; or &amp;lt;artistseparators&amp;gt; will only affect newly added items. A rescan won&#039;t change the existing ones. Remove the Source(s) or delete the Music DB and rebuild. This process should be made easier from v18 and up using &amp;lt;promptfulltagscan&amp;gt;}}&amp;lt;section end=&amp;quot;MusicLibrary&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Photos settings ==&lt;br /&gt;
&lt;br /&gt;
=== pictureextensions ===&lt;br /&gt;
{{anchor|.3Cpictureextensions.3E}}&lt;br /&gt;
A list of additional file-extensions to allow (&#039;&#039;&#039;add&#039;&#039;&#039;) or exclude (&#039;&#039;&#039;remove&#039;&#039;&#039;) in the My Pictures window.&lt;br /&gt;
&lt;br /&gt;
Default extensions for PICTURES:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.png .jpg .jpeg .bmp .gif .ico .tif .tiff .tga .pcx .cbz .zip .rss .webp .jp2 .apng&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureextensions&amp;gt;&lt;br /&gt;
  &amp;lt;add&amp;gt;.ex1|.ex2&amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;remove&amp;gt;.ex3|.ex4&amp;lt;/remove&amp;gt;&lt;br /&gt;
&amp;lt;/pictureextensions&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== pictureexcludes ===&lt;br /&gt;
{{anchor|.3Cpictureexcludes.3E}}&lt;br /&gt;
Matches filenames or folders which should be excluded from being displayed in My Pictures using a list of &#039;&#039;[[RegEx_tutorial|Regular Expressions]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pictureexcludes&amp;gt;  &amp;lt;!-- Regular expressions that if evaluated to true won&#039;t be displayed in My Pictures --&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;small&amp;lt;/regexp&amp;gt;&lt;br /&gt;
  &amp;lt;regexp&amp;gt;[-\._ ](sample|trailer)[-\._ ]&amp;lt;/regexp&amp;gt;&lt;br /&gt;
&amp;lt;/pictureexcludes&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== slideshow ===&lt;br /&gt;
{{anchor|.3Cslideshow.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;slideshow&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to pan images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;panamount&amp;gt;2.5&amp;lt;/panamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to zoom images as a percentage of the screen --&amp;gt;&lt;br /&gt;
  &amp;lt;zoomamount&amp;gt;5.0&amp;lt;/zoomamount&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Amount to compensate (zoom) images to attempt to reduce black bars. --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Results in cropping of the longer length of the image in order to reduce the black bars on the shorter length of the image.  --&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Defaults to 20. --&amp;gt;&lt;br /&gt;
  &amp;lt;blackbarcompensation&amp;gt;20&amp;lt;/blackbarcompensation&amp;gt;  &lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network settings ==&lt;br /&gt;
&lt;br /&gt;
=== ftp ===&lt;br /&gt;
{{anchor|.3Cftp.3DE}}&lt;br /&gt;
Specific settings if a ftp server is in use as a source&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ftp&amp;gt;&lt;br /&gt;
  &amp;lt;remotethumbs&amp;gt;true&amp;lt;/remotethumbs&amp;gt; &amp;lt;!-- enable extraction of flag and thumb for ftp --&amp;gt;&lt;br /&gt;
&amp;lt;/ftp&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== samba ===&lt;br /&gt;
{{anchor|.3Csamba.3E}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samba&amp;gt;&lt;br /&gt;
  &amp;lt;doscodepage&amp;gt;&amp;lt;/doscodepage&amp;gt;  &amp;lt;!-- code page to use for filenames --&amp;gt;&lt;br /&gt;
  &amp;lt;clienttimeout&amp;gt;10&amp;lt;/clienttimeout&amp;gt;  &amp;lt;!-- timeout (in seconds) --&amp;gt;&lt;br /&gt;
  &amp;lt;statfiles&amp;gt;true&amp;lt;/statfiles&amp;gt;  &amp;lt;!-- Set to false to disable smb stat() on files to speed up listings of large directories (over slow links) --&amp;gt;&lt;br /&gt;
&amp;lt;/samba&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hosts ===&lt;br /&gt;
{{anchor|.3Cfhosts.3E}}&lt;br /&gt;
Static dns entries which take precedence over your dns server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hosts&amp;gt;&lt;br /&gt;
  &amp;lt;entry name=&amp;quot;HOSTNAME&amp;quot;&amp;gt;IPADDRESS&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/hosts&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== network ===&lt;br /&gt;
{{anchor|.3Cnetwork.3E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml line=&#039;line&#039;&amp;gt;&lt;br /&gt;
&amp;lt;network&amp;gt;&lt;br /&gt;
  &amp;lt;curlclienttimeout&amp;gt;10&amp;lt;/curlclienttimeout&amp;gt;  &amp;lt;!-- Timeout in seconds for libcurl (http/ftp) connections --&amp;gt;&lt;br /&gt;
  &amp;lt;curllowspeedtime&amp;gt;20&amp;lt;/curllowspeedtime&amp;gt;    &amp;lt;!-- Time in seconds for libcurl to consider a connection lowspeed --&amp;gt;&lt;br /&gt;
  &amp;lt;curlretries&amp;gt;2&amp;lt;/curlretries&amp;gt;               &amp;lt;!-- Amount of retries for certain failed libcurl operations (e.g. timeout) --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxyusername&amp;gt;&amp;lt;/httpproxyusername&amp;gt;    &amp;lt;!-- username for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;httpproxypassword&amp;gt;&amp;lt;/httpproxypassword&amp;gt;    &amp;lt;!-- password for Basic Proxy Authentication --&amp;gt;&lt;br /&gt;
  &amp;lt;disableipv6&amp;gt;false&amp;lt;/disableipv6&amp;gt;           &amp;lt;!-- Certain hardware/OS combinations have trouble with ipv6. Set &amp;quot;true&amp;quot; to disable --&amp;gt;&lt;br /&gt;
  &amp;lt;disablehttp2&amp;gt;false&amp;lt;/disablehttp2&amp;gt;         &amp;lt;!-- Added in v19- Allows disabling HTTP2 for broken Curl / HTTP2 servers --&amp;gt;&lt;br /&gt;
  &amp;lt;nfstimeout&amp;gt;30&amp;lt;/nfstimeout&amp;gt;                &amp;lt;!-- Added in v19- Timeout in seconds for NFS access, 0 = wait forever (previous behaviour) default is 5s  --&amp;gt;&lt;br /&gt;
  &amp;lt;catrustfile&amp;gt;filepath&amp;lt;/catrustfile&amp;gt;        &amp;lt;!-- Added in v19- Allows specifying a custom SSL CA trust store bundle. e.g. special://masterprofile/cacerts.pem --&amp;gt;&lt;br /&gt;
  &amp;lt;curlkeepaliveinterval&amp;gt;30&amp;lt;/curlkeepaliveinterval&amp;gt;     &amp;lt;!-- Added in v19- Enable TCP keepalive probes in curl --&amp;gt; &lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Kodi v17, the three buffer settings are removed from the &amp;lt;code&amp;gt;&amp;lt;network&amp;gt;&amp;lt;/code&amp;gt; tag and now placed under the new &amp;lt;code&amp;gt;&amp;lt;cache&amp;gt;&amp;lt;/code&amp;gt; tag. See &#039;&#039;&#039;[[#cache]]&#039;&#039;&#039; for full details.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;curlkeepaliveinterval&amp;gt;&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/19319&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cache ===&lt;br /&gt;
{{see also|HOW-TO:Modify_the_video_cache}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cache&amp;gt;&lt;br /&gt;
  &amp;lt;memorysize&amp;gt;0&amp;lt;/memorysize&amp;gt;   &amp;lt;!-- Number of bytes used for buffering streams in memory when set to 0 the cache will be written to disk instead of RAM --&amp;gt;&lt;br /&gt;
  &amp;lt;buffermode&amp;gt;0&amp;lt;/buffermode&amp;gt;   &amp;lt;!-- Choose what to buffer:&lt;br /&gt;
                                    0) Buffer all internet filesystems (like &amp;quot;2&amp;quot; but additionally also ftp, webdav, etc.) &lt;br /&gt;
                                    1) Buffer all filesystems (including local) (default since Kodi 19)&lt;br /&gt;
                                    2) Only buffer true internet filesystems (streams) (http, https, etc.)&lt;br /&gt;
                                    3) No buffer&lt;br /&gt;
                                    4) Buffer all network filesystems (incl. smb, nfs, etc.) --&amp;gt;&lt;br /&gt;
  &amp;lt;readfactor&amp;gt;4.0&amp;lt;/readfactor&amp;gt; &amp;lt;!-- This factor determines the max readrate in terms of readfactor * avg bitrate of a video file. &lt;br /&gt;
                                    This can help on bad connections to keep the cache filled. It will also greatly speed up buffering. Default value 4.0. --&amp;gt;&lt;br /&gt;
&amp;lt;/cache&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airtunesport ===&lt;br /&gt;
{{anchor|.3Cairtunesport.3E}}&amp;lt;section begin=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the defalt listening port of the AirTunes server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airtunesport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airplayport ===&lt;br /&gt;
{{anchor|.3Cairplayport.3E}}&amp;lt;section begin=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
This overwrites the default listening port of the AirPlay server (announced via zeroconf).&lt;br /&gt;
&amp;lt;section end=&amp;quot;airplayport&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File system settings ==&lt;br /&gt;
&lt;br /&gt;
=== packagefoldersize ===&lt;br /&gt;
&amp;lt;section begin=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
{{anchor|.3Cpackagefoldersize.3E}}&lt;br /&gt;
{{xml setting&lt;br /&gt;
 | tag name = packagefoldersize&lt;br /&gt;
 | option type = numerical&lt;br /&gt;
 | option values = &lt;br /&gt;
 | default values = 200&lt;br /&gt;
 | platform = all&lt;br /&gt;
 | XBMC version = 12&lt;br /&gt;
 | description = The amount (in megabytes) of add-on zip packages saved from previous add-on installs. These packages are mainly used for the [[Add-ons|add-on]] rollback feature. Increasing the size should increase the amount of past versions saved. Defaults to 200 MB.&lt;br /&gt;
 | example = Example: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;packagefoldersize&amp;gt;200&amp;lt;/packagefoldersize&amp;gt; &amp;lt;!-- this example would keep up to 200MB of add-on packages. --&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;packagefoldersize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== detectasudf ===&lt;br /&gt;
{{anchor|.3Cdetectasudf.3E}}&lt;br /&gt;
Set to true if you wish to detect joint ISO9660/UDF disks as UDF.  &lt;br /&gt;
&lt;br /&gt;
Default: False&lt;br /&gt;
&lt;br /&gt;
=== handlemounting ===&lt;br /&gt;
{{anchor|.3Chandlemounting.3E}}&lt;br /&gt;
Only used in Linux, it defines if Kodi should attempt to mount media drives.&lt;br /&gt;
&lt;br /&gt;
Default: False. If kodi is executed with the --standalone option (e.g. as done by kodi-standalone.sh) it by default will be True.&lt;br /&gt;
&lt;br /&gt;
=== pathsubstitution ===&lt;br /&gt;
{{anchor|.3Cpathsubstitution.3E}}&lt;br /&gt;
{{main|Path substitution}}&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; Path substition for &amp;quot;sources&amp;quot; and profiles is broken, and will &#039;&#039;&#039;NOT&#039;&#039;&#039; be fixed.}}&lt;br /&gt;
&lt;br /&gt;
Path substitutions are for use for redirecting file paths.  These are processed in order, and are useful for substituting an absolute path on a PC with a path suitable for Kodi to handle.  &lt;br /&gt;
&lt;br /&gt;
Default: No path substitutions defined.  &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pathsubstitution&amp;gt;&lt;br /&gt;
  &amp;lt;substitute&amp;gt;&lt;br /&gt;
    &amp;lt;from&amp;gt;G:\dvds\&amp;lt;/from&amp;gt;&lt;br /&gt;
    &amp;lt;to&amp;gt;smb://somecomputer/g-share/dvds/&amp;lt;/to&amp;gt; &amp;lt;!-- Note the difference between the usage of forward and backslashes --&amp;gt;&lt;br /&gt;
  &amp;lt;/substitute&amp;gt;&lt;br /&gt;
&amp;lt;/pathsubstitution&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input control settings ==&lt;br /&gt;
&lt;br /&gt;
=== remotedelay ===&lt;br /&gt;
{{anchor|.3Cremotedelay.3E}}&lt;br /&gt;
The repeat delay for a LIRC remote control. A delay value between 1 and 20 before a remote button starts repeating on a long keypress (i.e. continuously sending button pushes while it&#039;s held down). &lt;br /&gt;
&lt;br /&gt;
Default: 3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;remotedelay&amp;gt;10&amp;lt;/remotedelay&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== controllerdeadzone ===&lt;br /&gt;
{{anchor|.3Ccontrollerdeadzone.3E}}&lt;br /&gt;
This advanced settings has been removed. &lt;br /&gt;
Since v17, the [[Advancedsettings.xml#controllerdeadzone|&amp;amp;lt;controllerdeadzone&amp;amp;gt;]] advanced setting has been removed. Deadzones can now be configured by plugging in the controller and selecting it in Settings -&amp;gt; System settings -&amp;gt; Input -&amp;gt; Peripherals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== enablemultimediakeys ===&lt;br /&gt;
{{anchor|.3Cenablemultimediakeys.3E}}&lt;br /&gt;
This setting only has any effect on Windows versions of Kodi, and only applies to builds from 28th May 2011 onwards.&lt;br /&gt;
In Windows the multimedia keys generate a WM_APPCOMMAND message in addition the keypress. Kodi processes both keypresses and the WM_APPCOMMAND messages, and the end result would be that the command is executed twice. To avoid this, by default multimedia keypresses are disabled. Although it should rarely be necessary, the enablemultimediakeys setting allows you to enable the multimedia keys.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;enablemultimediakeys&amp;gt;true&amp;lt;/enablemultimediakeys&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== seeksteps ===&lt;br /&gt;
{{Main|Skip steps}}&lt;br /&gt;
&lt;br /&gt;
This setting changes which increments are available in the settings GUI for additive seeking. Note that &amp;lt;code&amp;gt;&amp;lt;seeksteps&amp;gt;&amp;lt;/code&amp;gt; is not used to actually choose which seek steps are enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Default:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;seeksteps&amp;gt;7, 15, 30, 60, 180, 300, 600, 900, 1800&amp;lt;/seeksteps&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{editor note|the defaults need to be updated for seeksteps.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== touchscreen ===&lt;br /&gt;
{{anchor|.3Ctouchscreen.3E}}&lt;br /&gt;
This setting allows you to move/align the origin of the touch screen with the origin of the display used. If touch input does not result in a correct movement of the mouse pointer, the behaviour can be corrected with an offset and a stretch/compress factor.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;touchscreen&amp;gt;&lt;br /&gt;
		&amp;lt;x_offset&amp;gt;0&amp;lt;/x_offset&amp;gt; &amp;lt;!-- set pixel x offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;y_offset&amp;gt;0&amp;lt;/y_offset&amp;gt; &amp;lt;!-- set pixel y offset to align it to the used display--&amp;gt;&lt;br /&gt;
		&amp;lt;x_stretch_factor&amp;gt;1.0&amp;lt;/x_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch x axis--&amp;gt;&lt;br /&gt;
		&amp;lt;y_stretch_factor&amp;gt;1.0&amp;lt;/y_stretch_factor&amp;gt; &amp;lt;!-- stretch/compress the touch y axis--&amp;gt;&lt;br /&gt;
    &amp;lt;/touchscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== scanirserver ===&lt;br /&gt;
Introduced in v18 and used in MS Windows setups only.&amp;lt;ref&amp;gt;https://github.com/xbmc/xbmc/pull/13896&amp;lt;/ref&amp;gt;&lt;br /&gt;
Used to disable the regular connection attempts to the IR Server Suite when there is no remote to connect to.&lt;br /&gt;
&lt;br /&gt;
The default setting is to allow connection attempts. To disable connection attempts change value to &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;scanirserver&amp;gt;true&amp;lt;/scanirserver&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other interface settings ==&lt;br /&gt;
&lt;br /&gt;
=== window ===&lt;br /&gt;
{{anchor|.3Cwindow.3E}}&lt;br /&gt;
{{note|This is a &amp;quot;hidden&amp;quot; guisettings.xml setting (defined by the mouse moving the window size), but it is mentioned here because it is a particularly useful override when used in advancedsettings.xml}}&lt;br /&gt;
This allows you to manually set the default size of Kodi&#039;s windowed mode.  If you resize the window, it will return to the set size when restarting.&lt;br /&gt;
&lt;br /&gt;
WIDTH and HEIGHT are the values for each dimension, in pixels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;window&amp;gt;&lt;br /&gt;
    &amp;lt;width&amp;gt;WIDTH&amp;lt;/width&amp;gt;&lt;br /&gt;
    &amp;lt;height&amp;gt;HEIGHT&amp;lt;/height&amp;gt;&lt;br /&gt;
&amp;lt;/window&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== restrictcapsmask ===&lt;br /&gt;
{{anchor|.3Crestrictcapsmask.3E}}&lt;br /&gt;
Windows only. A bitmask to prevent Kodi from using detected texture capabilities of the GPU. This helps work around buggy hardware/drivers.&lt;br /&gt;
&lt;br /&gt;
1: prevent the use of compressed textures (DXT1, DXT3, DXT5)&lt;br /&gt;
2: prevent the use of non-power-of-two dimensions for textures&lt;br /&gt;
4: prevent the use of compressed textures with non-power-of-two dimensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;restrictcapsmask&amp;gt;0&amp;lt;/restrictcapsmask&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== algorithmdirtyregions ===&lt;br /&gt;
{{anchor|.3Calgorithmdirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;{{note|Some GPU/hardware configurations will have some minor issues (such as a visual &amp;quot;flicker&amp;quot;). For those situations try mode 2 or use the default (mode 3, which requires no advancedsetting). Almost all ARM-based devices (such as [[Android]]) willl likely have flickering issues.}}&lt;br /&gt;
 &lt;br /&gt;
Enable dirty-region processing. Dirty regions are any parts of the screen that have changed since the last frame. By not re-rendering what hasn&#039;t changed the GUI can be sped up. Because all GPUs work differently, only Mode 3 is guaranteed to work for everyone without flickering issues. This mode will reduce CPU/GPU usage, but will not increase GUI speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! value !! result !! description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
| Off&lt;br /&gt;
| The entire viewport is always rendered.&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|Union&lt;br /&gt;
|All dirty regions are grouped into the smallest possible rectangle. This is typically the fastest mode for slower GPUs due to only making one pass.&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| {{nowrap|Cost reduction}}&lt;br /&gt;
| Each dirty region is presented separately, in as many passes as there are regions.&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| {{nowrap|Whole Screen}}&lt;br /&gt;
| The entire screen is rendered if there are any dirty regions. This is a safe default for drivers that clear buffer contents (manifests as blinking or vibrating images). &#039;&#039;&#039;Default&#039;&#039;&#039;&lt;br /&gt;
|}&amp;lt;section end=&amp;quot;algorithmdirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;algorithmdirtyregions&amp;gt;1&amp;lt;/algorithmdirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== visualizedirtyregions ===&lt;br /&gt;
{{anchor|.3Cvisualizedirtyregions.3E}}&lt;br /&gt;
{{see also|HOW-TO:Modify dirty regions}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;Enable dirty-region visualization. Paints a rectangle over marked controls.&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|This is only a development mode and isn&#039;t of use to normal users.}}&lt;br /&gt;
&amp;lt;section end=&amp;quot;visualizedirtyregions&amp;quot; /&amp;gt;&lt;br /&gt;
Example: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;visualizedirtyregions&amp;gt;true&amp;lt;/visualizedirtyregions&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== smartredraw ===&lt;br /&gt;
&lt;br /&gt;
{{note|This is an experimental feature and you might face issues using it. So please be aware of that.}}&lt;br /&gt;
&lt;br /&gt;
This new feature was introduced in Kodi 18 and if enabled, the GUI process call (and therefore the render call) is only done if anything has changed. The result will be a faster GUI and less load if Kodi plays a video&lt;br /&gt;
&lt;br /&gt;
* true: on&lt;br /&gt;
* false: off &#039;&#039;&#039;(Default)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;    &lt;br /&gt;
  &amp;lt;smartredraw&amp;gt;true&amp;lt;/smartredraw&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== showexitbutton ===&lt;br /&gt;
{{anchor|.3Cshowexitbutton.3E}}&lt;br /&gt;
Setting to hide the exit button, useful for people running appliance based setups where exit would only confuse/complicate the user. Modifiable via the advancedsettings.xml by setting showexitbutton to false, default is true (show)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;showexitbutton&amp;gt;true&amp;lt;/showexitbutton&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== fullscreen ===&lt;br /&gt;
{{anchor|.3Cfullscreen.3E}}&lt;br /&gt;
Starts Kodi in full screen (check resolutions!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fullscreen&amp;gt;false&amp;lt;/fullscreen&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== splash ===&lt;br /&gt;
{{anchor|.3Csplash.3E}}&lt;br /&gt;
Set to false if you wish to disable the startup splash image. Defaults to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;splash&amp;gt;true&amp;lt;/splash&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== cputempcommand ===&lt;br /&gt;
{{anchor|.3Ccputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get CPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia and Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sed -e &#039;s/\([0-9]*\)[0-9]\{3\}.*/\1 C/&#039; /sys/class/thermal/thermal_zone0/temp&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;echo &amp;quot;$(sensors -u | tail -n64 | grep temp1_input | awk &#039;{print $2 }&#039; |awk &#039;{printf(&amp;quot;%d\n&amp;quot;,$1 + 0.5);}&#039;) C&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cputempcommand&amp;gt;sensors|sed -ne &amp;quot;s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p&amp;quot;&amp;lt;/cputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== gputempcommand ===&lt;br /&gt;
{{anchor|.3Cgputempcommand.3E}}&lt;br /&gt;
Provide a shell command Kodi will use to get GPU temperature. It should print out only &amp;quot;[temp as integer] [scale as one of &amp;quot;CcFf&amp;quot;]&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For Nvidia&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-settings -tq gpuCoreTemp) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;echo &amp;quot;$(nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36) C&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;&amp;lt;u&amp;gt;For ATI/AMD&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/usr/bin/aticonfig --od-gettemperature | grep Temperature | cut -f 2 -d &amp;quot;-&amp;quot; | cut -f 1 -d &amp;quot;.&amp;quot; | sed -e &amp;quot;s, ,,&amp;quot; | sed &#039;s/$/ C/&#039;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;For Raspberry Pi&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gputempcommand&amp;gt;/opt/vc/bin/vcgencmd measure_temp | sed -e &amp;quot;s/temp=//&amp;quot; -e &amp;quot;s/\..*&#039;/ /&amp;quot;&amp;lt;/gputempcommand&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== glrectanglehack ===&lt;br /&gt;
{{anchor|.3Cglrectanglehack.3E}}&lt;br /&gt;
Problems with ghosting or videos which are only played back in the left upper quarter? The following ATI hack may solve it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;glrectanglehack&amp;gt;yes&amp;lt;/glrectanglehack&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== alwaysontop ===&lt;br /&gt;
{{anchor|.3Calwaysontop.3E}}&lt;br /&gt;
Added in XBMC v9.11 (Windows OS only). Keeps Kodi always on top when windowed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;alwaysontop&amp;gt;yes&amp;lt;/alwaysontop&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a fake fullscreen GUI option in Kodi&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== minimizetotray ===&lt;br /&gt;
{{anchor|.3Cminimizetotray.3E}}&lt;br /&gt;
{{note|Available in Kodi v20 and above.}}&lt;br /&gt;
&lt;br /&gt;
Windows only. Minimizes Kodi to the system tray. Defaults to false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;minimizetotray&amp;gt;true&amp;lt;/minimizetotray&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Removed tags =&lt;br /&gt;
{{anchor|Recently removed tags}}&lt;br /&gt;
* {{anchor|.3Cthumbsize.3E}}&#039;&#039;&#039;&amp;lt;thumbsize&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#imageres|imageres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cfanartheight.3E}}&#039;&#039;&#039;&amp;lt;fanartheight&amp;gt;&#039;&#039;&#039; - replaced by &amp;lt;[[#fanartres|fanartres]]&amp;gt; in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cdvdthumbs.3E}}&#039;&#039;&#039;&amp;lt;dvdthumbs&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbusydialogdelayms.3E}}&#039;&#039;&#039;&amp;lt;busydialogdelayms&amp;gt;&#039;&#039;&#039; - removed in v12 Frodo&lt;br /&gt;
* {{anchor|.3Cbginfoloadermaxthreads.3E}}&#039;&#039;&#039;&amp;lt;bginfoloadermaxthreads&amp;gt;&#039;&#039;&#039; - removed in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;showepginfoonselect&amp;gt;&#039;&#039;&#039; - replaced by a GUI setting in v13 Gotham&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;resample&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;forceDirectSound&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiophile&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;audiosinkbufferdurationmsec&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;allowtranscode44100&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;streamsilence&amp;gt;&#039;&#039;&#039; - These were various sub-tags for &amp;lt;audio&amp;gt; that were removed in v13 Gotham and either replaced by GUI settings or were no longer needed.&lt;br /&gt;
* {{anchor|.3Cenableairtunesdebuglog.3E}}&#039;&#039;&#039;&amp;lt;enableairtunesdebuglog&amp;gt;&#039;&#039;&#039; - replaced by a GUI option in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;videoDisableHi10pMultithreading&amp;gt;&#039;&#039;&#039; - renamed to &amp;lt;disableswmultithreading&amp;gt; in v14 Helix&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideallitems&amp;gt;&#039;&#039;&#039; - For both the &amp;lt;code&amp;gt;&amp;lt;videolibrary&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;musiclibrary&amp;gt;&amp;lt;/code&amp;gt; sections, this is replaced by a GUI option in v15 Isengard&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;SmallStepBackSeconds&amp;gt;&#039;&#039;&#039; - In v15 the &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; [[Action_IDs]] has been replaced by &amp;lt;code&amp;gt;seek(-7)&amp;lt;/code&amp;gt; in default keymaps. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details. When the original &amp;lt;code&amp;gt;SmallStepBack&amp;lt;/code&amp;gt; action ID is used it defaults to the first backwards [[skip steps|additive seeking value]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;timeseekforward&amp;gt;/&amp;lt;timeseekbackward&amp;gt;&#039;&#039;&#039; - In v15 these tags are replaced by GUI options via [[skip steps|additive seeking]], which is configured in the GUI. See &#039;&#039;&#039;[[skip steps]]&#039;&#039;&#039; for details.&lt;br /&gt;
* {{anchor|.3Ckaraoke.3E}}&#039;&#039;&#039;&amp;lt;karaoke&amp;gt;&#039;&#039;&#039; - In v16 all of the karaoke features in Kodi were removed.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useddsfanart&amp;gt;&#039;&#039;&#039; - removed in v17 Krypton.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;lt;readbufferfactor&amp;gt;&#039;&#039;&#039; - In v17 &#039;&#039;&#039;&amp;lt;cachemembuffersize&amp;gt;&#039;&#039;&#039; is renamed to &#039;&#039;&#039;&amp;lt;memorysize&amp;gt;&#039;&#039;&#039; and &amp;lt;code&amp;gt;&amp;lt;readbufferfactor&amp;gt;&amp;lt;/code&amp;gt; is renamed to &amp;lt;code&amp;gt;&amp;lt;readfactor&amp;gt;&amp;lt;/code&amp;gt;. In addition, all three buffer related settings in &amp;lt;network&amp;gt; are moved out of &amp;lt;network&amp;gt; and into a new &amp;lt;cache&amp;gt; parent tag.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;minvideocachelevel&amp;gt;&#039;&#039;&#039;, &#039;&#039;&#039;&amp;lt;minaudiocachelevel&amp;gt;&#039;&#039;&#039;, and &#039;&#039;&#039;&amp;lt;cacheindvdplayer&amp;gt;&#039;&#039;&#039; have been removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;useffmpegvda&amp;gt;&#039;&#039;&#039; - Tag was only used for development testing. Removed in v17.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;nofliptimeout&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;blackbarcolour&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;disableswmultithreading&amp;gt;&#039;&#039;&#039; - Removed in v17 (maybe?)&lt;br /&gt;
* {{anchor|.3Cmeasurerefreshrate.3E}}&#039;&#039;&#039;&amp;lt;measurerefreshrate&amp;gt;&#039;&#039;&#039; - Removed in v17 or v18?&lt;br /&gt;
* {{anchor|.3Cmyth.3E}}&#039;&#039;&#039;&amp;lt;myth&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* {{anchor|.3Ctuxbox.3E}}&#039;&#039;&#039;&amp;lt;tuxbox&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;backgroundupdate&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;hideemptyseries&amp;gt;&#039;&#039;&#039; - Replaced by a GUI option.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;mymovies&amp;gt;&#039;&#039;&#039; and child tag &#039;&#039;&#039;&amp;lt;categoriestogenres&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumssortbyartistthenyear&#039;&#039;&#039;&amp;gt; - Removed&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumformatright&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Cremoterepeat.3E}}&#039;&#039;&#039;&amp;lt;remoterepeat&amp;gt;&#039;&#039;&#039; - Removed&lt;br /&gt;
* {{anchor|.3Callowd3d9ex.3E}}&#039;&#039;&#039;&amp;lt;allowd3d9ex&amp;gt;&#039;&#039;&#039; and {{anchor|.3Cforced3d9ex.3E}}&#039;&#039;&#039;&amp;lt;forced3d9ex&amp;gt;&#039;&#039;&#039; - Removed sometime between v16 to v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;lingertime&amp;gt;&#039;&#039;&#039; - Replaced by a GUI setting in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;forcevaapienabled&amp;gt;&#039;&#039;&#039; - Removed in v18&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;promptfulltagscan&amp;gt;false&amp;lt;/promptfulltagscan&amp;gt;&#039;&#039;&#039; Removed in v18. Now automatically asked each time a scan is conducted.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;controllerdeadzone&amp;gt;&#039;&#039;&#039; - Removed in v17&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;omxdecodestartwithvalidframe&amp;gt;&#039;&#039;&#039; - This tag is only in some Raspberry Pi specific distributions, such as OpenELEC. As of March 2015, this tag has not been merged into &amp;quot;vanilla&amp;quot; Kodi builds&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;musicthumbs&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Thumbnail image files&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;artistextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Artist art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;albumextraart&amp;gt;&#039;&#039;&#039; Replaced in v19 by the GUI setting &#039;&#039;&#039;Album art types whitelist&#039;&#039;&#039; found in Media -&amp;gt; Music&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;fanart&amp;gt;&#039;&#039;&#039; Removed in v19&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;assfixedworks&amp;gt;&#039;&#039;&#039; Removed in v20&lt;br /&gt;
&lt;br /&gt;
= guisettings.xml Setting Conversion =&lt;br /&gt;
It is possible to convert settings found in the &#039;&#039;&#039;[[Settings]]&#039;&#039;&#039; &#039;&#039;(guisettings.xml)&#039;&#039; pages of {{kodi}} into entries for the advancedsettings.xml file.&lt;br /&gt;
&lt;br /&gt;
When a setting from the guisettings.xml is added to the advancedsettings.xml file, it will override the existing guisettings.xml values and the setting will be removed from the settings pages.&lt;br /&gt;
&lt;br /&gt;
Why would I need to do this?&lt;br /&gt;
* You set up multiple devices and then need to individually change settings and preferences on each device. Using this conversion method, you save those settings in the advancedsettings.xml file and simply add the file to each device&lt;br /&gt;
* You need to hide settings to prevent those settings from being modified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To convert a guisetting to advancedsettings.xml follow these steps:&lt;br /&gt;
# In the {{kodi}} settings pages, adjust the setting(s) to your preference.&lt;br /&gt;
# Back out of the settings pages to the main menu, which forces {{kodi}} to save the adjusted settings to the guisettings.xml file&lt;br /&gt;
# Locate the guisettings.xml file in the [[Userdata]] folder and open it&lt;br /&gt;
# Locate the setting(s) to be converted. The list can be overwhelming so make use of the Search feature of whichever editor you are using&lt;br /&gt;
# Using the following setting as an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;setting id=&amp;quot;videolibrary.showemptytvshows&amp;quot;&amp;gt;true&amp;lt;/setting&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Breaking down the string:&lt;br /&gt;
::&#039;&#039;&#039;videolibrary&#039;&#039;&#039;- parent tag&lt;br /&gt;
::&#039;&#039;&#039;showemptytvshows&#039;&#039;&#039;- child tag&lt;br /&gt;
::&#039;&#039;&#039;true&#039;&#039;&#039;- value&lt;br /&gt;
: The conversion is as follows and place this in the advancedsettings.xml file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
          &amp;lt;showemptytvshows&amp;gt;true&amp;lt;/showemptytvshows&amp;gt;&lt;br /&gt;
     &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Some parent tags may already be in use in your advancedsettings.xml file. Do not duplicate them, but add the child tag beneath the existing parent tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
{{DISPLAYTITLE:advancedsettings.xml}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced topics]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241231</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241231"/>
		<updated>2022-01-09T21:35:36Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Comskip */  FPS in the example file was wrong, it has a factor of 100&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[only version 2 is supported]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate  * 100]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 2500&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename. E.g. if you have a &#039;&#039;&#039;movie.mkv&#039;&#039;&#039; file, the corresponding EDL file should be named &#039;&#039;&#039;movie.mkv.chapters.xml&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241230</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241230"/>
		<updated>2022-01-09T19:59:26Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* SnapStream BeyondTV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[only version 2 is supported]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 25&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename. E.g. if you have a &#039;&#039;&#039;movie.mkv&#039;&#039;&#039; file, the corresponding EDL file should be named &#039;&#039;&#039;movie.mkv.chapters.xml&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241229</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241229"/>
		<updated>2022-01-09T19:46:25Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* VideoReDo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[only version 2 is supported]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 25&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241228</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241228"/>
		<updated>2022-01-09T19:39:48Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* VideoReDo */  This is wrong and its not what happens in the code. Cuts are treated as cuts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 25&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=List_of_built-in_functions&amp;diff=241154</id>
		<title>List of built-in functions</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=List_of_built-in_functions&amp;diff=241154"/>
		<updated>2022-01-08T17:22:30Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* GUI built-in&amp;#039;s */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Python development]] {{l2| [[Add-on development]] }} {{l2| [[Skinning]] }} | [[Built-in scripting]] }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
Skins can use built-in functions with the &amp;lt;onclick&amp;gt; or &amp;lt;onfocus&amp;gt; tag. Scripts can call built-in functions with &amp;lt;code&amp;gt;xbmc.executebuiltin(function, block)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The latest up-to-date list of built-in functions can be found in the source code files in [https://github.com/xbmc/xbmc/tree/master/xbmc/interfaces/builtins].&lt;br /&gt;
&lt;br /&gt;
In addition to the following list, for most &amp;lt;onclick&amp;gt; and &amp;lt;onfocus&amp;gt; button actions in the skin you can also use the functions from [[Keyboard.xml]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;poem&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;onclick&amp;gt;VolumeUp&amp;lt;/onclick&amp;gt;&lt;br /&gt;
&amp;lt;onclick&amp;gt;VolumeDown&amp;lt;/onclick&amp;gt;&lt;br /&gt;
&amp;lt;/poem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can use parameters with all media windows, as can be seen here:&#039;&#039;&#039;&lt;br /&gt;
* [[Opening Windows and Dialogs]]&lt;br /&gt;
&lt;br /&gt;
== List of functions ==&lt;br /&gt;
&amp;lt;section begin=&amp;quot;functions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add-on built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Addon.Default.OpenSettings(extensionpoint)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Open a settings dialog for the default addon of the given type (extensionpoint)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Addon.Default.Set(extensionpoint)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Open a select dialog to allow choosing the default addon of the given type (extensionpoint)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Addon.OpenSettings(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Open a settings dialog for the addon of the given id &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;EnableAddon(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Enables the specified plugin/script&lt;br /&gt;
| v19 addition&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InstallAddon(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will install the addon with the given id.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InstallFromZip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Opens the &amp;quot;Install from zip&amp;quot;-dialog if &amp;quot;Unknown sources&amp;quot; is enabled. Prompts the warning message if not.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RunAddon(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Runs the specified plugin/script &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RunAppleScript(script[,args]*)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Run the specified AppleScript command &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RunPlugin(plugin)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Runs the plugin. Full path must be specified. Does not work for folder plugins &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RunScript(script[,args]*)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Runs the python script. You must specify the add-on id of the script. As of 2007/02/24, all extra parameters are passed to the script as arguments and can be accessed by python using sys.argv &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;StopScript(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Stop the script by ID or path, if running&lt;br /&gt;
| {{nowrap|v12 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UpdateAddonRepos&amp;lt;/code&amp;gt;&lt;br /&gt;
| Triggers a forced update of enabled add-on repositories. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UpdateLocalAddons&amp;lt;/code&amp;gt;&lt;br /&gt;
| Triggers a scan of local add-on directories. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Android built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;StartAndroidActivity(package,[intent,dataType,dataURI])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Launch an Android native app with the given package name. Optional parms (in order): intent, dataType, dataURI. example: &amp;lt;nowiki&amp;gt;StartAndroidActivity(com.android.chrome,android.intent.action.VIEW,,http://kodi.tv/)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Application built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Extract(archive_url[, destination])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Extracts a specified archive to an optionally specified &#039;absolute&#039; path. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Mute&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mutes (or unmutes) the volume. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NotifyAll(sender, data [, json])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Notify all connected clients&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetVolume(percent[,showvolumebar])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sets the volume to the percentage specified. Optionally, show the Volume Dialog in Kodi when setting the volume. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ToggleDebug&amp;lt;/code&amp;gt;&lt;br /&gt;
| Enables/disables debug mode&lt;br /&gt;
| {{nowrap|v12 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ToggleDPMS&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggle DPMS (VESA Display Power Management Signaling) mode manually &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WakeOnLan(mac)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sends the wake-up packet to the broadcast address for the specified MAC address (Format: FF:FF:FF:FF:FF:FF or FF-FF-FF-FF-FF-FF). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CEC built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CECActivateSource&amp;lt;/code&amp;gt;&lt;br /&gt;
| Wake up playing device via a CEC peripheral&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CECStandby&amp;lt;/code&amp;gt;&lt;br /&gt;
| Put playing device on standby via a CEC peripheral&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CECToggleState&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggle state of playing device via a CEC peripheral&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EPG built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;EpgGridControl(command)&amp;lt;/code&amp;gt;&lt;br /&gt;
| supported commands: firstprogramme  (jump to the first programme) / currentprogramme  (jump to the current programme) / lastprogramme  (jump to the last programme) / selectdate  (jump to the selected date &amp;amp; time) / +XX  (jump XX hours forward) / -XX  (jump XX hours back) / firstchannel  (jump to the first channel) / playingchannel  (jump to the currently playing channel) / lastchannel  (jump to the last channel) / previousgroup  (switch the epg to the previous group) / nextgroup  (switch the epg to the next group) / selectgroup  (select a group)&lt;br /&gt;
| {{nowrap|v19 Addition}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GUI built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Action(action[,window])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Executes an action (same as in keymap) for the given window or the active window if the parameter window is omitted. The parameter window can either be the window&#039;s id, or in the case of a standard window, the window&#039;s name. See [[Action IDs]] for a list of available actions. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ActivateWindow(window[,dir,return])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Opens the given window. The parameter window can either be the window&#039;s id, or in the case of a standard window, the window&#039;s name. See [[Window IDs]] for a list of window names, and their respective ids. If, furthermore, the window is Music, Video, Pictures, or Program files, then the optional dir parameter specifies which folder Kodi should default to once the window is opened. This must be a source as specified in sources.xml, or a subfolder of a valid source. For some windows (MusicLibrary and VideoLibrary), the return parameter may be specified, which indicates that Kodi should use this folder as the &amp;quot;root&amp;quot; of the level, and thus the &amp;quot;parent directory&amp;quot; action from within this folder will return the user to where they were prior to the window activating. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ActivateWindowAndFocus(id1, id2,item1, id3,item2)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Activate window with id1, first focus control id2 and then focus control id3. if either of the controls is a container, you can specify which item to focus (else, set it to 0).&lt;br /&gt;
| {{nowrap|v12 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AlarmClock(name,command,[time,silent,loop])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a dialog asking for the length of time (mm:ss) for the alarm (unless the parameter time is specified), and starts a timer. When the timer runs out, it&#039;ll execute the built-in command (the parameter command) if it is specified, otherwise it&#039;ll pop up an alarm notice. Add silent to hide the alarm notification. Add loop for the alarm to execute the command each time the specified time interval expires. If defining the last optional parameters (silent and loop) both have to be defined for any to take effect. The parameter &amp;quot;time&amp;quot; accepts an integer value (in minutes) or a timestring in the format &amp;quot;hh:mm:ss&amp;quot; or &amp;quot;mm min&amp;quot;.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CancelAlarm(name[,silent])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Cancel a running alarm. Set silent to true to hide the alarm notification. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ClearProperty(key[,id])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Clears a window property for the current focused window/dialog(key), or the specified window (key,id). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Dialog.Close(dialog[,force])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Close a dialog. Set force to true to bypass animations. Use (all,true) to close all opened dialogs at once. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NextChannelGroup&amp;lt;/code&amp;gt;&lt;br /&gt;
| Navigate to the next PVR channel group (in DialogPVRChannelsOSD.xml)&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NextStereoMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Changes the stereo mode of the GUI to the next available mode.&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Notification(header,message[,time,image])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will display a notification dialog with the specified header and message, in addition you can set the length of time it displays in milliseconds and a icon image. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PreviousChannelGroup&amp;lt;/code&amp;gt;&lt;br /&gt;
| Navigate to the previous PVR channel group (in DialogPVRChannelsOSD.xml)&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PreviousStereoMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Changes the stereo mode of the GUI to the previous available mode.&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RefreshRSS&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reload RSS feeds from RSSFeeds.xml &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ReplaceWindow(window,dir)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Replaces the current window with the given window. This is the same as ActivateWindow() but it doesn&#039;t update the window history list, so when you go back from the new window it will not return to the previous window, rather will return to the previous window&#039;s previous window. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ReplaceWindowAndFocus(id1, id2,item1, id3,item2)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Replace window with id1, first focus control id2 and then focus control id3. if either of the controls is a container, you can specify which item to focus (else, set it to 0).&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
| Change Kodi&#039;s Resolution. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetGUILanguage(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set GUI Language, &#039;value&#039; is the language file to use. SetGUILanguage(resource.language.de_de)&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetProperty(key,value[,id])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sets a window property for the current window (key,value), or the specified window (key,value,id). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetStereoMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Changes the stereo mode of the GUI. Params can be: toggle, next, previous, select, tomono or any of the supported stereomodes (off, split_vertical, split_horizontal, row_interleaved, hardware_based, anaglyph_cyan_red, anaglyph_green_magenta, monoscopic)&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;settingslevelchange&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggles the visible settings (in SettingsCategory.xml) between &#039;basic&#039;, &#039;standard&#039;, &#039;advanced and &#039;expert&#039;&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TakeScreenshot([filenameandpath,sync])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Takes a Screenshot. You can optionally specify the filename (including the path). Note: only .png files are supported. Add &amp;quot;sync&amp;quot; parameter to run synchronously (slow).&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ToggleDirtyRegionVisualization&amp;lt;/code&amp;gt;&lt;br /&gt;
| makes dirty regions visible for debugging proposes.&lt;br /&gt;
| {{nowrap|v16 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ToggleStereoMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggle the stereoscopic mode of the GUI (on/off).&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GUI container built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.NextSortMethod&amp;lt;/code&amp;gt;&lt;br /&gt;
| Change to the next sort method. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.NextViewMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Select the next view mode. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.PreviousSortMethod&amp;lt;/code&amp;gt;&lt;br /&gt;
| Change to the previous sort method. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.PreviousViewMode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Select the previous view mode. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.Refresh&amp;lt;/code&amp;gt;&lt;br /&gt;
| Refresh current listing. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.SetSortMethod(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Change to the specified sort method. (For list of ID&#039;s see [[https://kodi.wiki/view/List_of_built-in_functions#List_of_sort_methods list of sort methods]]) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.SetViewMode(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set the current view mode (list, icons etc.) to the given container id. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.SetSortDirection&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggle the sort direction. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Container.Update&amp;lt;/code&amp;gt;&lt;br /&gt;
| Update current listing. Send Container.Update(path,replace) to reset the path history. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GUI control built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Control.Message(id,message,[windowid])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sends a given message to a control in a given window (or active window if omitted). Messages can be movedown, moveup, pagedown, pageup, click. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Control.Move(id,offset)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will make a Container with the &amp;quot;id&amp;quot; specified in the command move focus by &amp;quot;offset&amp;quot;. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Control.SetFocus(id,position[,absolute])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will make a list with the &amp;quot;id&amp;quot; specified in the command gain focus at &amp;quot;position&amp;quot; number in its list. Set absolute to focus the first listitem of a container instead of the first visible listitem. Alias SetFocus(id,position) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PageDown&amp;lt;/code&amp;gt;&lt;br /&gt;
| Send a page down event to the pagecontrol with given id. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PageUp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Send a page up event to the pagecontrol with given id. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SendClick(windowid,id)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sends a click to a control in a given window (or active window if omitted). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SetFocus(id,position[,absolute])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will make a list with the &amp;quot;id&amp;quot; specified in the command gain focus at &amp;quot;position&amp;quot; number in its list. Set absolute to focus the first listitem of a container instead of the first visible listitem. Alias Control.SetFocus(id,position) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Library built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CleanLibrary(database)&amp;lt;/code&amp;gt;&lt;br /&gt;
| This funtion will perform a number of &#039;cleanup&#039; tasks on your video database and can be run if you have moved, deleted or renamed files. Takes either &amp;quot;video&amp;quot; or &amp;quot;music&amp;quot; as a parameter to begin cleaning the corresponding database. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;exportlibrary(music,false,filepath)&amp;lt;/code&amp;gt;&lt;br /&gt;
| The music library will be exported to a single file stored at filepath location. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;exportlibrary(video,true,thumbs,overwrite,actorthumbs)&amp;lt;/code&amp;gt;&lt;br /&gt;
| The video library is exported to multiple files with the given options. Here thumbs, overwrite and actorthumbs are boolean values (true or false). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UpdateLibrary(database,[path])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Takes either &amp;quot;video&amp;quot; or &amp;quot;music&amp;quot; as a parameter to begin updating the corresponding database. For &amp;quot;video&amp;quot; you can additionally specify a specific path to be scanned. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VideoLibrary.Search&amp;lt;/code&amp;gt;&lt;br /&gt;
| Brings up a search dialog which will search the library &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Optical container built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;EjectTray()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Either opens or closes the DVD tray, depending on its current state &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RipCD&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will rip the inserted CD from the DVD-ROM drive. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Picture built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RecursiveSlideShow(dir)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Run a slideshow from the specified directory, including all subdirs &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ShowPicture(picture)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Show a picture by its file path/url.&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SlideShow(dir[,recursive][,[not]random][,pause][,beginslide=&amp;quot;/path/to/start/slide.jpg&amp;quot;])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Starts a slideshow of pictures in the folder dir. Optional parameters are &#039;recursive&#039;, &#039;random&#039; or &#039;notrandom&#039;, &#039;pause&#039; and &#039;beginslide=&amp;quot;/path/to/some/image.jpg&amp;quot;&#039; parameters. The &amp;quot;recursive&amp;quot; parameter starts a recursive slideshow, adding images from sub-folders. The &amp;quot;random&amp;quot; and &amp;quot;notrandom&amp;quot; parameters override the Randomize setting found in the pictures media window. The &amp;quot;pause&amp;quot; parameter will start the slideshow paused. &amp;quot;beginslide&amp;quot; will start the slideshow with the specified image.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Player built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlayDisc(param)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will play the inserted CD or DVD media from the DVD-ROM drive. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlayerControl(command)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allows control of music and videos. The command may be one of Play, Stop, Forward, Rewind, Next, Previous, BigSkipForward, BigSkipBackward, SmallSkipForward, SmallSkipBackward, FrameAdvance(#), TempoUp, TempoDown, Tempo(value), Random, RandomOn, RandomOff, Repeat, RepeatOne, RepeatAll, RepeatOff, Partymode(music) or Partymode(video) or Partymode(path to .xsp file) or Reset. &lt;br /&gt;
Play will either pause, resume, or stop ffwding or rewinding. Random toggles random playback and Repeat cycles through the repeat modes (these both take an optional second parameter, Notify, that notifies the user of the new state). Partymode(music/video) toggles the appropriate partymode, defaults to music if no parameter is given, besides the default music or video partymode you can also pass a path to a custom smartplaylist (.xsp) as parameter. Reset only applies to games and will reset the currently playing game.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlayerResolutionSelect&amp;lt;/code&amp;gt;&lt;br /&gt;
| Select a different resolution&lt;br /&gt;
| v18&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Playlist.Clear&amp;lt;/code&amp;gt;&lt;br /&gt;
| Clear the current playlist &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Playlist.PlayOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
| Start playing from a particular offset in the playlist &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlayMedia(media[,isdir][,1],[playoffset=xx],[resume],[noresume])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Plays the media. This can be a playlist, music, or video file, directory, plugin or a url. The optional parameter &amp;quot;,isdir&amp;quot; can be used for playing a directory. &amp;quot;,1&amp;quot; will start the media without switching to fullscreen. If media is a playlist, you can use playoffset=xx where xx is the position to start playback from. Set &amp;quot;resume&amp;quot; to force resuming. Set &amp;quot;noresume&amp;quot; to force not resuming.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlayWith()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Play the selected item with the specified player core. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Seek(seconds)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Seeks to the specified relative amount of seconds within the current playing media. A negative value will seek backward and a positive value forward.&lt;br /&gt;
| {{nowrap|v15 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Profile built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;LoadProfile(profilename,[prompt])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Load the specified profile. If prompt is not specified, and a password would be required for the requested profile, this command will silently fail. If promp&#039; is specified and a password is required, a password dialog will be shown. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Mastermode&amp;lt;/code&amp;gt;&lt;br /&gt;
| Runs Kodi in master mode &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;System.LogOff&amp;lt;/code&amp;gt;&lt;br /&gt;
| Log off current user. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PVR built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PVR.SearchMissingChannelIcons&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will start a search for missing channel icons&lt;br /&gt;
| {{nowrap|v16 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PVR.ToggleRecordPlayingChannel&amp;lt;/code&amp;gt;&lt;br /&gt;
| Will toggle recording on playing channel, if any &lt;br /&gt;
| v18&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PVR.SeekPercentage&amp;lt;/code&amp;gt;&lt;br /&gt;
| Performs a seek to the given percentage in timeshift buffer, if timeshifting is supported &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Skin built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ReloadSkin()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reloads the current skin – useful for Skinners to use after they upload modified skin files (saves power cycling) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.Reset(setting)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Resets the skin setting ?setting?. If ?setting? is a bool setting (i.e. set via SetBool or ToggleSetting) then the setting is reset to false. If ?setting? is a string (Set via SetString, SetImage, or SetPath) then it is set to empty. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.ResetSettings&amp;lt;/code&amp;gt;&lt;br /&gt;
| Resets all the above skin settings to their defaults (toggles all set to false, strings all set to empty.) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SelectBool(header, label1&amp;amp;#124;setting1, label2&amp;amp;#124;setting2)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up select dialog to select between multiple skin setting options. Skin.SelectBool(424, 31411&amp;amp;#124;RecentWidget, 31412&amp;amp;#124;RandomWidget, 31413&amp;amp;#124;InProgressWidget)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetAddon(string,type)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a select dialog and allows the user to select an add-on of the given type to be used elsewhere in the skin via the info tag Skin.String(string). The most common types are xbmc.addon.video, xbmc.addon.audio, xbmc.addon.image, xbmc.addon.executable and kodi.gameclient. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetBool(setting)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sets the skin setting ?setting? to true, for use with the conditional visibility tags containing Skin.HasSetting(setting). The settings are saved per-skin in settings.xml just like all the other Kodi settings. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetFile(string,mask,folderpath)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a folder browser and allows the user to select a file off the hard-disk to be used else where in the skin via the info tag Skin.String(string). If the mask parameter is specified, then the file browser will only search for the extension specified (.avi,.mp3,.m3u,.png,.bmp,etc.,etc.). To use multiple extensions separate them using &amp;quot;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;quot; (minus quotes). If the folderpath parameter is set the file browser will start in that folder. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetImage(string[,value,path])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a file browser and allows the user to select an image file to be used in an image control elsewhere in the skin via the info tag Skin.String(string). If the value parameter is specified, then the file browser dialog does not pop up, and the image path is set directly. the path option allows you to open the file browser in the specified folder. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetNumeric(numeric[,value])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a keyboard dialog and allows the user to input a numerical. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetPath(string[,folderpath])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a folder browser and allows the user to select a folder of images to be used in a multi image control else where in the skin via the info tag Skin.String(string). If the folderpath parameter is set the file browser will start in that folder. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.SetString(string[,value])&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pops up a keyboard dialog and allows the user to input a string which can be used in a label control elsewhere in the skin via the info tag Skin.String(string). If the value parameter is specified, then the keyboard dialog does not pop up, and the string is set directly. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.Theme(1)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Cycles the skin theme. Skin.Theme(-1) will go backwards. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.ToggleDebug&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggles skin debug info on/off &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Skin.ToggleSetting(setting)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Toggles the skin setting ?setting? for use with conditional visibility tags containing Skin.HasSetting(setting). &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UnloadSkin()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unloads the current skin &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== System built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ActivateScreensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
| Starts the screensaver&lt;br /&gt;
| {{nowrap|v13 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Hibernate&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hibernate (S4) the System &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InhibitIdleShutdown(true/false)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Prevent the system to shutdown on idle.&lt;br /&gt;
| {{nowrap|v12 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;InhibitScreensaver(true/false)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Prevent activation of the screensaver.&lt;br /&gt;
| {{nowrap|v19 Addition}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Minimize&amp;lt;/code&amp;gt;&lt;br /&gt;
| Minimizes Kodi &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Powerdown&amp;lt;/code&amp;gt;&lt;br /&gt;
| Powerdown system &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Quit&amp;lt;/code&amp;gt;&lt;br /&gt;
| Quits Kodi &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Reboot&amp;lt;/code&amp;gt;&lt;br /&gt;
| Cold reboots the system (power cycle) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reset the system (same as reboot) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RestartApp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Restarts Kodi (only implemented under Windows and Linux) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ShutDown&amp;lt;/code&amp;gt;&lt;br /&gt;
| Trigger default Shutdown action defined in System Settings &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Suspend&amp;lt;/code&amp;gt;&lt;br /&gt;
| Suspends (S3 / S1 depending on bios setting) the System &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;System.Exec(exec)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Execute shell commands. The full path to the script has to be placed inside the parentheses.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;System.ExecWait(exec)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Execute shell commands and freezes Kodi until shell is closed. As well as for &amp;quot;System.Exec(exec)&amp;quot;, the full path to the script has to be placed inside the parentheses.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather built-in&#039;s ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sort sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
!  style=&amp;quot;width: 29%&amp;quot;| Function&lt;br /&gt;
!  style=&amp;quot;width: 66%&amp;quot;| Description&lt;br /&gt;
!  style=&amp;quot;width: 5%&amp;quot;| Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Weather.LocationNext&amp;lt;/code&amp;gt;&lt;br /&gt;
| Switch to next weather location &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Weather.LocationPrevious&amp;lt;/code&amp;gt;&lt;br /&gt;
| Switch to previous weather location &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Weather.LocationSet&amp;lt;/code&amp;gt;&lt;br /&gt;
| Switch to given weather location (parameter can be 1-3) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Weather.Refresh&amp;lt;/code&amp;gt;&lt;br /&gt;
| Force weather data refresh&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;section end=&amp;quot;functions&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Removed functions ==&lt;br /&gt;
* &amp;lt;code&amp;gt;LastFM.Love&amp;lt;/code&amp;gt; - Removed in v13 Gotham&lt;br /&gt;
* &amp;lt;code&amp;gt;LastFM.Ban&amp;lt;/code&amp;gt; - Removed in v13 Gotham&lt;br /&gt;
* &amp;lt;code&amp;gt;LCD.Suspend&amp;lt;/code&amp;gt; - Removed in v13 Gotham&lt;br /&gt;
* &amp;lt;code&amp;gt;LCD.Resume&amp;lt;/code&amp;gt; - Removed in v13 Gotham&lt;br /&gt;
* &amp;lt;code&amp;gt;AllowIdleShutdown&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Help&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;LIRC.Send(command)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;LIRC.Start&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;LIRC.Stop&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;StartPVRManager&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;StereoModeToMono&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;StopPVRManager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of sort methods ==&lt;br /&gt;
These ID&#039;s can be used with the Container.SetSortMethod(id) function as listed [https://github.com/xbmc/xbmc/blob/75b31098a8800da653b373cd99a025b483029cfc/xbmc/utils/SortUtils.h#L49-L164 here]:&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Date&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Size&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| File&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
| Path&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
| DriveType&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Title&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&lt;br /&gt;
| TrackNumber&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Artist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;&lt;br /&gt;
| ArtistThenYear&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&lt;br /&gt;
| Album&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt;&lt;br /&gt;
| AlbumType&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt;&lt;br /&gt;
| Genre&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;&lt;br /&gt;
| Country&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;&lt;br /&gt;
| Rating&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;18&amp;lt;/code&amp;gt;&lt;br /&gt;
| UserRating&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt;&lt;br /&gt;
| Votes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;&lt;br /&gt;
| Top250&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;21&amp;lt;/code&amp;gt;&lt;br /&gt;
| ProgramCount&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;22&amp;lt;/code&amp;gt;&lt;br /&gt;
| PlaylistOrder&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt;&lt;br /&gt;
| EpisodeNumber&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;&lt;br /&gt;
| Season&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
| NumberOfEpisodes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;&lt;br /&gt;
| NumberOfWatchedEpisodes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;27&amp;lt;/code&amp;gt;&lt;br /&gt;
| TvShowStatus&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;28&amp;lt;/code&amp;gt;&lt;br /&gt;
| TvShowTitle&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;29&amp;lt;/code&amp;gt;&lt;br /&gt;
| SortTitle&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;&lt;br /&gt;
| ProductionCode&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;31&amp;lt;/code&amp;gt;&lt;br /&gt;
| MPAA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt;&lt;br /&gt;
| VideoResolution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;33&amp;lt;/code&amp;gt;&lt;br /&gt;
| VideoCodec&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;&lt;br /&gt;
| VideoAspectRatio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;35&amp;lt;/code&amp;gt;&lt;br /&gt;
| AudioChannels&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;36&amp;lt;/code&amp;gt;&lt;br /&gt;
| AudioCodec&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;&lt;br /&gt;
| AudioLanguage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;38&amp;lt;/code&amp;gt;&lt;br /&gt;
| SubtitleLanguage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;39&amp;lt;/code&amp;gt;&lt;br /&gt;
| Studio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt;&lt;br /&gt;
| DateAdded&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;41&amp;lt;/code&amp;gt;&lt;br /&gt;
| LastPlayed&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt;&lt;br /&gt;
| Playcount&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;43&amp;lt;/code&amp;gt;&lt;br /&gt;
| Listeners&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;44&amp;lt;/code&amp;gt;&lt;br /&gt;
| Bitrate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt;&lt;br /&gt;
| Random&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;46&amp;lt;/code&amp;gt;&lt;br /&gt;
| Channel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;47&amp;lt;/code&amp;gt;&lt;br /&gt;
| ChannelNumber&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;48&amp;lt;/code&amp;gt;	&lt;br /&gt;
| DateTaken&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;49&amp;lt;/code&amp;gt;	&lt;br /&gt;
| Relevance&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;50&amp;lt;/code&amp;gt;	&lt;br /&gt;
| InstallDate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;51&amp;lt;/code&amp;gt;	&lt;br /&gt;
| LastUpdated&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;52&amp;lt;/code&amp;gt;	&lt;br /&gt;
| LastUsed&lt;br /&gt;
|}&lt;br /&gt;
{{updated|18}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Action IDs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=241146</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=241146"/>
		<updated>2022-01-04T17:49:02Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Examples (and addons on the repo already use commas) let&amp;#039;s allow it anyway&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Service_add-ons|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script_sources|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script_lyrics|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.font&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional font files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.uisounds&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional sound files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|See Note&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|If the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element is not defined, behaviour will depend on the structure of your addon. If it has a single extension point (e.g. a single &#039;&#039;&#039;xbmc.python.script&#039;&#039;&#039; or &#039;&#039;&#039;xbmc.python.pluginsource&#039;&#039;&#039;), kodi will default to &amp;quot;executable&amp;quot; (thus your addon will be shown in programs). If your addon has multiple extension points and none specifies a &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, different entries for your addon will be shown in &amp;quot;programs&amp;quot; (multiple fallbacks to &amp;quot;executable&amp;quot;). If your addon has multiple extension points and only one (or some) define the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag it really depends on the order of the extension points. If the first extension point (your addon &#039;&#039;&#039;main extension point&#039;&#039;&#039;) defines the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, kodi will assume all the other (empty) extension points provide the same content. Otherwise it will set the content for all the extension points that specify the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag and fallback all the others to &amp;quot;executable&amp;quot;. &#039;&#039;&#039;At the moment, there is no way to hide an addon from the interface.&#039;&#039;&#039;  |reminder}}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the deprecated tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your add-on includes multiple licenses:&lt;br /&gt;
&lt;br /&gt;
* Separate license names using | (pipe) when there is a choice between licenses:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later | LGPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Separate license names using &amp;amp; (ampersand), or commas, when multiple licenses exist that cover different parts of the source.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later &amp;amp; MIT&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later, MIT&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;lifecyclestate&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken or deprecated in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the related reason. Also, the lifecyclestate tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lifecyclestate type=&amp;quot;deprecated&amp;quot;&amp;gt;Description why deprecated&amp;lt;/lifecyclestate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can also optionally be translated into several languages.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lifecyclestate type=&amp;quot;broken&amp;quot; lang=&amp;quot;en_GB&amp;quot;&amp;gt;Description why broken&amp;lt;/lifecyclestate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Possible types for here:&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;broken&#039;&#039;&#039;&lt;br /&gt;
|  To mark addon as broken and no more usable.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;deprecated&#039;&#039;&#039;&lt;br /&gt;
|  To mark addon as deprected and to have e.g. replaced by another addon.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;normal&#039;&#039;&#039;&lt;br /&gt;
|  To set addon as normal. This value is not really needed, only available to be able to declare all possible life paths.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and earlier. For matrix and later, see [[Addon.xml#.3Clifecyclestate.3E|lifecyclestate]]}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Matrix updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=241145</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=241145"/>
		<updated>2022-01-04T14:57:52Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Multilicense clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Service_add-ons|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script_sources|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script_lyrics|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.font&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional font files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.uisounds&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional sound files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|See Note&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|If the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element is not defined, behaviour will depend on the structure of your addon. If it has a single extension point (e.g. a single &#039;&#039;&#039;xbmc.python.script&#039;&#039;&#039; or &#039;&#039;&#039;xbmc.python.pluginsource&#039;&#039;&#039;), kodi will default to &amp;quot;executable&amp;quot; (thus your addon will be shown in programs). If your addon has multiple extension points and none specifies a &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, different entries for your addon will be shown in &amp;quot;programs&amp;quot; (multiple fallbacks to &amp;quot;executable&amp;quot;). If your addon has multiple extension points and only one (or some) define the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag it really depends on the order of the extension points. If the first extension point (your addon &#039;&#039;&#039;main extension point&#039;&#039;&#039;) defines the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, kodi will assume all the other (empty) extension points provide the same content. Otherwise it will set the content for all the extension points that specify the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag and fallback all the others to &amp;quot;executable&amp;quot;. &#039;&#039;&#039;At the moment, there is no way to hide an addon from the interface.&#039;&#039;&#039;  |reminder}}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the deprecated tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your add-on includes multiple licenses:&lt;br /&gt;
&lt;br /&gt;
* Separate license names using | (pipe) when there is a choice between licenses:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later | LGPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Separate license names using &amp;amp; (ampersand) when multiple licenses exist that cover different parts of the source.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later &amp;amp; MIT&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;lifecyclestate&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;lifecyclestate&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken or deprecated in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the related reason. Also, the lifecyclestate tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lifecyclestate type=&amp;quot;deprecated&amp;quot;&amp;gt;Description why deprecated&amp;lt;/lifecyclestate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can also optionally be translated into several languages.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lifecyclestate type=&amp;quot;broken&amp;quot; lang=&amp;quot;en_GB&amp;quot;&amp;gt;Description why broken&amp;lt;/lifecyclestate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Possible types for here:&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;broken&#039;&#039;&#039;&lt;br /&gt;
|  To mark addon as broken and no more usable.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;deprecated&#039;&#039;&#039;&lt;br /&gt;
|  To mark addon as deprected and to have e.g. replaced by another addon.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;normal&#039;&#039;&#039;&lt;br /&gt;
|  To set addon as normal. This value is not really needed, only available to be able to declare all possible life paths.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and earlier. For matrix and later, see [[Addon.xml#.3Clifecyclestate.3E|lifecyclestate]]}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Matrix updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241139</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241139"/>
		<updated>2022-01-03T12:40:54Z</updated>

		<summary type="html">&lt;p&gt;Enen92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. Each &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 25&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241138</id>
		<title>Edit decision list</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Edit_decision_list&amp;diff=241138"/>
		<updated>2022-01-03T10:31:56Z</updated>

		<summary type="html">&lt;p&gt;Enen92: This functionality was removed in Krypton. Personally I don&amp;#039;t think it&amp;#039;s important, users can still enter commercial breaks using seeks, rewinding or using custom scene actions &amp;quot;NextScene&amp;quot; or &amp;quot;PrevScene&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Video library]] {{l2| [[Live TV]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;An &#039;&#039;&#039;edit decision list&#039;&#039;&#039; (EDL) contains information about edits that should be made to the video during playback. Edit decision list information is contained in a separate file to the video that is read by Kodi just before the video is played. Examples of use include can be to skip commercials, cut out content inappropriate for children, or skip over the half hour acid trip in &#039;&#039;2001: A Space Odyssey&#039;&#039; . &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspiration for this functionality came from [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL support].&lt;br /&gt;
&lt;br /&gt;
The internal video player ([[VideoPlayer]]) used by Kodi supports the following types of edits:&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039; - the content is completely removed from playback as if it were never in the original video. For example, the total playback time is adjusted and the content is always automatically skipped during playback, seeking, fast forward or rewind.&lt;br /&gt;
* &#039;&#039;&#039;Mute&#039;&#039;&#039; - the audio is muted, video continues playing.&lt;br /&gt;
* &#039;&#039;&#039;Scene Marker&#039;&#039;&#039; - these can be used to seek to points of interest within a video similar to how chapter seeking works for DVDs.&lt;br /&gt;
* &#039;&#039;&#039;Commercial Break&#039;&#039;&#039; - each commercial break is automatically skipped once during playback. Since commercial detection is rarely 100% accurate, commercial breaks that have already been skipped can be re-entered by seeking backwards or rewinding. Note: Scene Markers are placed at the start and end of each commercial break so you can easily jump between the start and end of commbreaks using Scene Marker&#039;s builtin actions (&#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{bigger|{{note|&#039;&#039;&#039;If using actual .EDL files the following field must be added to comskip.ini:&#039;&#039;&#039;}} }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
edl_skip_field=3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default this value will be 0 in Comskip, and Kodi will see them as &#039;&#039;&#039;Cut&#039;&#039;&#039; actions and remove the section from the video (i.e. a 30 minute video would appear as 22 minutes with commericals removed). Setting this value overrides this behaviour allowing Kodi to treat it as a &#039;&#039;&#039;Commercial Break&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With edl_skip_field=3 , the full video file is visible, but Kdoi will skip the marked commercials the first time it attempts to play them. If, after commercials are skipped, you skip back through the recording (into a commercial area), you can then watch the video that was marked as a commercial.&lt;br /&gt;
&lt;br /&gt;
(thanks &#039;&#039;&#039;sbthomas&#039;&#039;&#039; for the solution)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Supported File Formats =&lt;br /&gt;
&lt;br /&gt;
Kodi is able to read edit decision lists from multiple file formats. The EDL file for a video must be in the same folder as the video file and is looked for based on the file extensions for the supported formats.&lt;br /&gt;
&lt;br /&gt;
For example if the video file is called &#039;&#039;&#039;The Matrix.avi&#039;&#039;&#039; Kodi will look for the following files, in order, until a valid file is found. Note the the file name may be case-sensitive based on the operating system being used.&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.Vprj&#039;&#039;&#039; (VideoReDo)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.edl&#039;&#039;&#039; (MPlayer EDL)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.txt&#039;&#039;&#039; (Comskip)&lt;br /&gt;
# &#039;&#039;&#039;The Matrix.avi.chapters.xml&#039;&#039;&#039; (SnapStream BeyondTV)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MPlayer EDL ==&lt;br /&gt;
&lt;br /&gt;
Classic [http://www.mplayerhq.hu/DOCS/HTML/en/edl.html MPlayer EDL] files are supported. Kodi also supports an extended version of this file format that allows extra functionality as outlined below. The name of the file must be the same as the video file but with a file extension of &#039;&#039;&#039;.edl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end times of the edits along with the type of action associated with each edit. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[start time] [end time] [action]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start and end times can be defined as seconds, HH:MM:SS.sss, or frames. To specify frames precede the frame number with the # symbol. The original MPlayer EDL files only support seconds for start and end times.&lt;br /&gt;
&lt;br /&gt;
The actions supported by this file format have also been extended by Kodi to include Scene Marker and Commercial Break actions since the original format only supports Cut and Mute. Supported actions are:&lt;br /&gt;
* 0 - Cut&lt;br /&gt;
* 1 - Mute&lt;br /&gt;
* 2 - Scene Marker (if start and end times are specified, the end time is used)&lt;br /&gt;
* 3 - Commercial Break&lt;br /&gt;
&lt;br /&gt;
For example, the following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 420 seconds to 822 seconds. There will be two scene markers. The first at 255.3 seconds and the next at 720.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3   7.1    0&lt;br /&gt;
15    16.7   1&lt;br /&gt;
420   822    3&lt;br /&gt;
1     255.3  2&lt;br /&gt;
720.1        2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from frame 127 to frame 170, mute at frame 360, unmute at frame 400, and commercial skip from frame 10080 to frame 19728. There will be two scene markers. The first at frame 6127 and the next at frame 17282. Note that when using frame numbers TS files are not supported, other file formats that correctly provide frame rate will work.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#127   #170    0&lt;br /&gt;
#360   #400    1&lt;br /&gt;
#10080 #19728  3&lt;br /&gt;
#1     #6127   2&lt;br /&gt;
#17282         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following .edl file content will skip from second 5.3 to second 7.1, mute at 15 seconds, unmute at 16.7 seconds, and commercial skip from 7 minutes to 13 minutes and 42 seconds. There will be two scene markers. The first at 4 minutes and 15.3 seconds and the next at 12 minutes and 0.1 seconds.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5.3     7.1     0&lt;br /&gt;
15      16.7    1&lt;br /&gt;
7:00    13:42   3&lt;br /&gt;
1       4:15.3  2&lt;br /&gt;
12:00.1         2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seconds and HH:MM:SS.sss can be accurately specified to three decimal places. Currently EDL cuts and mutes are frame accurate when specifying frames. Frames are specified inclusive (specify first frame to cut and last frame to cut).&lt;br /&gt;
&lt;br /&gt;
{{future|19|In Kodi v19, the addition of handling a comment line has been added. These lines are defined as beginning with ##&amp;lt;br&amp;gt;Kodi will ignore any lines beginning with ## and continue processing the EDL file.}}&lt;br /&gt;
&lt;br /&gt;
== VideoReDo ==&lt;br /&gt;
&lt;br /&gt;
[http://www.videoredo.com/ VideoReDo] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.Vprj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Only lines starting with &#039;&#039;&amp;lt;SceneMarker&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; are read from the file. Each &#039;&#039;&amp;lt;Cut&amp;gt;&#039;&#039; is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;Filename&amp;gt;[ignored]&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;[ignored]&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;[ignored]&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker [ignored]&amp;gt;[scene marker time] (in ms * 10,000)&lt;br /&gt;
&amp;lt;Cut&amp;gt;[start time]:[end time] (both in ms * 10,000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Version&amp;gt;2&lt;br /&gt;
&amp;lt;Filename&amp;gt;C:\Path\To\Video.mpg&lt;br /&gt;
&amp;lt;InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;VideoStreamPID&amp;gt;224&amp;lt;/VideoStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;AudioStreamPID&amp;gt;192&amp;lt;/AudioStreamPID&amp;gt;&lt;br /&gt;
&amp;lt;/InputPIDList&amp;gt;&lt;br /&gt;
&amp;lt;SceneMarker 1415932542&amp;gt;4235230000&lt;br /&gt;
&amp;lt;SceneMarker 1415932543&amp;gt;4284610000&lt;br /&gt;
&amp;lt;SceneMarker 1415932544&amp;gt;4585580000&lt;br /&gt;
&amp;lt;SceneMarker 1415932545&amp;gt;5035360000&lt;br /&gt;
&amp;lt;Cut&amp;gt;4235230000:5936600000&lt;br /&gt;
&amp;lt;Cut&amp;gt;9535530000:11527860000&lt;br /&gt;
&amp;lt;Cut&amp;gt;14385710000:16090090000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comskip ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kaashoek.com/comskip/ Comskip] files are supported. The name of the file must be the same as the video but with a file extension of &#039;&#039;&#039;.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file contains the start and end frame numbers for the commercial breaks that were detected. The Comskip file may or may not contain the frame rate. If the frame rate is not found, the detected frame rate of the video is used to convert from the frame numbers to time offsets. Note that for TS files only the version 2 format is supported (where frame rate is suppplied).&lt;br /&gt;
&lt;br /&gt;
The version 1 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version 2 file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE [number of frames] FRAMES AT [frame rate]&lt;br /&gt;
------------------------&lt;br /&gt;
[start frame] [end frame]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FILE PROCESSING COMPLETE 678900 FRAMES AT 25&lt;br /&gt;
------------------------&lt;br /&gt;
12693	17792&lt;br /&gt;
28578	34549&lt;br /&gt;
43114	48222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SnapStream BeyondTV ==&lt;br /&gt;
&lt;br /&gt;
[http://www.snapstream.com/products/beyondtv/ BeyondTV] files are supported. The name of the file must be the same as the video but with &#039;&#039;&#039;.chapters.xml&#039;&#039;&#039; appended to the filename.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;&amp;lt;Region&amp;gt;&#039;&#039; within the XML file is treated as a commercial break. The file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;[start time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[start time in ms * 10,000]&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;[end time in hh:mm:ss.sssssss format - ignored]&amp;quot;&amp;gt;[end time in ms * 10,000]&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;cutlist&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:07:03.0000523&amp;quot;&amp;gt;4235230000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:09:53.0000660&amp;quot;&amp;gt;5936600000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:15:53.0000553&amp;quot;&amp;gt;9535530000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:19:12.0000786&amp;quot;&amp;gt;11527860000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
  &amp;lt;Region&amp;gt;&lt;br /&gt;
    &amp;lt;start comment=&amp;quot;0:23:58.0000571&amp;quot;&amp;gt;14385710000&amp;lt;/start&amp;gt;&lt;br /&gt;
    &amp;lt;end comment=&amp;quot;0:26:49.0000009&amp;quot;&amp;gt;16090090000&amp;lt;/end&amp;gt;&lt;br /&gt;
  &amp;lt;/Region&amp;gt;&lt;br /&gt;
&amp;lt;/cutlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Merging or Removing Short Commercial Breaks =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] can be used to:&lt;br /&gt;
* Merge commercial breaks within a set of commercials that haven&#039;t been detected accurately. Very useful if you find that automatically skipped commercial breaks still end up within a set of commercial breaks.&lt;br /&gt;
* Remove commercial breaks that are incorrectly identified outside of a likely set of commercial breaks. Very useful if you find that commercial skipping is happening unexpectedly while watching the TV show or Movie.&lt;br /&gt;
&lt;br /&gt;
= Altering Automatic Skip Timings =&lt;br /&gt;
&lt;br /&gt;
The [[Advancedsettings.xml#.3Cedl.3E|&amp;lt;edl&amp;gt; section of advancedsettings.xml]] also can be used to:&lt;br /&gt;
* Set how long to wait before automatically skipping when the start of a commercial break is reached. Useful if the automatic skip at the start of a set of commercial breaks is happening slightly too early for your liking, particularly if you aren&#039;t ever quite sure if that was a commercial that was about to start.&lt;br /&gt;
* Set how long to rewind after automatically skipping to the end of the commercial break. Useful if it&#039;s kind of hard to tell if that was in fact the start of the TV show after a block of commercials.&lt;br /&gt;
&lt;br /&gt;
= Showing EDL Information During Playback =&lt;br /&gt;
Display of EDL information was removed for v17 and v18 with the redesign of the Codec information windows.&lt;br /&gt;
{{Future|19|EDL markers will be visible on the video player OSD. See [https://github.com/xbmc/xbmc/pull/15767 PR15767]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using Scene Markers =&lt;br /&gt;
&lt;br /&gt;
To use any scene markers that have been read, buttons on the remote need to be configured to go to the next/previous scene marker. These buttons must use the &#039;&#039;&#039;NextScene&#039;&#039;&#039; and &#039;&#039;&#039;PreviousScene&#039;&#039;&#039; codes from [[Keymap]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|18}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PVR]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Submitting_Add-ons&amp;diff=241051</id>
		<title>Submitting Add-ons</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Submitting_Add-ons&amp;diff=241051"/>
		<updated>2021-12-29T23:06:31Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Don&amp;#039;t allow new addons into Leia anymore, only updates to existing addons.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Submitting a Compliant Add-on to the Kodi.tv Repo ===&lt;br /&gt;
&lt;br /&gt;
After you have read the [[Add-on rules|repository guidelines]] and made sure your addon is compliant with them, you may begin the submission process using the following steps.&lt;br /&gt;
&lt;br /&gt;
=== Allowed submissions ===&lt;br /&gt;
&lt;br /&gt;
We have restricted the allowed submissions of add-ons to past Kodi versions.&lt;br /&gt;
Several reasons:&lt;br /&gt;
* Kodi code improvements&lt;br /&gt;
* Reduce support load for add-on developers&lt;br /&gt;
* Reduce workload for repository maintainers&lt;br /&gt;
&lt;br /&gt;
Below is a table of on which submissions are allowed to official Kodi repository.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Allowed add-on submissions&lt;br /&gt;
! codename !! version !! update !! new&lt;br /&gt;
|-&lt;br /&gt;
| Dharma || 10.x || no || no&lt;br /&gt;
|-&lt;br /&gt;
| Eden || 11.x || no || no&lt;br /&gt;
|-&lt;br /&gt;
| Frodo || 12.x || no || no&lt;br /&gt;
|-&lt;br /&gt;
| Gotham || 13.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Helix || 14.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Isengard || 15.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis || 16.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Krypton || 17.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Leia || 18.x || yes || no&lt;br /&gt;
|-&lt;br /&gt;
| Matrix || 19.x || yes || yes&lt;br /&gt;
|-&lt;br /&gt;
| Nexus || 20.x || yes || yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional feature is that we now use combined repositories. So if your add-on is Gotham/Helix compatible, you only need to send it to Gotham repository.&lt;br /&gt;
If it&#039;s only Helix compatible you need to send it to Helix repository.&lt;br /&gt;
This of course requires that the minimal Kodi dependencies are set accordingly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Which repos are used for Python add-ons (scripts, scrapers and plugins)&lt;br /&gt;
! codename !! version !! repos !!colspan=&amp;quot;8&amp;quot;| repo&lt;br /&gt;
|-&lt;br /&gt;
| Dharma || 10.x || Dharma&lt;br /&gt;
|-&lt;br /&gt;
| Eden || 11.x || Eden&lt;br /&gt;
|-&lt;br /&gt;
| Frodo || 12.x || Frodo&lt;br /&gt;
|-&lt;br /&gt;
| Gotham || 13.x || Gotham&lt;br /&gt;
|-&lt;br /&gt;
| Helix || 14.x || Gotham || Helix&lt;br /&gt;
|-&lt;br /&gt;
| Isengard || 15.x || Gotham || Helix || Isengard&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis || 16.x || Gotham || Helix || Isengard  || Jarvis&lt;br /&gt;
|-&lt;br /&gt;
| Krypton || 17.x || Gotham || Helix || Isengard  || Jarvis  || Krypton&lt;br /&gt;
|-&lt;br /&gt;
| Leia || 18.x || Gotham || Helix || Isengard  || Jarvis  || Krypton || Leia&lt;br /&gt;
|- &lt;br /&gt;
| Matrix|| 19.x || - || - || - || - || - || - || Matrix&lt;br /&gt;
|- &lt;br /&gt;
| Nexus|| 20.x || - || - || - || - || - || - || Matrix || Nexus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Which repos are used for skins&lt;br /&gt;
! codename !! version !! repos !!colspan=&amp;quot;8&amp;quot;| repo&lt;br /&gt;
|-&lt;br /&gt;
| Dharma || 10.x || Dharma&lt;br /&gt;
|-&lt;br /&gt;
| Eden || 11.x || Eden&lt;br /&gt;
|-&lt;br /&gt;
| Frodo || 12.x || Frodo&lt;br /&gt;
|-&lt;br /&gt;
| Gotham || 13.x || Gotham&lt;br /&gt;
|-&lt;br /&gt;
| Helix || 14.x || Gotham || Helix&lt;br /&gt;
|-&lt;br /&gt;
| Isengard || 15.x || || || Isengard&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis || 16.x || || || || Jarvis&lt;br /&gt;
|-&lt;br /&gt;
| Krypton || 17.x || || || || || Krypton&lt;br /&gt;
|-&lt;br /&gt;
| Leia || 18.x || ||  || || || || Leia&lt;br /&gt;
|- &lt;br /&gt;
| Matrix|| 19.x || || || || || || || Matrix&lt;br /&gt;
|- &lt;br /&gt;
| Nexus|| 20.x || || || || || || || Matrix || Nexus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Which repos are used for other add-ons&lt;br /&gt;
! codename !! version !! repos !!colspan=&amp;quot;8&amp;quot;| repo&lt;br /&gt;
|-&lt;br /&gt;
| Dharma || 10.x || Dharma&lt;br /&gt;
|-&lt;br /&gt;
| Eden || 11.x || Eden&lt;br /&gt;
|-&lt;br /&gt;
| Frodo || 12.x || Frodo&lt;br /&gt;
|-&lt;br /&gt;
| Gotham || 13.x || Gotham&lt;br /&gt;
|-&lt;br /&gt;
| Helix || 14.x || Gotham || Helix&lt;br /&gt;
|-&lt;br /&gt;
| Isengard || 15.x || Gotham || Helix || Isengard&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis || 16.x || Gotham || Helix || Isengard  || Jarvis&lt;br /&gt;
|-&lt;br /&gt;
| Krypton || 17.x || Gotham || Helix || Isengard  || Jarvis  || Krypton&lt;br /&gt;
|-&lt;br /&gt;
| Leia || 18.x || Gotham || Helix || Isengard  || Jarvis  || Krypton || Leia&lt;br /&gt;
|- &lt;br /&gt;
| Matrix || 19.x || Gotham || Helix || Isengard  || Jarvis  || Krypton || Leia || Matrix&lt;br /&gt;
|- &lt;br /&gt;
| Nexus || 20.x || Gotham || Helix || Isengard  || Jarvis  || Krypton || Leia || Matrix || Nexus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{see also|Addon.xml#Dependency_versions}}&lt;br /&gt;
&lt;br /&gt;
=== Github ===&lt;br /&gt;
&lt;br /&gt;
==== Pull requests ====&lt;br /&gt;
New add-ons or updates may be submitted directly to the [[Official add-on repository]] on Github as pull requests. We are aware that this requires some initial git knowledge and we strongly suggest to read up on this subject before submitting a pull request. &lt;br /&gt;
&lt;br /&gt;
To reduce size we have split up the git repositories in several locations. Please visit [[Official add-on repository]] to see where they are. Each contains a small readme with a short description of it&#039;s contents as well as a link to a short explanation on how to submit using git command line. There are also git tools available that have a graphic interface and the steps above should be done in a similar way. Please consult the manual of those programs.&lt;br /&gt;
&lt;br /&gt;
In addition to the [[Add-on rules|repository guidelines]] the following rules apply when submitting PRs on Github:&lt;br /&gt;
&lt;br /&gt;
* PR should contain one commit only.&lt;br /&gt;
* Commit message should have the format &amp;quot;[addonid] version&amp;quot;. Example: &amp;quot;[my.cool.addon] 1.0.1&amp;quot; &lt;br /&gt;
&lt;br /&gt;
If Team Kodi reviewers asked you to make some changes in your PR, follow this procedure: [[HOW-TO: Update a pull request to an official addon repository on GitHub]].&lt;br /&gt;
&lt;br /&gt;
Only PRs from the add-on author or his successor will be accepted. Patches should be submitted upstream to the original author first. For an easy way to create PR from your own git repository, see [[HOW-TO: create add-on PRs using Git Subtree Merging]].&lt;br /&gt;
&lt;br /&gt;
==== Issue ticket ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This route is only available for skins in https://github.com/xbmc/repo-skins.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For skins submissions you may also use the &amp;quot;issue&amp;quot; option where you submit a request to get you add-on added. In this ticket you need to provide the basic information needed so our repo maintainers know where to get the correct version. &lt;br /&gt;
This consists of &lt;br /&gt;
  - Add-on name: &lt;br /&gt;
  - Add-on ID:&lt;br /&gt;
  - Version number:&lt;br /&gt;
  - Kodi/repository version:&lt;br /&gt;
  - Code location URL:&lt;br /&gt;
  - Revision/tag: &lt;br /&gt;
  - Branch:&lt;br /&gt;
&lt;br /&gt;
Further information is provide when you initially create the issue on github as comments in the ticket.&lt;br /&gt;
Same [[Add-on rules|repository guidelines]] apply here as well.&lt;br /&gt;
&lt;br /&gt;
==== How to submit your add-on and subsequent updates ====&lt;br /&gt;
Submitting updates is done the same way as with pull requests or issue ticket.&lt;br /&gt;
&lt;br /&gt;
==== Repository lists ====&lt;br /&gt;
You can create pull requests or tickets on the following individual repositories.&lt;br /&gt;
&lt;br /&gt;
  https://github.com/xbmc/repo-plugins&lt;br /&gt;
  https://github.com/xbmc/repo-resources&lt;br /&gt;
  https://github.com/xbmc/repo-scrapers&lt;br /&gt;
  https://github.com/xbmc/repo-scripts&lt;br /&gt;
  https://github.com/xbmc/repo-skins&lt;br /&gt;
  https://github.com/xbmc/repo-webinterfaces&lt;br /&gt;
&lt;br /&gt;
=== Additional information ===&lt;br /&gt;
Note that skin .xbt files will be generated automatically for skins so you do not include this in your pull request or created tickets. &lt;br /&gt;
After the add-on has been added or updated it will be available from the Kodi repository in Kodi itself, on http://addons.kodi.tv/ and on the wiki page http://kodi.wiki/index.php?title=Category:All_add-ons.&lt;br /&gt;
&lt;br /&gt;
{{Note|Please locate you add-on in the root of the git repository. This to make sure we can easily pull the add-on into our repository.&lt;br /&gt;
Example: https://github.com/XBMC-Addons/service.xbmc.versioncheck}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|We automatically combine all repos into one single repo list on our server and provide that list to Kodi. You only need to do a request for the minimum repo your add-on supports.}}&lt;br /&gt;
&lt;br /&gt;
=== The mailing list ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; MAILINGLIST IS NOT USED ANYMORE. ALL REQUESTS SHOULD GO THROUGH GITHUB &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Subtitles&amp;diff=225246</id>
		<title>Subtitles</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Subtitles&amp;diff=225246"/>
		<updated>2021-04-14T08:06:35Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Just a minor rephrase, as gotham is already too old :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Video library]] {{l2| [[Settings]] }}|[[Video playback]] {{l2| [[Settings/Player|Player]] }} }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Kodi supports both stand-alone subtitle and embedded subtitles. Most major subtitle formats are supported. Kodi can also search and download subtitles directly from full screen playback. &amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing subtitle settings during playback ==&lt;br /&gt;
[[File:Estuary-OSD-video-subtitle-selection.png|500px|right|thumb|The audio options are found under the gear icon.]]&lt;br /&gt;
{{main|Video playback}}&lt;br /&gt;
Various subtitle settings can be changed or they turned On/Off (default is on) via the [[Video_playback#Video_Player_OSD|OSD (On Screen Display)]] while watching a movie by selecting the subtitle menu or audio options.&lt;br /&gt;
&lt;br /&gt;
{{note|To make Kodi &#039;&#039;&#039;turn off&#039;&#039;&#039; subtitles by default: While playing a video, bring up the on screen display and select the audio options -&amp;gt; Turn off &amp;quot;subtitles&amp;quot; -&amp;gt; scroll down and select &amp;quot;save as default for all videos&amp;quot;.}}&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Settings details ===&lt;br /&gt;
[[File:Video Playback OSD 04.jpg|right|500px]]&lt;br /&gt;
{{#lst:Video playback|OSD subs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Main settings ===&lt;br /&gt;
{{See also|Settings/Player/Language#Subtitles}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adjusting subtitles position ===&lt;br /&gt;
The position of the subtitles can be adjusted vertically (but not horizontally) in the [[Settings/System/Display#Calibration|Video Calibration]] screen, you can also configure the way that they are displayed though the [[Settings/Player/Language#Subtitles|Subtitles Settings]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This does not apply to DVD subtitles as the DVD itself defines their location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Subtitle downloader ==&lt;br /&gt;
{{Main|HOW-TO:Set_up_subtitle_services}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ActivateWindow(subtitlesearch)&amp;lt;/code&amp;gt; can be bound to a remote button using [[keymaps]] in order to quickly bring up the subtitle search window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Manually downloaded external subtitle files ==&lt;br /&gt;
To use stand-alone subtitle files with video files, put them in the same folder as the video file or alternatively go to the [[Settings/Player/Language#Download_Services|Subtitles Settings]] and set a Custom Subtitle Directory. You can also choose to manually browse for the subtitle file via the [[Video_playback#Video_Player_OSD|OSD (On Screen Display)]]. You can configure the way that they are displayed through the [[Settings/Player/Language#Subtitles|Subtitles Settings]], and you can adjust where they are displayed onscreen through the [[Settings/System/Display#Calibration|Video Calibration Screen]].&lt;br /&gt;
&lt;br /&gt;
The subtitle and video files must have the same name, for example:&lt;br /&gt;
  &#039;&#039;&#039;Video File:&#039;&#039;&#039; The Matrix.avi&lt;br /&gt;
  &#039;&#039;&#039;Subtitle:&#039;&#039;&#039; The Matrix.srt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compressed subtitles ===&lt;br /&gt;
Kodi also supports compressed VobSub subtitles. Please note that the subtitles inside the [http://en.wikipedia.org/wiki/Rar RAR] archive still need to have the same name as the video file and requires the rar add-on being installed: See: [[Add-on:RAR_archive_support|RAR archive support]].&lt;br /&gt;
  &#039;&#039;&#039;Video File:&#039;&#039;&#039; The Matrix.avi&lt;br /&gt;
  &#039;&#039;&#039;Subtitle:&#039;&#039;&#039; The Matrix.rar &lt;br /&gt;
Where The Matrix.rar containins the VobSub-file &#039;&#039;The Matrix.sub&#039;&#039; and the &#039;&#039;The Matrix.idx&#039;&#039; VobSub index-file that has been compressed with [http://en.wikipedia.org/wiki/Rar RAR].&lt;br /&gt;
If you want Kodi to automatically turn on packed subtitles, you have to turn on the &#039;&#039;&#039;Search for Subtitles in RARs&#039;&#039;&#039; option in [[Settings/Player/Language#Subtitles|Subtitles Settings]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using multi language subtitles ===&lt;br /&gt;
Kodi supports the use of more than one external subtitle. This of course is most useful when you have more than one subtitle file, (eg. for more than language).&lt;br /&gt;
&lt;br /&gt;
To use this functionality you need to rename the video file and subtitle files as follows:&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Video File:&#039;&#039;&#039; The Matrix.avi&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 1:&#039;&#039;&#039; The Matrix.English.srt&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 2:&#039;&#039;&#039; The Matrix.French.srt&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 3:&#039;&#039;&#039; The Matrix.German.srt&lt;br /&gt;
&lt;br /&gt;
The dot after the filename but before the extension specifies the language (you can use anything here, mix numbers and and letters or just use one or the other).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can even mix subtitle formats, eg:&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Video File:&#039;&#039;&#039; Movie Name (2006).avi&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 1:&#039;&#039;&#039; Movie Name (2006).Chinese.idx&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 1:&#039;&#039;&#039; Movie Name (2006).Chinese.sub&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 2:&#039;&#039;&#039; Movie Name (2006).Japanese.idx&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 2:&#039;&#039;&#039; Movie Name (2006).Japanese.sub&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 3:&#039;&#039;&#039; Movie Name (2006).English.srt&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 4:&#039;&#039;&#039; Movie Name (2006).French.smi&lt;br /&gt;
  &#039;&#039;&#039;Subtitle 5:&#039;&#039;&#039; Movie Name (2006).German.ssa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced options ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding fonts ===&lt;br /&gt;
Additional fonts can be stored in the Kodi folder (one level below [[userdata]]) at &amp;lt;code&amp;gt;Kodi/media/Fonts/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increasing the delay range for subtitle adjustment ===&lt;br /&gt;
{{main|advancedsettings.xml}}&lt;br /&gt;
If you don&#039;t already have an [[advancedsettings.xml]] file, it&#039;s very simple to make. Kodi uses this file for advanced settings and features that normal users shouldn&#039;t modify without first knowing what they do, as well as for experimental features, etc.&lt;br /&gt;
&lt;br /&gt;
# Create a &#039;&#039;&#039;plain text file&#039;&#039;&#039; (no rich text formatting, don&#039;t use .doc, etc) and save it as &#039;&#039;&#039;advancedsettings.xml&#039;&#039;&#039;. Make sure that the file extension is &amp;quot;.xml&amp;quot; and &#039;&#039;&#039;not&#039;&#039;&#039; &amp;quot;.txt&amp;quot; or &amp;quot;.xml.txt&amp;quot;.&lt;br /&gt;
# Cut and paste this into your new plain text file:&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
  &amp;lt;video&amp;gt;&lt;br /&gt;
    &amp;lt;subsdelayrange&amp;gt;10&amp;lt;/subsdelayrange&amp;gt;  &amp;lt;!-- Delay range for subtitles, in seconds. --&amp;gt;&lt;br /&gt;
    &amp;lt;audiodelayrange&amp;gt;10&amp;lt;/audiodelayrange&amp;gt;  &amp;lt;!-- Delay range for audio/video sync, in seconds. --&amp;gt;&lt;br /&gt;
  &amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Change the two values between the tags to fit your situation.&lt;br /&gt;
# Save this file in your &#039;&#039;&#039;[[Userdata|userdata folder]]&#039;&#039;&#039;&lt;br /&gt;
#: &#039;&#039;If you have an existing file, make sure the &amp;lt;video&amp;gt;&amp;lt;/video&amp;gt; tags, and settings we&#039;ll add between them, are between the main &amp;lt;advancedsettings&amp;gt;&amp;lt;/advancedsettings&amp;gt; tags.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using Forced Subtitles ===&lt;br /&gt;
Many movies have subtitles encoded for secondary languages spoken during the film – when these are added to the movie, they are known as forced subtitles and are always visible (despite not being hard encoded). Kodi (since v13 Gotham) recognizes and respects the forced flag for showing subtitles (even if subtitles are turned off by default, the forced flag will trigger them being turned on). This requires that the user have set the default languages in Settings in order to function properly.  If there are multiple forced subtitles, Kodi will select the forced subtitles that match the default playback language. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Internal Forced Subtitles&lt;br /&gt;
If you are using an .mkv file, the forced subtitles may be included in the file when originally encoded. If so, Kodi will automatically recognize that they are present and will display them at the appropriate times. If they are not included, or if the header was not properly edited, you will need to use external subtitles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; External Forced Subtitles&lt;br /&gt;
If you are using anything other than an .mkv file, or if your mkv doesn’t have the forced subtitles properly included, the forced flag can be easily added to your external subtitles. Following the same naming conventions listed above, you can then append the forced flag to the end of the subtitle file name. The forced flag can be either upper, lower or mixed case in the filename and can use a “.” (dot), “ “ (space) or “-“ (dash) to separate them from the name of the movie and language of the subtitles. IE:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Movie Name (2006).English.Forced.srt&lt;br /&gt;
Movie Name (2006).en.forced.srt&lt;br /&gt;
Movie Name (2006).German.Forced.srt&lt;br /&gt;
Movie Name (2006)-Swedish-Forced.srt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
{{github_link|[https://github.com/xbmc/xbmc/blob/master/xbmc/cores/VideoPlayer/VideoPlayer.cpp#L94 Requirements to load subtitles]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|17}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Video library]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Subtitles|*]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Debug_Python_Scripts_with_Web-PDB&amp;diff=223892</id>
		<title>HOW-TO:Debug Python Scripts with Web-PDB</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Debug_Python_Scripts_with_Web-PDB&amp;diff=223892"/>
		<updated>2021-02-26T21:33:26Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* How To Use Web-PDB for Kodi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]|[[Python development]]}}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/romanvm/kodi.web-pdb Web-PDB] is a remote web-interface to Python&#039;s built-in [https://docs.python.org/2/library/pdb.html PDB] debugger with additional convenience features. It is not tied to any IDE or other software, all you need is a common web-browser, e.g. Chrome or Firefox. Web-PDB is compatible with both Python 2 and 3, so you can use it to debug your Python 3 compatible addons.&lt;br /&gt;
&lt;br /&gt;
[[File:web-pdb.png]]&lt;br /&gt;
&lt;br /&gt;
Web-PDB for Kodi is available as an addon in the official Kodi addons repo.&lt;br /&gt;
&lt;br /&gt;
== How To Use Web-PDB for Kodi ==&lt;br /&gt;
&lt;br /&gt;
1. Install Web-PDB addon: &#039;&#039;&#039;Kodi Add-on repository &amp;gt; Program add-ons &amp;gt; Web-PDB&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
2. Add &amp;lt;code&amp;gt;script.module.web-pdb&amp;lt;/code&amp;gt; to [[addon.xml]] as a dependency:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
   &amp;lt;import addon=&amp;quot;script.module.web-pdb&amp;quot; version=&amp;quot;1.5.6&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Restart Kodi so that it re-reads addon dependencies.&lt;br /&gt;
&lt;br /&gt;
4. Insert the following line into your addon code at the point where you want to start debugging:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
import web_pdb; web_pdb.set_trace()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;set_trace()&amp;lt;/code&amp;gt; call will suspend your addon and open a web-UI at the default port 5555 (port value can be changed). At the same time a notification will be displayed in Kodi, indicating that a debug session is active. The notification also shows web-UI host/port.&lt;br /&gt;
&lt;br /&gt;
5. Enter in your the address bar of your browser: &amp;lt;code&amp;gt;http://&amp;lt;your Kodi machine hostname or IP&amp;gt;:5555&amp;lt;/code&amp;gt;, for example &amp;lt;code&amp;gt;http://monty-python:5555&amp;lt;/code&amp;gt;. Use &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; as a hostname if you are connecting from the same machine that runs Kodi. If everything is OK, you should see the Web-PDB UI. Now you can use all PDB commands and features. Additional &#039;&#039;&#039;Current file&#039;&#039;&#039;, &#039;&#039;&#039;Globals&#039;&#039;&#039; and &#039;&#039;&#039;Locals&#039;&#039;&#039; information boxes help you better track your program runtime state.&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/romanvm/kodi.web-pdb Web-PDB for Kodi on GitHub].&lt;br /&gt;
* [https://docs.python.org/2/library/pdb.html PDB debugger documentation].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=209609</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=209609"/>
		<updated>2020-05-22T17:17:56Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Fix documentation of &amp;lt;provides&amp;gt; if an empty value is provided&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|See Note&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|If the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element is not defined, behaviour will depend on the structure of your addon. If it has a single extension point (e.g. a single &#039;&#039;&#039;xbmc.python.script&#039;&#039;&#039; or &#039;&#039;&#039;xbmc.python.pluginsource&#039;&#039;&#039;), kodi will default to &amp;quot;executable&amp;quot; (thus your addon will be shown in programs). If your addon has multiple extension points and none specifies a &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, different entries for your addon will be shown in &amp;quot;programs&amp;quot; (multiple fallbacks to &amp;quot;executable&amp;quot;). If your addon has multiple extension points and only one (or some) define the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag it really depends on the order of the extension points. If the first extension point (your addon &#039;&#039;&#039;main extension point&#039;&#039;&#039;) defines the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; element, kodi will assume all the other (empty) extension points provide the same content. Otherwise it will set the content for all the extension points that specify the &#039;&#039;&#039;&amp;lt;provides&amp;gt;&#039;&#039;&#039; tag and fallback all the others to &amp;quot;executable&amp;quot;. &#039;&#039;&#039;At the moment, there is no way to hide an addon from the interface.&#039;&#039;&#039;  |reminder}}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=206577</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=206577"/>
		<updated>2020-04-28T10:22:25Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Frodo is deprecated so it doesn&amp;#039;t require de ABI info anyway&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=206576</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=206576"/>
		<updated>2020-04-28T10:21:50Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Missing ABI versions for xbmc.metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 (ABI 1.0) || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.15.0 (ABI 5.14.0) || 11.2.0 (ABI 6.0.0) || 2.1.0 (ABI 1.0) || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=202532</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=202532"/>
		<updated>2020-04-09T14:52:28Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Relax requirements for screenshots and banners&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#resources.2Ficon.png|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#resources.2Ffanart.jpg|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png {{anchor|icon_png_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg {{anchor|fanart_jpg_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* Image must be 1MB or less&lt;br /&gt;
* Image must be jpeg or png&amp;amp;sup1;.  &amp;amp;sup1;PNG can only be used with Krypton and later&lt;br /&gt;
* Image must be 1280x720, 1920x1080 or 3840x2160&lt;br /&gt;
* We recommend a 1280x720 image.  It should certainly be no larger than 3840x2160.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.jpg (optional) {{anchor|screenshot_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screenshot_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg or png formats sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must be 750KB or less&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) {{anchor|banner_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg or png image formats sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) {{anchor|clearlogo_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=202531</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=202531"/>
		<updated>2020-04-08T20:36:12Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.14.0 || 11.2.0 (ABI 6.0.0) || 2.1.0 || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v19 Matrix and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tvos-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199682</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199682"/>
		<updated>2020-03-08T21:44:27Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Remove redundant info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.14.0 || 11.2.0 (ABI 6.0.0) || 2.1.0 || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199681</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199681"/>
		<updated>2020-03-08T21:42:58Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Fix c/p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.14.0 || 11.2.0 (ABI 6.0.0) || 2.1.0 || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements (some optional) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; all screenshot files must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; image used as banner must be listed here (mandatory since Kodi v18 Leia)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - &#039;&#039;&#039;(optional)&#039;&#039;&#039; image used as clearlogo must be listed here (mandatory since Kodi v18 Leia)&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199680</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199680"/>
		<updated>2020-03-08T21:40:03Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Change screenshot anchor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png {{anchor|icon_png_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg {{anchor|fanart_jpg_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.jpg (optional) {{anchor|screenshot_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screenshot_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg formats sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) {{anchor|banner_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) {{anchor|clearlogo_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199679</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199679"/>
		<updated>2020-03-08T21:39:51Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add links to missing assets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.14.0 || 11.2.0 (ABI 6.0.0) || 2.1.0 || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon_png_element|icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart_jpg_element|fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#screenshot_specifications|screenshots]] - all screenshot files must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#banner_element|banner.jpg]] - all screenshot files must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#clearlogo_element|clearlogo.png]] - all screenshot files must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199678</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199678"/>
		<updated>2020-03-08T21:35:03Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Create anchors for external pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png {{anchor|icon_png_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg {{anchor|fanart_jpg_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.jpg (optional) {{anchor|screenshot_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg formats sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) {{anchor|banner_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) {{anchor|clearlogo_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199677</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199677"/>
		<updated>2020-03-08T21:31:39Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* resources/settings.xml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png {{anchor|icon_png_element}} ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199676</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199676"/>
		<updated>2020-03-08T21:31:09Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* resources/icon.png */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ==== {{anchor|icon_png_element}}&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199675</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199675"/>
		<updated>2020-03-08T21:24:02Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Directory Name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199674</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199674"/>
		<updated>2020-03-08T21:22:39Z</updated>

		<summary type="html">&lt;p&gt;Enen92: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;, etc.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  The addon manifest (&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;) reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.kodi/addons/&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt; for old XBMC-based releases).&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199673</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199673"/>
		<updated>2020-03-08T21:18:13Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Remove cpluff reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;changelog.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  All of these reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|18}}&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199671</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199671"/>
		<updated>2020-03-08T20:56:36Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add Leia version of directory structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
The add-ons system is based on the plugin library [http://www.c-pluff.org c-pluff].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;changelog.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  All of these reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v18 Leia and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   banner.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   clearlogo.png (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199670</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199670"/>
		<updated>2020-03-08T20:55:30Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add more assets to krypton versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
The add-ons system is based on the plugin library [http://www.c-pluff.org c-pluff].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;changelog.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  All of these reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg (can be placed anywhere in the addon directory)&lt;br /&gt;
   icon.png (can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-1.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-2.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-3.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
   screenshot-4.jpg (&#039;&#039;&#039;optional&#039;&#039;&#039; - can be placed anywhere in the addon directory)&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199669</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199669"/>
		<updated>2020-03-08T20:52:25Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Add screenshots, banner and clearlogo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
The add-ons system is based on the plugin library [http://www.c-pluff.org c-pluff].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;changelog.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  All of these reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg&lt;br /&gt;
   icon.png&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure (and named anything rather than icon.png) as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure (and named anything rather than fanart.jpg) as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; element in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation/example).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
==== resources/screenshot-x.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when using the addon browser or the addon website. Addons can define up to 10 screenshots (4 is advised). This is accomplished through the repetition of the &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt; element of &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; each pointing to a different image. Screenshot images can be placed anywhere in the addon directory (and have any arbitrary name) as long as they point to an existing file in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. screenshot-x.png is just an example naming convention.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|screen_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be in the jpeg format sized 1280x720 or 1920x1080&lt;br /&gt;
* Image must have &#039;&#039;&#039;no transparency&#039;&#039;&#039;&lt;br /&gt;
* Addons can include a maximum of 10 screenshots&lt;br /&gt;
* If the addon includes screenshots, 4 is the recommended number of images to provide,&lt;br /&gt;
&lt;br /&gt;
==== resources/banner.jpg (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;banner&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/banner.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|banner_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Images must be in jpeg image format sized &#039;&#039;&#039;1000x185&#039;&#039;&#039; pixels, no exceptions&lt;br /&gt;
&lt;br /&gt;
==== resources/clearlogo.png (optional) ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
This &#039;&#039;&#039;optional art type&#039;&#039;&#039; helps to keep Kodi graphically rich when browsing and using add-ons for any skins implementing this art type in the skin views. if this file exists, &amp;quot;clearlogo&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;.  It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/clearlogo.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|clearlogo_specifications}}&lt;br /&gt;
&lt;br /&gt;
* Image must be png format sized &#039;&#039;&#039;400 x 155px&#039;&#039;&#039; (non-HD version) or &#039;&#039;&#039;800 x 310&#039;&#039;&#039;px (HD version)&lt;br /&gt;
* Image &#039;&#039;&#039;must have transparency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199668</id>
		<title>Add-on structure</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_structure&amp;diff=199668"/>
		<updated>2020-03-08T19:28:42Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Improve icon and fanart information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
&lt;br /&gt;
This page summarizes the add-ons system introduced in the Dharma release (v10) of XBMC.  This system allows third-party developed enhancements to Kodi to be distributed to Kodi users directly from inside the Kodi interface.&lt;br /&gt;
&lt;br /&gt;
The add-ons system is based on the plugin library [http://www.c-pluff.org c-pluff].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each add-on is kept in its own folder, and is described via an XML file named &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt;.  In addition, some other files can also come with the add-on, such as &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;changelog.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;fanart.jpg&amp;lt;/code&amp;gt;.  These are all optional, though we encourage you to at least have &amp;lt;code&amp;gt;icon.png&amp;lt;/code&amp;gt;.  All of these reside in the &amp;quot;root&amp;quot; of the folder that contains the add-on.  Additional data may be contained within a &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subfolder, such as language translations and descriptions of settings.&lt;br /&gt;
&lt;br /&gt;
When installed, the whole add-on folder will be placed inside &amp;lt;code&amp;gt;.xbmc/addons/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory Name ==&lt;br /&gt;
&lt;br /&gt;
Your directory name should follow this convention: &amp;lt;code&amp;gt;&amp;lt;addon-type&amp;gt;[.&amp;lt;media-type&amp;gt;].&amp;lt;your-plugin-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each name part is case sensitive and must be in lower case. The dot character separates each name part; you can use further dots to separate things in your plugin name if you wish. Alternatively, you may use a hyphen (-). No other non-alphanumeric characters should be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon-type&amp;lt;/code&amp;gt; is one of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Description&lt;br /&gt;
!Media Type Required?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt;&lt;br /&gt;
|A repository definition file that allows users to add new repositories to the Kodi addon manager.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|A plugin script or module that adds to the functionality of Kodi. Plugins appear under the relevant media section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|A runnable program file that will appear in the Program section of the main home menu.&lt;br /&gt;
|&#039;&#039;&#039;Yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;skin&amp;lt;/code&amp;gt;&lt;br /&gt;
|An Kodi skin definition and its supporting script files.&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resource&amp;lt;/code&amp;gt;&lt;br /&gt;
|An addon that will provide additional files (language files, images, [[sounds.xml|uisounds]]).&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following table describes the available &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt;s for the available add-on types. Your add-on may provide more than one &amp;lt;code&amp;gt;media-type&amp;lt;/code&amp;gt; if&lt;br /&gt;
you wish, whereby it will appear in more than one section. In most cases, however, a single media type will suffice, and it may be preferable to have multiple add-ons each providing a single media type rather than one add-on that tries to do it all.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Add-on Type&lt;br /&gt;
!Media Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|A music add-on that will appear in the Music main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|A video add-on that will appear in the Video main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;picture&amp;lt;/code&amp;gt;&lt;br /&gt;
|A picture add-on that will appear in the Pictures main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;program&amp;lt;/code&amp;gt;&lt;br /&gt;
|A program add-on that will appear in the Add-ons main menu.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|A weather add-on that will appear in the Weather main menu. You can omit the Add-on Type in the directory name and addon-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;{{anchor|script_modules}}&lt;br /&gt;
|A script plugin that will not appear under a category or within the Add-ons manager, but provides support for other add-ons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|A script that will be run at either login or startup&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The add-on name is up to you, but be sure that it isn&#039;t already in use by another add-on. For instance, if you are creating an add-on that integrates the Gpodder software with Kodi for audio podcasts you might name your directory &amp;lt;code&amp;gt;plugin.audio.gpodder-xbmc3&amp;lt;/code&amp;gt;. If you are creating a screen scraper to present TV shows from MyGreatTv.com. It might be &amp;lt;code&amp;gt;plugin.video.my-great-tv-com&amp;lt;/code&amp;gt;. A script to ping all your friends on twitter to tell them you are home might be called&lt;br /&gt;
&amp;lt;code&amp;gt;script.service.ping-twits-i-am-home&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Directory structure ==&lt;br /&gt;
&lt;br /&gt;
Your directory contains all the resources needed to operate your add-on. The directory must be considered read-only and should not be used for storing transient or inter-session data. Other mechanisms are available to do that (more later). The directory should be structured as follows:&lt;br /&gt;
&lt;br /&gt;
=== Kodi v17 Krypton and up===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
   fanart.jpg&lt;br /&gt;
   icon.png&lt;br /&gt;
&lt;br /&gt;
=== Kodi v16 Jarvis and earlier===&lt;br /&gt;
 addon.py&lt;br /&gt;
 addon.xml&lt;br /&gt;
 fanart.jpg&lt;br /&gt;
 icon.png&lt;br /&gt;
 LICENSE.txt&lt;br /&gt;
 changelog.txt&lt;br /&gt;
 resources/&lt;br /&gt;
   settings.xml&lt;br /&gt;
   language/&lt;br /&gt;
   lib/&lt;br /&gt;
   data/&lt;br /&gt;
   media/&lt;br /&gt;
&lt;br /&gt;
Other files may be required to run your add-on, if your add-on becomes more complex. It is considered good practice to place various add-on resources and support code modules in the &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; folder. If those libs are commonly used by multiple add-ons, consider adding them as a separate add-on, e.g. &amp;lt;code&amp;gt;script.module.foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The most important thing to remember from this is that everything that doesn&#039;t need to be in the root of your directory is considered a resource and should be placed inside &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories. Also remember, all the above is a &#039;&#039;recommended&#039;&#039; outline for your add-on; if you need fewer or more&lt;br /&gt;
directories to organise your work, just change it. For instance, skins are add-ons that will require more directories than this.&lt;br /&gt;
&lt;br /&gt;
=== addon.py ===&lt;br /&gt;
&lt;br /&gt;
This will contain the main Python code for your add-on. You can name it whatever you want, since you&#039;ll define this Python file in &amp;lt;code&amp;gt;[[addon.xml]]&amp;lt;/code&amp;gt; as your main script file.&lt;br /&gt;
&lt;br /&gt;
=== addon.xml ===&lt;br /&gt;
{{See also|addon.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; gives Kodi important metadata about your add-on, such as:&lt;br /&gt;
* what the add-on provides&lt;br /&gt;
* what the add-on relies on to work&lt;br /&gt;
* what script to run when it is fired up (if it is meant to be started)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== changelog.txt ===&lt;br /&gt;
&lt;br /&gt;
{{note|Deprecated in Kodi v17 Krypton. Replaced by [[Addon.xml#.3Cnews.3E]]}}&lt;br /&gt;
&lt;br /&gt;
A text file that contains a description of the changes you make to the add-on for each release.  This is displayed in the Kodi addon installation/update system. The recommended format is to have it sorted by version in descending order, with a simple description as to the major changes (new functionality, big fixes, etc) in each version. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that&lt;br /&gt;
they may have been having has been fixed or not.)&lt;br /&gt;
&lt;br /&gt;
Here is a sample&lt;br /&gt;
&amp;lt;code&amp;gt;changelog.txt:&lt;br /&gt;
&lt;br /&gt;
 v0.1.3 (2015-12-25)&lt;br /&gt;
 - Update with 15.0 Isengard&lt;br /&gt;
 &lt;br /&gt;
 v0.1.2  (2014-1-15)&lt;br /&gt;
 - Add notification for Ubuntu users checking through apt command&lt;br /&gt;
 &lt;br /&gt;
 v0.1.1  (2014-1-1)&lt;br /&gt;
 - Initial version&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommend to add a date so users know when last update was done. Best is to use YYYY-MM-DD as this is the least confusing way of dat notation.&lt;br /&gt;
&lt;br /&gt;
=== icon.png ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the icon.png file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/icon.png&amp;gt;|resources/icon.png]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039; }} &lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. See the [[#icon_specifications|icon.png specifications]].&lt;br /&gt;
&lt;br /&gt;
=== fanart.jpg ===&lt;br /&gt;
&lt;br /&gt;
{{warning|1=&#039;&#039;&#039;Only addons for versions of Kodi below v17 Krypton must contain the fanart.jpg file in the root of the addon directory.&#039;&#039;&#039; Kodi 17 Krypton and above is able to use any other directory in the addon structure (preference for &#039;&#039;&#039;[[Add-on_structure#&amp;lt;resources/fanart.jpg&amp;gt;|resources/fanart.jpg]]&#039;&#039;&#039;) and be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. See the [[#fanart_specifications|fanart.jpg specifications]].&lt;br /&gt;
&lt;br /&gt;
=== LICENSE.txt ===&lt;br /&gt;
{{See also|Submitting_Add-ons#Repository_Submission_Guidelines_-_Please_Read_Before_Submitting_Your_Addon|label 1=Repository guidelines}}&lt;br /&gt;
&lt;br /&gt;
This file should contain the text of whatever software license you&#039;ve chosen to release your add-on under (e.g. GPLv2).&lt;br /&gt;
&lt;br /&gt;
=== resources/ ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; subdirectory is the preferred place to put any files that the add-on uses that don&#039;t need to be stored in the root directory. For instance, translations, software libraries, and image resources would go in &amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; or one of its subdirectories.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo file are missing from this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/settings.xml ====&lt;br /&gt;
{{See also|Add-on settings}}&lt;br /&gt;
&lt;br /&gt;
This is an XML file that defines the user-configurable settings used by the add-on. The file defines the names and types of the settings, and how they should appear in the settings dialog for the add-on.&lt;br /&gt;
&lt;br /&gt;
==== resources/icon.png ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This is an icon used to represent your add-on in various parts of Kodi. Icon is a mandatory art type; &amp;quot;icon&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/icon.png is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|icon_specifications}}&lt;br /&gt;
&lt;br /&gt;
* The icon size must be 256x256 pixels or 512x512 pixels.&lt;br /&gt;
* File format is PNG.&lt;br /&gt;
* Background must be 100% solid. That doesn&#039;t mean one color, it also can be a gradient or a low contrast texture. Just make sure there is no transparency.&lt;br /&gt;
* Keep the logo as simple a possible, no exaggerated 3D effects or high contrast textures.&lt;br /&gt;
* Use a padding of at least 25px for your logo (not the background!). Excepted are large text logos (see icon for themoviedb.org).&lt;br /&gt;
* Keep text to a minimum. However, a text logo along with the graphical logo is recommended in order to easily recognize the addon.&lt;br /&gt;
* Don&#039;t mix logos with Kodi&#039;s logo; it&#039;s obvious that we&#039;re talking about Kodi here.&lt;br /&gt;
* Don&#039;t add borders or any overlays, that&#039;s the skinner&#039;s job. However, if borders are an element of your logo, make sure there is enough padding.&lt;br /&gt;
* It is suggested that a logo on a plain background (non-transparent) is best in many situations (e.g. for addons that retrieve media from an online service, use that service&#039;s logo &#039;&#039;as long as you are free to do so&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== resources/fanart.jpg ====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
This helps to keep Kodi graphically rich when browsing and using add-ons. if this file exists, &amp;quot;fanart&amp;quot; must be listed in &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml assets]]&#039;&#039;&#039;. Fanart is almost all the time mandatory for plugins and scripts (exception for addons such as [[#script_modules|&amp;lt;code&amp;gt;script.module&amp;lt;/code&amp;gt;]]). It can be placed anywhere in the addon directory structure as long as the &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;&#039;[[Addon.xml#&amp;lt;assets&amp;gt;|addon.xml asset]]&#039;&#039;&#039; points to the right file (resources/fanart.jpg is just a recommendation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Specifications&#039;&#039;&#039;&#039;&#039; {{anchor|fanart_specifications}}&lt;br /&gt;
&lt;br /&gt;
* It should be 16:9 aspect ratio&lt;br /&gt;
* It is intended for the background, so should be simple and without text where reasonable.&lt;br /&gt;
* We recommend a 1280x720 JPEG image.  It should certainly be no larger than 1920x1080.&lt;br /&gt;
* We recommend keeping it as small as is reasonable with respect to file-size.  Remember that hundreds of thousands of users are going to be downloading this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== resources/language/ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Translation tools:&#039;&#039;&#039;&lt;br /&gt;
* [[Language support]]&lt;br /&gt;
* [[Translation System]]&lt;br /&gt;
* Convert .xml to .po: [https://github.com/alanwww1/xbmc-xml2po xbmc-xml2po]&lt;br /&gt;
* Check for .po files: [https://github.com/alanwww1/xbmc-checkpo xbmc-checkpo]&lt;br /&gt;
* Utility for keeping Kodi upstream language files and the language files hosted on transifex.com in sync: [https://github.com/alanwww1/xbmc-txupdate xbmc-txupdate]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;String ID range:&#039;&#039;&#039;&lt;br /&gt;
* strings 31000 thru 31999 reserved for skins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;strings.po&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|strings.xml will possibly be deprecated after the release of Frodo/Gotham. Frodo and Gotham will still be backwards compatible with .xml}}&lt;br /&gt;
&lt;br /&gt;
==== resources/lib/ ====&lt;br /&gt;
&lt;br /&gt;
Put any module definitions or third party software libraries into this directory.&lt;br /&gt;
&lt;br /&gt;
If you are having errors running the application (e.g. kodi.log shows addon.py isn&#039;t found) then a possible cause may be the __init__.pyo &amp;amp; __init__.py files are missing in this folder. Try copying it from another addon.&lt;br /&gt;
&lt;br /&gt;
==== resources/data/ ====&lt;br /&gt;
&lt;br /&gt;
Store any other static data structures your application requires here. Examples might be&lt;br /&gt;
XLT/XSD files or static XML files that contain lookup tables etc.&lt;br /&gt;
&lt;br /&gt;
==== resources/media/ ====&lt;br /&gt;
&lt;br /&gt;
Store any static media (picture, audio, video etc.) files in this directory.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
Following pages will explain in more depth to get started. Providing examples, background information and useful links.&lt;br /&gt;
&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Add-ons]]&lt;br /&gt;
* [[:Category:All add-ons]]&lt;br /&gt;
* [[3rd party add-on repositories]]&lt;br /&gt;
&#039;&#039;&#039;Development:&#039;&#039;&#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Addon Settings]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
* [[Add-on repositories]]&lt;br /&gt;
* [[Official add-on repository]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199667</id>
		<title>Addon.xml</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Addon.xml&amp;diff=199667"/>
		<updated>2020-03-08T18:39:45Z</updated>

		<summary type="html">&lt;p&gt;Enen92: Fix SPDX licenses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Development]]|[[Add-on development]]}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every skin, script, or plugin in Kodi contains an &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file which describes the add-on, providing credits, version information and dependencies. Below, we will explain how this file is structured and which elements must be used to create an add-on for Kodi. You can also consult the examples at the end to see how this file is laid out depending on if you are developing a skin or script.&lt;br /&gt;
&lt;br /&gt;
Every &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file has the same basic structure, this example is for a video plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;plugin.addon.id&amp;quot; name=&amp;quot;Your Add-on&amp;quot; version=&amp;quot;1.2.3&amp;quot; provider-name=&amp;quot;You&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;addon.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;video&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s summary&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Your add-on&#039;s description&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt; &amp;lt;!-- the language of the videos or other content the plugin provides, may be omitted in case the addon does not provide any content --&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;https://forum.kodi.tv/showthread.php?tid=xxxx&amp;lt;/forum&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;http://myplugin.com&amp;lt;/website&amp;gt; &amp;lt;!-- the url of the website that contains the videos (or the official website of your plugin). May be omitted.  --&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;you@youremail.com&amp;lt;/email&amp;gt; &amp;lt;!-- may be omitted  --&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;http://github.com/you/plugin.addon.id&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;v1.2.3 (01/02/201x)&lt;br /&gt;
      [new] some new feature&lt;br /&gt;
      [fix] some fix&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;banner&amp;gt;&amp;lt;/banner&amp;gt; &amp;lt;!-- optional --&amp;gt;&lt;br /&gt;
        &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt; &amp;lt;!-- optional  --&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;&amp;lt;/screenshot&amp;gt; &amp;lt;!-- optional, max 10  --&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important things to note in the above sample:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element must be present, and be the root node. It presents data about the add-on package as a whole.&lt;br /&gt;
* Inside the &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element is a &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element, listing all the dependencies that this add-on needs in order to function.&lt;br /&gt;
* Then there are one or more &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; elements, each of which describes a part of Kodi that the add-on extends.&lt;br /&gt;
* Finally, there is a specific &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element that extends &amp;lt;code&amp;gt;&amp;quot;xbmc.addon.metadata&amp;quot;&amp;lt;/code&amp;gt;. This describes the add-on to the user.&lt;br /&gt;
* Banners and clearlogos assets exclusive to Kodi v.18+&lt;br /&gt;
= Elements =&lt;br /&gt;
 &lt;br /&gt;
== &amp;lt;addon&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;addon&amp;gt;&amp;lt;/code&amp;gt; element has 4 attributes, all required: &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;provider-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;script.hello.world&amp;quot; name=&amp;quot;Hello World&amp;quot; version=&amp;quot;0.0.1&amp;quot; provider-name=&amp;quot;Dev1, Dev2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== id attribute ===&lt;br /&gt;
&lt;br /&gt;
The id attribute is the unique identifier used for this add-on.  It must be unique, and must use only lowercase characters, periods, underscores, dashes and numbers.  This identifier is also used as the name of the folder that contains the add-on, so for ease of searching, we suggest you use something like &amp;lt;type&amp;gt;.&amp;lt;uniquename&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The version attribute is used by Kodi to determine whether updates are available. This should be use a version scheme like &amp;lt;code&amp;gt;x.y.z&amp;lt;/code&amp;gt; (major.minor.patch). For example: &amp;lt;code&amp;gt;version=&amp;quot;0.0.1&amp;quot;&amp;lt;/code&amp;gt;. Generally, you&#039;ll start with a version of &amp;lt;code&amp;gt;0.y.z&amp;lt;/code&amp;gt; for test releases and once you feel it is ready for a full release, you&#039;d bump the version to &amp;lt;code&amp;gt;1.0.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== How versioning works ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.10&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.3.0&amp;lt;/code&amp;gt;   is newer than &amp;lt;code&amp;gt;2.2.9&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~alpha&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta3&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2.2.1~beta10&amp;lt;/code&amp;gt; is newer than &amp;lt;code&amp;gt;2.2.1~beta1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Text should only be added for a beta version. In other cases version number should only contain numbers.}}&lt;br /&gt;
&lt;br /&gt;
=== name attribute ===&lt;br /&gt;
&lt;br /&gt;
The name attribute is the name of the add-on as it appears in the UI.  This should be in English where it makes sense for it to be so, and is not translatable.&lt;br /&gt;
&lt;br /&gt;
=== provider-name attribute ===&lt;br /&gt;
&lt;br /&gt;
The provider-name attribute is used as the author field.  This could be a team of authors or a single author. If the add-on is maintained by multiple people please separate them with a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;requires&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; element contains one or more &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; elements which specify which other add-ons this particular add-on requires, and which version of those add-ons it requires. These add-ons may be part of Kodi itself, or may be parts of other third-party add-ons.&lt;br /&gt;
&lt;br /&gt;
Kodi will only allow the add-on to be run if suitable versions of the (non-optional) add-ons on which this add-on depends are installed. When a user installs your add-on from an online repository via Kodi&#039;s add-on manager, Kodi attempts to resolve these dependencies, and install anything that your add-on relies on first. The dependency must be provided with the minimum version number your script/skin requires.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample &amp;lt;code&amp;gt;&amp;lt;requires&amp;gt;&amp;lt;/code&amp;gt; block that imports two required modules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another example, which will only install on LibreELEC. This occurs because the addon will depend on an addon that only exists in LibreELEC. Hence, Kodi will refuse to install the addon in other platforms due to unmet dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;requires&amp;gt;&lt;br /&gt;
  &amp;lt;import addon=&amp;quot;os.librelec.tv&amp;quot; version=&amp;quot;2.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/requires&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;import&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element describes one dependency for an add-on, with two required attributes: &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;. There is also an optional attribute called, fittingly, &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your add-on relies on other third-party add-ons, Kodi will automatically install them as well, provided they are available on an existing add-on repository. If they aren&#039;t available on any existing repository, the user must install the other add-ons themselves. Note that you need to include any Python libraries you need directly in your add-on; these can&#039;t be loaded with an &amp;lt;code&amp;gt;&amp;lt;import&amp;gt;&amp;lt;/code&amp;gt; element, since Kodi wouldn&#039;t know what to do with them.&lt;br /&gt;
&lt;br /&gt;
=== addon attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; attribute specifies the id of the required add-on, e.g. &amp;lt;code&amp;gt;script.module.elementtree&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== version attribute ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; attribute specifies the minimum version of the required add-on to be installed.&lt;br /&gt;
&lt;br /&gt;
==== Dependency versions ====&lt;br /&gt;
&lt;br /&gt;
Each different Kodi version might require you to use a higher version of the &amp;lt;code&amp;gt;xbmc.*&amp;lt;/code&amp;gt; add-on dependencies to control on which version of Kodi the add-on can be installed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Current versions&lt;br /&gt;
! Kodi version !! xbmc.python !! xbmc.gui !! xbmc.json !! xbmc.metadata !! xbmc.addon&lt;br /&gt;
|-&lt;br /&gt;
| Dharma 10.1 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 1.0 || 2.11 || 2.0|| 1.0 || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| Eden 11.0 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt; || 2.0 || 3.0 || 4.0 || 1.0 || 11.0&lt;br /&gt;
|-&lt;br /&gt;
| Frodo 12.x &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Deprecated&amp;lt;/font&amp;gt;|| 2.1.0 || 4.0.0 || 6.0.0 || 2.1.0 || 12.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Gotham 13.x || 2.14.0 (ABI 2.1.0) || 5.0.1 || 6.6.0 (ABI 6.0.0) || 2.1.0 || 13.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Helix 14.x || 2.19.0 (ABI 2.1.0) || 5.3.0 || 6.20.0 (ABI 6.0.0) || 2.1.0 || 14.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Isengard 15.x || 2.20.0 (ABI 2.1.0) || 5.9.0 (ABI 5.3.0) || 6.25.1 (ABI 6.0.0) || 2.1.0 || 15.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Jarvis 16.x || 2.24.0 (ABI 2.1.0) || 5.10.0 || 6.32.4 (ABI 6.0.0) || 2.1.0 || 16.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Krypton 17.x || 2.25.0 (ABI 2.1.0) || 5.12.0 || 7.0.0 (ABI 6.0.0) || 2.1.0 || 17.0.0 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Leia 18.x || 2.26.0 (ABI 2.1.0) || 5.14.0 || 9.7.2 (ABI 6.0.0) || 2.1.0 || 17.9.910 (ABI 12.0.0)&lt;br /&gt;
|-&lt;br /&gt;
| Matrix 19.x || 3.0.0 (ABI 3.0.0) || 5.14.0 || 11.2.0 (ABI 6.0.0) || 2.1.0 || 18.9.701 (ABI 12.0.0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each Kodi version contain a certain backwards compatibility. For example add-ons made for Gotham 13.x can still work ion Jarvis 16.x. Do note that this might change in the future. The &#039;&#039;&#039;ABI&#039;&#039;&#039; version you see in the table above is the backwards compatibility version for which add-ons are still marked &amp;quot;working&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== optional attribute ===&lt;br /&gt;
&lt;br /&gt;
The dependency may be made optional by setting the &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; attribute to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. This will only install the dependency when the add-on actually needs it. Even if this dependency is missing, the add-on can still be installed.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;extension&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; element describes the technical aspects of this add-on. It will have at least a point attribute which will give the part of Kodi that the add-on extends. For instance, the &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; file for the Confluence skin extends the &amp;lt;code&amp;gt;xbmc.gui.skin&amp;lt;/code&amp;gt; part of xbmc. All available extension points are given below.&lt;br /&gt;
&lt;br /&gt;
The various extension points that Kodi provides are given in the list below.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Extension point&lt;br /&gt;
!Add-on Category&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Skinning|xbmc.gui.skin]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Skin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.webinterface&amp;lt;/code&amp;gt;&lt;br /&gt;
|Web interface&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Add-on repositories|xbmc.addon.repository]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[HOW-TO:_Automatically_start_addons_using_services|xbmc.service]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Services&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.albums&amp;lt;/code&amp;gt;&lt;br /&gt;
|Album information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.artists&amp;lt;/code&amp;gt;&lt;br /&gt;
|Artist information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.movies&amp;lt;/code&amp;gt;&lt;br /&gt;
|Movie information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.musicvideos&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music video information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.tvshows&amp;lt;/code&amp;gt;&lt;br /&gt;
|TV information&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.metadata.scraper.library&amp;lt;/code&amp;gt;&lt;br /&gt;
|&#039;&#039;None&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.ui.screensaver&amp;lt;/code&amp;gt;&lt;br /&gt;
|Screensaver&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.player.musicviz&amp;lt;/code&amp;gt;&lt;br /&gt;
|Visualization&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Plugin sources#What Kodi requires for your add-on|xbmc.python.pluginsource]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script sources#What Kodi requires for your add-on|xbmc.python.script]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio) / Picture Add-ons (image) / Program Add-ons (executable) / Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.weather&amp;lt;/code&amp;gt;&lt;br /&gt;
|Weather&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.subtitle.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Subtitle service module&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script lyrics#What Kodi requires for your add-on|xbmc.python.lyrics]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Lyrics&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;[[Script library#What Kodi requires for your add-on|xbmc.python.library]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|These don&#039;t show up in the addon browser and are purely as support for other scripts.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.python.module&amp;lt;/code&amp;gt;&lt;br /&gt;
|Provides an additional python library. mainly for use in script.module.* addons.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video Add-ons (video)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music Add-ons (audio)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xbmc.addon.image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Picture Add-ons (image)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.images&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional image files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kodi.resource.language&amp;lt;/code&amp;gt;&lt;br /&gt;
|Additional language files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add-ons that don&#039;t correspond to a specific add-on category can not be installed by users. These are usually supporting or shared add-ons that are installed automatically by the add-ons that require them.&lt;br /&gt;
&lt;br /&gt;
=== xbmc.python.pluginsource ===&lt;br /&gt;
{{See also|Plugin sources}}&lt;br /&gt;
&lt;br /&gt;
The most common extension point that will be used by plugin addon developers is &amp;lt;code&amp;gt;xbmc.python.pluginsource&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== library attribute ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; element has an extra attribute: &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt;. This is the name of the Python script (startup script) that will be run when the add-on is activated. This file must exist in the root of your add-on directory.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;provides&amp;gt; element ====&lt;br /&gt;
&lt;br /&gt;
The extension has an additional child element named &amp;lt;code&amp;gt;&amp;lt;provides&amp;gt;&amp;lt;/code&amp;gt;, which contains a whitespace separated list of &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;. This determines in what area (or context) of the Kodi system your addon will make itself visible in (please note that this applies only to plugin extension points):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
!Provides&lt;br /&gt;
!Appears in&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
|Pictures&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;audio&amp;lt;/code&amp;gt;&lt;br /&gt;
|Music&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt;&lt;br /&gt;
|Video&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|Programs&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;(blank)&#039;&#039;&lt;br /&gt;
|Not visible&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension point=&amp;quot;xbmc.python.pluginsource&amp;quot; library=&amp;quot;gpodderxbmc.py&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;provides&amp;gt;audio video&amp;lt;/provides&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xbmc.addon.metadata ===&lt;br /&gt;
&lt;br /&gt;
This special extension point &#039;&#039;must&#039;&#039; be provided by all add-ons, and is the way that your add-on is described to users of the Kodi add-on manager.&lt;br /&gt;
&lt;br /&gt;
==== Available elements ====&lt;br /&gt;
&lt;br /&gt;
There are several elements that this should contain. Most of these elements are required (except the broken tag). However, in case the elements do not apply (e.g. language, website, email) they can be omitted from the addon.xml file. Language specific elements must always be present in English as a minimum.&lt;br /&gt;
&lt;br /&gt;
Many of these elements can be translated into multiple languages and should be added once for each supported language. The &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute should contain a [https://en.wikipedia.org/wiki/Locale_(computer_software) locale identifier]. If omitted, it defaults to en_GB. (Note: Kodi v14 and older uses ISO-639 code. See [[List of language codes (ISO-639:1988)]]).&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;summary&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;summary&amp;gt;&amp;lt;/code&amp;gt; elements provide a short summary of what the add-on does. This should be a single sentence. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script.&amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;description&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; elements provide a more detailed summary of what the add-on does. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Hello World script provides some basic examples on how to create your first script&lt;br /&gt;
 and hopefully will increase the number of Kodi users to start creating their own addons.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;disclaimer&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
One or more &amp;lt;code&amp;gt;&amp;lt;disclaimer&amp;gt;&amp;lt;/code&amp;gt; elements that indicate what (if any) things the user should know about the add-on. There is no need to have a disclaimer if you don&#039;t want one, though if something requires settings, or only works in a particular country then you may want to state this here. It may be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Feel free to use this script. For information visit the wiki.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;news&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Used in Kodi v17 Krypton and later only. Older versions are forward compatible.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;news&amp;gt;&amp;lt;/code&amp;gt; element should contains a simple description of the major changes made to the add-on (new functionality, big fixes, etc). This is displayed in the Kodi addon installation/update system. (In the author&#039;s opinion, too many add-ons skip this piece of information, making it difficult for users to determine whether a particular problem that they may have been having has been fixed or not.)&lt;br /&gt;
Please keep it short (it&#039;s limited to 1500 characters), you might want to only include the changes for the last version here.&lt;br /&gt;
&lt;br /&gt;
Here is an example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;news&amp;gt;v0.1.2  (2014-1-15)&lt;br /&gt;
- Added notification for Ubuntu users checking through apt command&amp;lt;/news&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;platform&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt; tag specifies which platforms (operating systems, hardware, architecture) this add-on runs on. Many add-ons will run on all platforms, so &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; is an option. If the platform tag is missing, we assume the add-on runs on all platforms. A combination of these is also possible. Currently available options are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;linux&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx32&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;osx-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ios-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windx&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windows-x86_64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;windowsstore&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-armv7&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-aarch64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;android-i686&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;language&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;language&amp;gt;&amp;lt;/code&amp;gt; elements indicate the language(s) of the &#039;&#039;content&#039;&#039; provided by your add-on. It applies to plugins, scripts, scrapers etc. This allows browsing the add-on list by language. When there is no specific language provided in your content, omit it from the addon.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;language&amp;gt;en de fr&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;license&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; element indicates what license is used for this add-on. In general, the [https://spdx.org/licenses/ SPDX identifier] for the license is advised when compared to the full license name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt; &amp;lt;!-- SPDX identifier --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;GNU GENERAL PUBLIC LICENSE. Version 2, June 1991&amp;lt;/license&amp;gt; &amp;lt;!-- Full license name --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;forum&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;forum&amp;gt;&amp;lt;/code&amp;gt; element provides the forum thread URL for this specific add-on. Leave this blank if there is no forum thread.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;forum&amp;gt;http://www.myaddonwebsite.com/forum.php?thread=12345&amp;lt;/forum&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;website&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;website&amp;gt;&amp;lt;/code&amp;gt; element provides the website URL for this specific add-on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;website&amp;gt;http://www.myaddonwebsite.com/&amp;lt;/website&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element provides the URL for the source code for this specific add-on.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;http://github.com/someone/myaddon&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;email&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;email&amp;gt;&amp;lt;/code&amp;gt; element provides the email address of the author if he wishes to do so for this specific add-on. Here are two examples of how you can make it look (the second one it harder for spambots to use). This can be left blank if you do not want to make your email address public.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;email&amp;gt;foo@bar.com&amp;lt;/email&amp;gt;&lt;br /&gt;
    or&lt;br /&gt;
&amp;lt;email&amp;gt;foo at bar dot com&amp;lt;/email&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;broken&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;broken&amp;gt;&amp;lt;/code&amp;gt; tag will mark the add-on as broken in the Kodi repo and provide the reason why. A dialog will be presented to every user that has the addon installed, so please try to be specific about the broken reason. Also, the broken tag presupposes that a version bump has been made to the addon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;broken&amp;gt;deprecated&amp;lt;/broken&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;assets&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v17 Krypton and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;assets&amp;gt;&amp;lt;/code&amp;gt; element is a manifest that describes the various assets the add-on provides and where they are located. Supported sub-elements are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;icon&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#icon.png]] - if an icon.png file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;fanart&amp;gt;&amp;lt;/code&amp;gt; See [[Add-on_structure#fanart.jpg]] - if a fanart.jpg file exists it must be listed here (mandatory since Kodi v17 Krypton)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;screenshot&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;banner&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;clearlogo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If some elements are empty or not specified, it will be treated as non-existing/not provided. From all the above items, only icon and fanart are mandatory for addons since Kodi v17 Krypton and later.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;assets&amp;gt;&lt;br /&gt;
    &amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
    &amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
    &amp;lt;banner&amp;gt;resources/banner.jpg&amp;lt;/banner&amp;gt;&lt;br /&gt;
    &amp;lt;clearlogo&amp;gt;resources/clearlogo.png&amp;lt;/clearlogo&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
&amp;lt;/assets&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above example definition, the files must be placed in the &amp;lt;code&amp;gt;resources&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;reuselanguageinvoker&amp;gt; =====&lt;br /&gt;
{{note|Kodi v18 Leia and later.}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;reuselanguageinvoker&amp;gt;&amp;lt;/code&amp;gt; element is a feature introduced with Kodi 18.0 that changes the way the python invoker works in Kodi - trying to reuse the invoker instances as much as possible. As a result, the addon performance is greatly improved. However, note that for the element to work some changes may be required in your addon. Namely, since the invoker is reused, make sure &amp;lt;code&amp;gt;sys.argv&amp;lt;/code&amp;gt; is always passed to your entrypoint and propagated throughout your codebase. Do not store it as a class variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reuselanguageinvoker&amp;gt;true&amp;lt;/reuselanguageinvoker&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is advised to set this element to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; while developing the addon, making it only &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for the production version (and after testing).&lt;br /&gt;
&lt;br /&gt;
== Skin specific elements ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|  &#039;&#039;&#039;effectslowdown&#039;&#039;&#039;&lt;br /&gt;
|  A multiplier that is applied to all &amp;lt;animation&amp;gt; effect lengths in the skin. Useful to slow down all animations globally so that you can better configure timings and see interactions between animating controls.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;debugging&#039;&#039;&#039;&lt;br /&gt;
|  When set to true, it&#039;ll display onscreen debug information (xml filename, mouse position and focused control type and name) in the skin.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;res&#039;&#039;&#039;&lt;br /&gt;
|  Support for arbitrary skin resolutions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How window xml files are found ===&lt;br /&gt;
&lt;br /&gt;
Kodi can run in many differing resolutions, and a skin should try and cater to all these resolutions. The easiest way is to develop for one specific resolution and make sure that all controls contain &amp;lt;width&amp;gt; and &amp;lt;height&amp;gt; tags. That way, Kodi can scale the controls to the new screen resolution.&lt;br /&gt;
&lt;br /&gt;
However, you may choose to develop alternative window xml files for differing resolutions (such as for HDTV resolutions, or for widescreen versus 4x3 resolutions).&lt;br /&gt;
&lt;br /&gt;
The order that Kodi looks for it&#039;s skin files are as follows:&lt;br /&gt;
&lt;br /&gt;
# It first looks in the current screenmode folder (one of 1080i, 720p, NTSC16x9, NTSC, PAL16x9 or PAL)&lt;br /&gt;
# If the current screenmode is 1080i and there&#039;s no 1080i folder, it then looks in the 720p folder.&lt;br /&gt;
# Finally, it looks in the &#039;&#039;&#039;res&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
This allows you to just put any window files that do not require special treatment for 16x9 resolutions etc. in the &amp;lt;defaultresolution&amp;gt; folder, preventing needless repetition.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== addon.xml for skins ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
﻿&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;skin.estuary&amp;quot; version=&amp;quot;2.0.22&amp;quot; name=&amp;quot;Estuary&amp;quot; provider-name=&amp;quot;phil65, Ichabod Fletchman&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;requires&amp;gt;&lt;br /&gt;
		&amp;lt;import addon=&amp;quot;xbmc.gui&amp;quot; version=&amp;quot;5.14.0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/requires&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.gui.skin&amp;quot; debugging=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1440&amp;quot; aspect=&amp;quot;4:3&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1280&amp;quot; aspect=&amp;quot;3:2&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1200&amp;quot; aspect=&amp;quot;16:10&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2040&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;17:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;1920&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;16:9&amp;quot; default=&amp;quot;true&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2560&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;21:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2338&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;19.5:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;res width=&amp;quot;2160&amp;quot; height=&amp;quot;1080&amp;quot; aspect=&amp;quot;18:9&amp;quot; default=&amp;quot;false&amp;quot; folder=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
	&amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary skin by phil65. (Kodi&#039;s default skin)&amp;lt;/summary&amp;gt;&lt;br /&gt;
		&amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi 17.0 and above. It attempts to be easy for first time Kodi users to understand and use.&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;Estuary is the default skin for Kodi, removing it may cause issues&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
		&amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
		&amp;lt;license&amp;gt;CC-BY-4.0, GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
		&amp;lt;forum&amp;gt;http://forum.kodi.tv/&amp;lt;/forum&amp;gt;&lt;br /&gt;
		&amp;lt;source&amp;gt;https://github.com/xbmc/skin.estuary/&amp;lt;/source&amp;gt;&lt;br /&gt;
		&amp;lt;assets&amp;gt;&lt;br /&gt;
			&amp;lt;icon&amp;gt;resources/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
			&amp;lt;fanart&amp;gt;resources/fanart.jpg&amp;lt;/fanart&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-01.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-02.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-03.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-04.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-05.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-06.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-07.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
			&amp;lt;screenshot&amp;gt;resources/screenshot-08.jpg&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
		&amp;lt;/assets&amp;gt;&lt;br /&gt;
	&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
One thing to note is that &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;all tag names are lower case.&amp;lt;/font&amp;gt; XML tag names are case sensitive!&lt;br /&gt;
&lt;br /&gt;
== addon.xml for scripts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon&lt;br /&gt;
    id=&amp;quot;script.artwork.downloader&amp;quot;&lt;br /&gt;
    name=&amp;quot;Artwork Downloader&amp;quot;&lt;br /&gt;
    version=&amp;quot;12.0.12&amp;quot;&lt;br /&gt;
    provider-name=&amp;quot;Martijn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot;                 version=&amp;quot;2.25.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.elementtree&amp;quot;   version=&amp;quot;1.2.7&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.module.simplejson&amp;quot;    version=&amp;quot;2.0.10&amp;quot; optional=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;script.common.plugin.cache&amp;quot;  version=&amp;quot;1.3.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.python.script&amp;quot;         library=&amp;quot;default.py&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;provides&amp;gt;executable&amp;lt;/provides&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads Artwork for TV shows, Movies and Musicvideos in your library&amp;lt;/summary&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_GB&amp;quot;&amp;gt;Downloads all available artwork for TV shows, Movies and Musicvideos in your library. Check the options for supported artwork[CR]Artwork sources:[CR]www.fanart.tv[CR]www.thetvdb.com[CR]www.themoviedb.org[CR]Remark:[CR]Check your skin to see what type of artwork is supported![CR]Each TV Show/Movie must have its own folder![CR]Skin integration:[CR]See readme file&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;disclaimer lang=&amp;quot;en_GB&amp;quot;&amp;gt;For bugs, requests or general questions visit the Artwork Downloader thread on the Kodi forum.&amp;lt;/disclaimer&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;license&amp;gt;GPL-2.0-or-later&amp;lt;/license&amp;gt;&lt;br /&gt;
    &amp;lt;forum&amp;gt;...&amp;lt;/forum&amp;gt;&lt;br /&gt;
    &amp;lt;website&amp;gt;...&amp;lt;/website&amp;gt;&lt;br /&gt;
    &amp;lt;email&amp;gt;...&amp;lt;/email&amp;gt;&lt;br /&gt;
    &amp;lt;source&amp;gt;...&amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;news&amp;gt;&lt;br /&gt;
      v12.0.12:&lt;br /&gt;
        - Changes ....&lt;br /&gt;
    &amp;lt;/news&amp;gt;&lt;br /&gt;
    &amp;lt;assets&amp;gt;&lt;br /&gt;
        &amp;lt;icon&amp;gt;resources/images/icon.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
        &amp;lt;fanart&amp;gt;resources/images/fanart.png&amp;lt;/fanart&amp;gt;&lt;br /&gt;
        &amp;lt;screenshot&amp;gt;resources/images/screenshot.png&amp;lt;/screenshot&amp;gt;&lt;br /&gt;
    &amp;lt;/assets&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common errors ===&lt;br /&gt;
&lt;br /&gt;
If you are getting errors when installing your Kodi addon, then you may have errors in your addon.xml file, which could be any of the following:&lt;br /&gt;
&lt;br /&gt;
# Invalid characters - does any of your description text, addon name, etc. have any of the following? !, ?, -, etc&lt;br /&gt;
# Too large description can sometimes cause issues&lt;br /&gt;
# You may have an opening tag but not a closing tag further in the file e.g. &amp;lt;description&amp;gt; but not later on &amp;lt;/description&amp;gt;&lt;br /&gt;
# If you have directly updated your code and are still finding errors which you know you have fixed, it&#039;s possible your cache is still holding the previous version. Try clearing contents of the following folders (or if this fails, reboot your Kodi device):&lt;br /&gt;
* .kodi/addons/temp&lt;br /&gt;
* .kodi/temp/temp&lt;br /&gt;
* .kodi/temp/archive_cache&lt;br /&gt;
&lt;br /&gt;
= Schema Definition =&lt;br /&gt;
&lt;br /&gt;
The XML schema definition for &amp;lt;code&amp;gt;addon.xml&amp;lt;/code&amp;gt; is located [https://github.com/xbmc/xbmc/blob/master/addons/xbmc.addon/metadata.xsd here].&lt;br /&gt;
&lt;br /&gt;
{{Leia updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Enen92</name></author>
	</entry>
</feed>