-
Notifications
You must be signed in to change notification settings - Fork 16
Skin Tools and Helpers
SkinVariables allows for storing a history of search terms in a Skin.String or Window.Property
Add Search Term
RunScript(script.skinvariables,add_skinstring_history=SKINSTRING,value=SEARCHTERM)
Replace SKINSTRING with the name of the Skin.String(SKINSTRING)
to be used.
Replace SEARCHTERM with the value to put into the search history.
If a term already exists in the history, it is moved to the first position.
Optional Params
Param | Description |
---|---|
use_window_prop |
Use a Window.Property() instead of a Skin.String() . Useful if you do not want the search history to persist after closing Kodi. |
window_id=ID |
Specify the ID of the Window(ID).Property() when use_window_prop is enabled. By default the current window will be used. |
toggle |
Remove the search term if it exists instead of moving to first position. Useful to create menus where multiple terms are toggled. |
separator=' / ' |
Specify the separator to be used for the search history. By default a pipe | character is used to avoid conflicts with Kodi's default / slash character |
📚 To retrieve the search history in a container list, see the string splitter method below.
Splits a string into a list of ListItems where ListItem.Label contains the split term. The infolabel=
can be any infolabel that would go inside $INFO[]
plugin://script.skinvariables/?info=get_split_string&infolabel=Skin.String(SKINSTRING)
Optional Params
Param | Description |
---|---|
&separator=' / ' |
Specify a different separator than the default | pipe symbol. Useful if you want to split an infolabel from a listitem such as ListItem.Genre
|
&values=TEXT |
Alternative to infolabel= if you want to specify text directly. Useful if you want to use $VAR[] instead of an infolabel. |
💡 Example: Split Genres into a List
plugin://script.skinvariables/?info=get_split_string&infolabel=ListItem.Genre&separator=' / '
Gets all unique values for the specified container IDs as a List of ListItems. Multiple container IDs can be specified by separating with a +
plugin://script.skinvariables/?info=get_container_labels&containers=CONTAINERID&infolabel=INFOLABEL
💡 Example: List all studios for all items in containers 5001 and 5002
plugin://script.skinvariables/?info=get_container_labels&containers=5001+5002&infolabel=ListItem.Studio
📚 Optionally the container can also be filtered using filter_value and exclude_value params. Useful if you want to provide an edit control to narrow down results.
Sets the audio or subtitle stream for the currently playing video to X
where X is the number of the stream.
Runscript(set_player_subtitle=X)
Runscript(set_player_audiostream=X)
Gets a list of subtitles or audio streams for the currently playing video.
plugin://script.skinvariables/?info=get_player_streams&stream_type=subtitle
plugin://script.skinvariables/?info=get_player_streams&stream_type=audio
Inputs the TEXT into the edit control at EDITID and then returns focus to RETURNID after the specified wait. The setfocus params are optional and can be removed if you want focus to stay on the edit control.
RunScript(script.skinvariables,set_editcontrol=EDITID,text=TEXT,setfocus=RETURNID,setfocus_wait=00:00)
RunScript(script.skinvariables,set_dbid_tag=TAGNAME,dbtype=DBTYPE,dbid=DBID)
Create a tag called TAGNAME for the library item of the specified DBID and DBTYPE. Only works for dbtype=movie
and dbtype=tvshow
Adds the specified numbers together and outputs to ListItem.Label
plugin://script.skinvariables/?info=get_number_sum&expression=5+12+7
💡 Example: Sum of Container(5001).NumItems
and Container(5002).NumItems
plugin://script.skinvariables/?info=get_number_sum&expression=0$INFO[Container(5001).NumItems,+,]$INFO[Container(5002).NumItems,+,]
📚 To subtract numbers use +-
to add a negative number.
💡 Example: Subtract Container(5002).NumItems
from Container(5001).NumItems
plugin://script.skinvariables/?info=get_number_sum&expression=0$INFO[Container(5001).NumItems,+,]$INFO[Container(5002).NumItems,+-,]
Encodes the string using urlquote_plus routine and optionally saves to window property.
<content>plugin://script.skinvariables/?info=get_encoded_string&window_prop=MyEncodedString&window_id=Home&&Umläuts,‡†Special Characters</content>
📝 The params window_prop
and window_id
are optional.
📚 Multiple strings can be specified using double ampersand &&
with each string added to its own listitem and window property:
$INFO[Container(ID).ListItemAbsolute(0).Label]
$INFO[Container(ID).ListItemAbsolute(1).Label]
$INFO[Window(WINDOW_ID).Property(WINDOW_PROP.0)]
$INFO[Window(WINDOW_ID).Property(WINDOW_PROP.1)]
📚 Use RunPlugin if onclick is preferred
<onclick>RunPlugin("plugin://script.skinvariables/?info=get_encoded_string&window_prop=MyEncodedString&window_id=Home&&Umläuts,‡†Special Characters")</onclick>
Checks if file exists and optionally saves path to window property if it does.
<content>plugin://script.skinvariables/?info=get_file_exists&window_prop=MyFile&window_id=Home&&special://skin/LICENSE.txt</content>
📝 The params window_prop
and window_id
are optional.
📚 Multiple paths can be specified using double ampersand &&
with each path added to its own listitem and property. The listitem folderpath and window property are filled if the path exists; otherwise they are cleared.
$INFO[Container(ID).ListItemAbsolute(0).FolderPath]
$INFO[Container(ID).ListItemAbsolute(1).FolderPath]
$INFO[Window(WINDOW_ID).Property(WINDOW_PROP.0)]
$INFO[Window(WINDOW_ID).Property(WINDOW_PROP.1)]
📚 Use RunPlugin if onclick is preferred
<onclick>RunPlugin("plugin://script.skinvariables/?info=get_file_exists&window_prop=MyFile&window_id=Home&&special://skin/LICENSE.txt")</onclick>
Retrieve additional details about an item from the library via JSON RPC. Values are stored in Container(ID).ListItem.Property(PROPERTYNAME)
plugin://script.skinvariables/?info=get_dbitem_movieset_details&dbid=DBID
plugin://script.skinvariables/?info=get_dbitem_movie_details&dbid=DBID
plugin://script.skinvariables/?info=get_dbitem_tvshow_details&dbid=DBID
plugin://script.skinvariables/?info=get_dbitem_season_details&dbid=DBID
plugin://script.skinvariables/?info=get_dbitem_episode_details&dbid=DBID
plugin://script.skinvariables/?info=get_dbitem_addon_details&dbid=DBID
💡 Example: Get more details about a Movie
plugin://script.skinvariables/?info=get_dbitem_movie_details&dbid=$INFO[Container(50).ListItem.DBID]
📚 Details retrieved for each dbtype
DBType | Details |
---|---|
movie |
title plot genre director writer studio cast country fanart thumbnail tag art ratings
|
tvshow |
title plot genre studio cast fanart thumbnail tag art ratings runtime
|
season |
title plot fanart thumbnail tvshowid art
|
episode |
title plot writer director cast fanart thumbnail tvshowid art seasonid ratings
|
set |
title plot playcount fanart thumbnail art
|
addon |
name version summary description path author thumbnail disclaimer fanart dependencies broken extrainfo rating enabled installed deprecated
|
📚 Details are placed in properties
$INFO[Container(ID).ListItem.Property(plot)]
$INFO[Container(ID).ListItem.Property(title)]
📚 Details with child attributes are referenced with a dot separator:
$INFO[Container(ID).ListItem.Property(art.poster)]
$INFO[Container(ID).ListItem.Property(ratings.imdb.rating)]
$INFO[Container(ID).ListItem.Property(ratings.imdb.votes)]
📚 Details which can have multiple values are referenced by index:
$INFO[Container(ID).ListItem.Property(genre.0)]
$INFO[Container(ID).ListItem.Property(genre.1)]
$INFO[Container(ID).ListItem.Property(genre.count)]
$INFO[Container(ID).ListItem.Property(director.0)]
$INFO[Container(ID).ListItem.Property(director.1)]
$INFO[Container(ID).ListItem.Property(director.count)]
📚 Details which can have multiple values with child attributes are referenced by index and dot notation:
$INFO[Container(ID).ListItem.Property(cast.0.name)]
$INFO[Container(ID).ListItem.Property(cast.0.role)]
$INFO[Container(ID).ListItem.Property(cast.0.thumbnail)]
$INFO[Container(ID).ListItem.Property(cast.1.name)]
$INFO[Container(ID).ListItem.Property(cast.1.role)]
$INFO[Container(ID).ListItem.Property(cast.1.thumbnail)]
$INFO[Container(ID).ListItem.Property(cast.count)]
📚 Sets also retrieve subdetails about each movieid inside the set
$INFO[Container(ID).ListItem.Property(movies.count)]
$INFO[Container(ID).ListItem.Property(movies.1.label)]
$INFO[Container(ID).ListItem.Property(movies.1.item.plot)]
$INFO[Container(ID).ListItem.Property(movies.1.item.art.fanart)]
$INFO[Container(ID).ListItem.Property(movies.1.item.ratings.imdb.rating)]
$INFO[Container(ID).ListItem.Property(movies.1.item.genre.0)]
$INFO[Container(ID).ListItem.Property(movies.1.item.cast.0.name)]