Kodi - add-ons/plugin.video.vrt.nu GitHub Wiki

Kodi development

Our vision on improving this project is that we want to fix/improve upstream to create a better add-on. In this light we have contributed to other projects, like inputstreamhelper, inputstream.adaptive, routing, service.upnext and skin.estuary.

But we are also bound to limitations in Kodi or Kodi's add-on interface that we would like to see improved.

Kodi Plugin API shortcomings

General

  • We would like to register add-on calls to the autostart selection menu so users can boot into add-on functionality (See this comment and Automation)
  • Support for non-blocking spaces ( ) in Kodi formatted text (to avoid splitting multi-word strings)
  • Current add-on design is old/broken, restarting the script for every menu-call is not very efficient
    • uselanguageinvoker is mostly a hack
  • Kodi does not have a solution for localized day-of-the-week or month strings
    • JEOS (Just Enough OS) solutions, like LibreELEC, do not offer full localization so this needs to come from Kodi #224
  • Emoji support would be nice for e.g. having a lock sign for Geo-blocked content
  • Changing a view back to Sort by Default doesn't take effect #382 xbmc#16370
  • It would be nice if skins could expose colouring information to add-ons so that
    • A colour for emphasizing information in text is possible
    • We use colours to emphasize: availability, geo-locked, today's EPG, search keyword in plot
  • Add support for [url] bb-code, this could be formatted in Kodi skins, and become a real link in the web interface/Smartphone app
  • Add support for listing separator in virtual directories (a separator ListItem)
  • Add support for unplayable LitsItems (i.e. don't work and are grayed-out automatically as per theme style)

Video-on-Demand / Live TV

Ideally Video-on-Demand content (movies, tvshows) and live TV or live Radio streams are listed in Kodi's Movies, TV shows and TV/Radio listings. And ideally we have different content views, and ListItems for live-tv and video-on-demand content.

Metadata / InfoLabels

Currently the metadata/infolabel support for add-ons was not designed with Video-on-Demand or Live TV in mind. And because of this add-ons have to add this information to the plot.

  • For Video-on-Demand listitems we lack properties for
    • Broadcast date/time vs Added date/time (when it was broadcasted, and when it became available, often the same)
    • Availability / Disposal (due-by) information (to indicate when content will be removed)
    • Geo-blocked (to indicate which content may not work outside of Europe / country)
    • Channel name (or brand name) this content is associated with
    • Support for custom ids internal to content provider (id, publicationid, videoid, whatsonid)
    • Permalink information (short URL going straight to content online)
    • Mark programs/tvshows as being tracked/followed
    • Mark episodes as 'to watch later'
  • For Live TV listitems we lack properties for
    • Channel name
    • EPG information (playing now, playing next)

Currently we have to reuse other InfoLabels, or abuse the plot or ListItem label to make this information available.

  • we add availability/geo-blocked/permalink information to the "plot"
  • we add broadcast information in the "premiered" infolabel
  • we add channel information in the "studio" infolabel
  • we add a ° marker to the label to indicate when a tvshow/episode is being followed
  • we add short EPG information to the plot of Live TV channels

But this doesn't make it possible to e.g. sort by availability date, or disposal date.

But we also need to integrate with existing context menus for "Mark as watched" and "Mark as unwatched", or "Reset resume position". xbmc#17372

Add-on API

  • Impossible to set the menu list sort order default (ascending/descending)
  • Not possible to set the cursor to a specific menu item by default (e.g. to "Today" in TV guide)
  • Fanart does not work on ".." (Parent directory) while visually that looks better
    • Would be nice if it would be possible to set a default fanart, thumbnail or icon for the container which is inherited
  • The setContent interface is confusing and inadequate
  • There is no way to enforce bandwidth-limitation from an add-on (e.g. Setting network.bandwidth on a ListItem)
    • This only works for InputStream Adaptive (inputstream.adaptive.max_bandwidth)
  • It would be nice if translation would work using msgid (string) instead of msgctxt (number)
    • Doing it like that would make our source code more readable as it would not be littered with numbers
  • Make help-entries work in add-on Settings pages, like how it works for Kodi Settings page
  • When ordering TV shows by Name or by Episode it should be showing season+episode, like in local listings #xbmc/16371
    • It should also include the duration in this listing
  • There is no interface to update resume position or playcount value for plugin:// sources #568

Documentation

  • A lot of the documentation is incomplete
    • e.g. xbmcaddon getSettings() does not specify what happens if a setting is nonexisting (hint: it returns an empty string)
  • The documentation ought to be hosted in a repository so it's easy to fix and update