Add-on repositories: Difference between revisions

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


== Repository Add-on ==
== Repository Add-on ==
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you'll need to [[Add-ons for Kodi (Developement)|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 and icons required for an icon, you'll need an 'extension' block as follows:
Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you'll need to [[Add-ons for Kodi (Developement)|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'll need an 'extension' block as follows:
<syntaxhighlight lang="xml" enclose="div">
<syntaxhighlight lang="xml" enclose="div">
   <extension point="xbmc.addon.repository"
   <extension point="xbmc.addon.repository" name="My development repository">
              name="Official Kodi.tv Add-on Repository">
     <info>http://example.com/addons/addons.xml</info>
     <info compressed="true">http://mirrors.kodi.tv/addons/dharma-pre/addons.xml</info>
     <checksum>http://example.com/addons/addons.xml.md5</checksum>
     <checksum>http://mirrors.kodi.tv/addons/dharma-pre/addons.xml.md5</checksum>
     <datadir>http://example.com/addons/</datadir>
     <datadir zip="true">http://mirrors.kodi.tv/addons/dharma-pre</datadir>
   </extension>
   </extension>
</syntaxhighlight>
</syntaxhighlight>


=== info ===
=== info ===
URL to the main xml file, compressed="true" parameter specifies whether or not the xml should be fetched with compression (gzip) enabled.
URL to the main xml file.
 
When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it ''may'' be pre-gzipped, in which case it must have a .gz ending ending.
 
Note: Kodi v15 and older does not support pre-gzipped files and must specify the attribute compressed="true" to request gzip content encoding.


=== checksum ===
=== checksum ===
An MD5 checksum file of the main xml file. If present, Kodi verifies the addons.xml file against this MD5. This is the mechanism that Kodi uses to decide whether we need to fetch the full XML file to verify whether updates are required. If the MD5 file has changed we fetch the full info file. If not, we don't. Thus, in order for automatic updates to work, you must ensure that you have the checksum file in place.
A text file that identifies the content of <code><info></code>.
 
Before fetching the full info file, Kodi will fetch the "checksum" and compare it to the previously fetched one. If changed, the info file will be fetched.
 
Note: for historical reason it is called "checksum", but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.


=== datadir ===
=== datadir ===
URL to the root directory that contains the addons (i.e. the directory holding the addon.id subdirectories). If the zip attribute is set to true, then Kodi downloads addons via /datadir/addon.id/addon.id-x.y.z.zip. If zip 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).
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.
If the <code>zip</code> 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).
 
In addition, each add-on sub-directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the [[Addon.xml#.3Cassets.3E]] element.


== See also ==
== See also ==

Revision as of 09:41, 21 August 2016

Home icon grey.png   ▶ Development ▶ Add-on development ▶ Add-on repositories

Beginning with Dharma, 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 "main" repository that is the default, and additional ones may be added by the user. The Official Add-on Repository is included with Kodi by default and is maintained by the Kodi team.

After you have created your repository, consider adding it to the 3rd party add-on repositories list.

Ingredients for a Repository

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:

  • An HTTP server. Any should work.
  • Some add-ons.
  • A master xml file. This file contains metadata about all available add-ons.
  • A checksum of the above file.
  • A repository add-on for distribution. This allows you to share your repository with others.

Directory Structure

 addon.id
    addon.id-x.y.z.zip
    changelog-x.y.z.txt
    fanart.jpg
    icon.png
 addon2.id
    addon2.id-x.y.z.zip
    changelog-x.y.z.txt
    fanart.jpg
    icon.png
  • addon.id should be the same as the addon's id, which is expected to be unique.
  • x.y.z is the addon's version, the same should be listed in its version attribute.

Addons.xml

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 <addons> tag. See below for the basic structure:

<?xml version="1.0" encoding="UTF-8"?>
<addons>
  <addon
    id="sample.addon1"
    ...
  </addon>

  <addon
    id="sample.addon2"
    ...
  </addon>
</addons>

Repository Add-on

Repositories are distributed just like any other add-on. In order for you to browse one in Kodi, you'll need to 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'll need an 'extension' block as follows:

  <extension point="xbmc.addon.repository" name="My development repository">
    <info>http://example.com/addons/addons.xml</info>
    <checksum>http://example.com/addons/addons.xml.md5</checksum>
    <datadir>http://example.com/addons/</datadir>
  </extension>

info

URL to the main xml file.

When fetching the file, Kodi will request a gzip encoded response. If the server for some reason does not support gzip encoding, it may be pre-gzipped, in which case it must have a .gz ending ending.

Note: Kodi v15 and older does not support pre-gzipped files and must specify the attribute compressed="true" to request gzip content encoding.

checksum

A text file that identifies the content of <info>.

Before fetching the full info file, Kodi will fetch the "checksum" and compare it to the previously fetched one. If changed, the info file will be fetched.

Note: for historical reason it is called "checksum", but it is not verified and not required to be a checksum as long as it is changed whenever addons.xml has changed.

datadir

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. If the zip 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).

In addition, each add-on sub-directory should contain icon.png, fanart.jpg, changelog-x.y.z.txt and all files from the Addon.xml#.3Cassets.3E element.

See also

Development: