https://kodi.wiki/api.php?action=feedcontributions&user=Uixtung&feedformat=atomOfficial Kodi Wiki - User contributions [en]2024-03-29T06:16:37ZUser contributionsMediaWiki 1.39.6https://kodi.wiki/index.php?title=Keyboard_controls&diff=245972Keyboard controls2023-06-14T17:13:01Z<p>Uixtung: </p>
<hr />
<div>{{mininav|[[Remote controls]]}}<br />
<br />
<section begin=intro />Kodi can be controlled with a keyboard using hotkeys. This page tells you what hotkey commands can be used, and where they can be used.<section end=intro /><br />
<br />
== Default keyboard controls ==<br />
The default [[keymap]] can be found at: {{Github_link|[https://github.com/xbmc/xbmc/blob/master/system/keymaps/keyboard.xml Keyboard.xml Master]}}<br />
<br />
{| class="wikitable sortable"<br />
! width="7%"| Key<br />
! width="31%"| Global<br />
! width="31%"| Video playback<br />
! width="31%"| Music visualisation<br />
|-<br />
! {{keypress|0}} (zero)<br />
|<br />
| Go between the two last channels ''([[live TV]] channel)'' '''OR''' Go to "now" on EPG/TV guide.<br />
|<br />
|-<br />
! {{keypress|A}}<br />
| <br />
| Audio delay control<br />
| <br />
|-<br />
! {{keypress|B}}<br />
| Live TV: Schedule recording timers<br />
| Live TV: Schedule recording timers<br />
| <br />
|- <br />
! {{keypress|C}}<br />
| Contextual menu<br />
| Playlist<br />
| <br />
|-<br />
! {{keypress|D}}<br />
| Move item down ''([[Playlists|Playlist editor]] & [[Favourites|Favorites window]])''<br />
| <br />
| <br />
|- <br />
! {{keypress|Ctrl|Shift|D}}<br />
| [[Log_file|Toggle debug logging]]<br />
| [[Log_file|Toggle debug logging]]<br />
| [[Log_file|Toggle debug logging]]<br />
|-<br />
! {{keypress|E}}<br />
| Live TV EPG/TV guide<br />
| Live TV EPG/TV guide<br />
| <br />
|- <br />
! {{keypress|F}}<br />
| Fast forward<br />
| Fast forward<br />
| Fast forward<br />
<!--<br />
|-<br />
! {{keypress|G}}<br />
| <br />
| <br />
| --><br />
|-<br />
! {{keypress|H}}<br />
| Live TV channels window<br />
| Live TV channels window<br />
| <br />
|- <br />
! {{keypress|I}}<br />
| [[Video_playback#Information|Information Page]]<br />
| [[Video_playback#Information|Information Page]]<br />
| [[Video_playback#Information|Information Page]]<br />
|-<br />
! {{keypress|J}}<br />
| Live TV: Radio channels window<br />
| Live TV: Radio channels window<br />
| <br />
|-<br />
! {{keypress|K}}<br />
| Live TV recordings window<br />
| Live TV recordings window<br />
| <br />
|-<br />
! {{keypress|L}}<br />
|<br />
| Next subtitle<br />
| Lock preset<br />
|- <br />
! {{keypress|M}}<br />
| <br />
* "Menu" (sidebar menu on the default skin)<br />
* Move ''([[File manager]])''<br />
| Player controls (OSD)<br />
| Player controls (OSD)<br />
|-<br />
! {{keypress|N}}<br />
| <br />
| <br />
| Current playlist window<br />
|-<br />
! {{keypress|O}}<br />
| <br />
| '''[[Player_process_info#Player_Process_Info|Player process info]]'''<br />
| <br />
<br />
|-<br />
! {{keypress|alt|O}}<br />
| <br />
| '''[[Player_process_info#Video_Debug_Info|Video debug info]]'''<br />
| <br />
<br />
|-<br />
! {{keypress|Ctrl|Shift|O}}<br />
| <br />
| '''[[Player_process_info#Player_Debug_Info|Player debug info]]'''<br />
| <br />
|- <br />
! {{keypress|P}}<br />
| Play selected item. If media is paused in the background, {{keypress|P}} will resume playback.<br />
| Play<br />
| Visualisation preset list<br />
|-<br />
!{{keypress|alt|left}} or {{keypress|right}}<br />
|<br />
| Decrease/Increase Playback Speed - (0.8x - 1.5x speed)<br />
{{small|Only works when '''''[[Settings/Player/Videos#Sync_playback_to_display|Sync Playback to Display]]''''' is enabled which will Disable Audio Passthrough}}<br />
|<br />
|-<br />
! {{keypress|Q}}<br />
| Queue<br />
| <br />
| <br />
|-<br />
! {{keypress|R}}<br />
| <br />
* Rewind<br />
* Rename ''([[File manager]])''<br />
| Rewind<br />
| Rewind<br />
|-<br />
! {{keypress|S}}<br />
| Shutdown menu<br />
| Shutdown menu<br />
| Show preset<br />
|-<br />
! {{keypress|Ctrl|S}}<br />
| Screenshot<br />
| Screenshot<br />
| Screenshot<br />
|-<br />
! {{keypress|T}}<br />
| <br />
| Toggle subtitles on and off<br />
| <br />
|-<br />
! {{keypress|Ctrl|T}}<br />
| <br />
| Subtitle position control<br />
| <br />
|-<br />
! {{keypress|U}}<br />
| Move item up ''([[Playlists|Playlist editor]] & [[Favourites|Favorites window]])''<br />
| <br />
| <br />
|-<br />
! {{keypress|V}}<br />
| <br />
| Teletext<br />
| Visualisation settings<br />
|-<br />
! {{keypress|W}}<br />
| Marked as watched / unwatched<br />
| <br />
| <br />
|-<br />
! {{keypress|X}}<br />
| Stop<br />
| Stop<br />
| Stop<br />
|-<br />
! {{keypress|Y}}<br />
| Switch/choose player. For example, can be used to switch between internal player or a UPnP target player.<br />
| Switch/choose player<br />
| Switch/choose player<br />
|-<br />
! {{keypress|Z}}<br />
| <br />
| [[Player_process_info|Display info]]<br />
| <br />
|-<br />
! {{keypress|Space}}<br />
| <br />
* Pause/Play<br />
* Current playlist window ''(video & music listings)''<br />
* Highlight ''([[File manager]])''<br />
| Pause/Play<br />
| Pause/Play<br />
|-<br />
! '''{{big| {{keypress|left}} }}'''<br />
| Left<br />
|<br />
* '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
* Prev channel group ''(live TV)''<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! '''{{big| {{keypress|right}} }}'''<br />
| Right<br />
| <br />
* '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
* Next channel group ''(live TV)''<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! '''{{big| {{keypress|up}} }}'''<br />
| Up<br />
| <br />
* '''[[Skip_steps]]''' forward 10min '''OR''' Next chapter ''(videos)''<br />
* Channel up ''(live TV)''<br />
| Next track<br />
|-<br />
! '''{{big| {{keypress|down}} }}'''<br />
| Down<br />
| <br />
* Step back 10min '''OR''' Prev chapter ''(videos)''<br />
* Channel down ''(live TV)''<br />
| Previous track<br />
|-<br />
! {{keypress|Ctrl|left}}<br />
| <br />
| Variable seek backwards<br />
| Variable seek backwards<br />
|-<br />
! {{keypress|Ctrl|right}}<br />
| <br />
| Variable seek forward<br />
| Variable seek forward<br />
|-<br />
! {{keypress|Ctrl|up}}<br />
| <br />
| Move subtitles up<br /><br />
| <br />
|-<br />
! {{keypress|Ctrl|down}}<br />
| <br />
| Move subtitles down<br /><br />
| <br />
|-<br />
! {{keypress|PageUp}}<br />
| Page up<br />
| Skip to next queued video or next chapter if no videos are queued.<br />
| Increase rating<br />
|-<br />
! {{keypress|PageDown}}<br />
| Page down<br />
| Skip to previous queued video or previous chapter if no videos are queued.<br />
| Decrease rating<br />
|-<br />
! {{keypress|Enter}} {{small|return}}<br />
| Select<br />
| Player controls (OSD)<br />
| Player controls (OSD)<br />
|-<br />
! {{key press|Backspace}}<br />
| Back<br />
| Back<br />
| Back<br />
|-<br />
! {{keypress|Esc}}<br />
| Previous menu '''OR''' Home screen<br />
| Exit full screen<br />
| <br />
|-<br />
! {{keypress|.}} {{small|period}}<br />
| Skip forward<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! {{keypress|,}} {{small|comma}}<br />
| Skip backward<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! {{keypress|'}} {{small|quote}}<br />
| <br />
| Small '''[[Skip_steps]]''' backwards 7 seconds<br />
| <br />
|-<br />
! {{keypress|Tab}}<br />
| Fullscreen playback<br />
| Fullscreen playback<br />
| Fullscreen playback<br />
|-<br />
! {{keypress|PrintSrc}}<br />
| Screenshot<br />
| Screenshot<br />
| Screenshot<br />
|-<br />
! F8<br />
| Mute<br />
| Mute<br />
| Mute<br />
|-<br />
! {{keypress|-}} {{small|minus}}<br />
| Volume down<br />
| Volume down<br />
| Volume down<br />
|-<br />
! {{keypress|+}} {{small|plus}}<br />
| Volume up<br />
| Volume up<br />
| Volume up<br />
|-<br />
! {{keypress|{{=}}}} {{small|equals}}<br />
| Volume up<br />
| Volume up<br />
| Volume up<br />
|-<br />
! {{keypress|\}} {{small|backslash}}<br />
| Toggle between fullscreen/windowed mode<br />
| Toggle between fullscreen/windowed mode<br />
| Toggle between fullscreen/windowed mode<br />
|-<br />
! {{keypress|[}} {{small|left bracket}}<br />
| <br />
| '''[[Skip_steps]]''' forward 10min<br />
| <br />
|-<br />
! {{keypress|]}} {{small|right bracket}}<br />
| <br />
| '''[[Skip_steps]]''' backward 10min<br />
| <br />
|-<br />
! {{keypress|CTRL|END}}<br />
| Exit Kodi ''(Only on Home Screen)''<br />
| <br />
| <br />
|-<br />
! {{keypress|DEL}}<br />
| Delete file ''(if enabled in [[Settings/Media/General#Allow_file_renaming_and_deletion|settings]])''<br />
| Remove from playlist ''([[Playlists|Playlist editor]] only)''<br />
| Remove from playlist ''([[Playlists|Playlist editor]] only)''<br />
|-<br />
! {{keypress|Home}}<br />
| Jump to the top of the menu (..)<br />
| <br />
| <br />
|-<br />
! [numbers] then {{keypress|Return}}<br />
| <br />
| Jump to that time in playback. ''(E.g,, {{keypress|1|2|3|4|return}} will jump to 12 minutes and 34 seconds.)''<br />
| Jump to that time in playback. ''(E.g,, {{keypress|1|2|3|4|return}} will jump to 12 minutes and 34 seconds.)''<br />
|-<br />
! [numbers] then {{keypress|left}}<br />
| <br />
| Jump backwards in that amount of time. ''(E.g,, {{keypress|1|0|left}} will jump back 10 seconds.)''<br />
| Jump backwards in that amount of time. ''(E.g,, {{keypress|1|0|left}} will jump back 10 seconds.)''<br />
|-<br />
! [numbers] then {{keypress|right}}<br />
| <br />
| Jump forward in that amount of time. ''(E.g,, {{keypress|1|0|right}} will jump forward 10 seconds.)''<br />
| Jump forward in that amount of time. ''(E.g,, {{keypress|1|0|right}} will jump forward 10 seconds.)''<br />
|-<br />
! {{keypress|Shift|LETTER}}<br />
| Jump to that letter in a list<br />
| <br />
| <br />
|}<br />
<br />
== Mouse controls ==<br />
{| class="prettytable"<br />
! Key<br />
! Description<br />
|- <br />
| Left Click on item<br />
| Select<br />
|- <br />
| Middle Click on item<br />
| Queue to playlist<br />
|- <br />
| Right Click on item<br />
| Context menu<br />
|- <br />
| Right Click on blank area<br />
| Back<br />
|- <br />
| Mouse Wheel Up<br />
| Up<br />
|- <br />
| Mouse Wheel Down<br />
| Down<br />
|}<br />
<br />
== Picture slide show controls ==<br />
{| class="wikitable" <br />
! Key<br />
! Description<br />
|-<br />
! {{keypress|0}}<br />
| Zoom Normal (100%)<br />
|-<br />
! {{keypress|1}}<br />
| Zoom Level 1<br />
|-<br />
! {{keypress|2}}<br />
| Zoom Level 2<br />
|-<br />
! {{keypress|3}}<br />
| Zoom Level 3<br />
|-<br />
! {{keypress|4}}<br />
| Zoom Level 4<br />
|-<br />
! {{Keypress|5}}<br />
| Zoom Level 5<br />
|-<br />
! {{keypress|6}}<br />
| Zoom Level 6<br />
|-<br />
! {{keypress|7}}<br />
| Zoom Level 7<br />
|-<br />
! {{keypress|8}}<br />
| Zoom Level 8<br />
|-<br />
! {{keypress|9}}<br />
| Zoom Level 9<br />
|-<br />
! {{keypress|R}}<br />
| Rotate<br />
|-<br />
! {{keypress|T}}<br />
| Info (EXif data)<br />
|-<br />
! {{keypress|.}} <small>period</small><br />
| Next picture<br />
|-<br />
! {{keypress|,}} <small>comma</small><br />
| Previous picture<br />
|-<br />
! {{keypress|+}} <small>plus</small><br />
| Zoom in<br />
|-<br />
! {{keypress|-}} <small>minus</small><br />
| Zoom out<br />
|}<br />
<br />
== Platform specific controls ==<br />
<br />
=== Windows, Live, and Linux ===<br />
<br />
{{key press|menu}} (Menu key): Contextual menu<br />
<br />
=== Mac ===<br />
{{key press|Cmd|Q}} to quit<br />
<br />
{{key press|Cmd|H}} and {{key press|Cmd|M}} to hide/minimize to the dock<br />
<br />
{{key press|Cmd|F}} to toggle fullscreen<br />
<br />
{{key press|Cmd|S}} to take a screen shot<br />
<br />
== Customizing buttons through the GUI ==<br />
{{main|Add-on:Keymap Editor}}<br />
Users can customize [[keymap]] for remotes in GUI by using the community [[Add-on:Keymap Editor|Keymap Editor]] add-on.<br />
<br />
<br />
<br />
{{Helix updated}}<br />
<br />
[[Category:Manual]]<br />
[[Category:Remotes]]<br />
[[Category:General topics]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Keyboard_controls&diff=245845Keyboard controls2023-06-03T08:18:34Z<p>Uixtung: /* Default keyboard controls */</p>
<hr />
<div>{{mininav|[[Remote controls]]}}<br />
<br />
<section begin=intro />Kodi can be controlled with a keyboard using hotkeys. This page tells you what hotkey commands can be used, and where they can be used.<section end=intro /><br />
<br />
== Default keyboard controls ==<br />
The default [[keymap]] can be found at: {{Github_link|[https://github.com/xbmc/xbmc/blob/master/system/keymaps/keyboard.xml Keyboard.xml Master]}}<br />
<br />
{| class="wikitable sortable"<br />
! width="7%"| Key<br />
! width="31%"| Global<br />
! width="31%"| Video playback<br />
! width="31%"| Music visualisation<br />
|-<br />
! {{keypress|0}} (zero)<br />
|<br />
| Go between the two last channels ''([[live TV]] channel)'' '''OR''' Go to "now" on EPG/TV guide.<br />
|<br />
|-<br />
! {{keypress|A}}<br />
| <br />
| Audio delay control<br />
| <br />
|-<br />
! {{keypress|B}}<br />
| Live TV: Schedule recording timers<br />
| Live TV: Schedule recording timers<br />
| <br />
|- <br />
! {{keypress|C}}<br />
| Contextual menu<br />
| Playlist<br />
| <br />
|-<br />
! {{keypress|D}}<br />
| Move item down ''([[Playlists|Playlist editor]] & [[Favourites|Favorites window]])''<br />
| <br />
| <br />
|- <br />
! {{keypress|Ctrl|Shift|D}}<br />
| [[Log_file|Toggle debug logging]]<br />
| [[Log_file|Toggle debug logging]]<br />
| [[Log_file|Toggle debug logging]]<br />
|-<br />
! {{keypress|E}}<br />
| Live TV EPG/TV guide<br />
| Live TV EPG/TV guide<br />
| <br />
|- <br />
! {{keypress|F}}<br />
| Fast forward<br />
| Fast forward<br />
| Fast forward<br />
<!--<br />
|-<br />
! {{keypress|G}}<br />
| <br />
| <br />
| --><br />
|-<br />
! {{keypress|H}}<br />
| Live TV channels window<br />
| Live TV channels window<br />
| <br />
|- <br />
! {{keypress|I}}<br />
| [[Video_playback#Information|Information Page]]<br />
| [[Video_playback#Information|Information Page]]<br />
| [[Video_playback#Information|Information Page]]<br />
|-<br />
! {{keypress|J}}<br />
| Live TV: Radio channels window<br />
| Live TV: Radio channels window<br />
| <br />
|-<br />
! {{keypress|K}}<br />
| Live TV recordings window<br />
| Live TV recordings window<br />
| <br />
|-<br />
! {{keypress|L}}<br />
|<br />
| Next subtitle<br />
| Lock preset<br />
|- <br />
! {{keypress|M}}<br />
| <br />
* "Menu" (sidebar menu on the default skin)<br />
* Move ''([[File manager]])''<br />
| Player controls (OSD)<br />
| Player controls (OSD)<br />
|-<br />
! {{keypress|N}}<br />
| <br />
| <br />
| Current playlist window<br />
|-<br />
! {{keypress|O}}<br />
| <br />
| '''[[Player_process_info#Player_Process_Info|Player process info]]'''<br />
| <br />
<br />
|-<br />
! {{keypress|alt|O}}<br />
| <br />
| '''[[Player_process_info#Video_Debug_Info|Video debug info]]'''<br />
| <br />
<br />
|-<br />
! {{keypress|Ctrl|Shift|O}}<br />
| <br />
| '''[[Player_process_info#Player_Debug_Info|Player debug info]]'''<br />
| <br />
|- <br />
! {{keypress|P}}<br />
| Play selected item<br />
| Play<br />
| Visualisation preset list<br />
|-<br />
!{{keypress|alt|left}} or {{keypress|right}}<br />
|<br />
| Decrease/Increase Playback Speed - (0.8x - 1.5x speed)<br />
{{small|Only works when '''''[[Settings/Player/Videos#Sync_playback_to_display|Sync Playback to Display]]''''' is enabled which will Disable Audio Passthrough}}<br />
|<br />
|-<br />
! {{keypress|Q}}<br />
| Queue<br />
| <br />
| <br />
|-<br />
! {{keypress|R}}<br />
| <br />
* Rewind<br />
* Rename ''([[File manager]])''<br />
| Rewind<br />
| Rewind<br />
|-<br />
! {{keypress|S}}<br />
| Shutdown menu<br />
| Shutdown menu<br />
| Show preset<br />
|-<br />
! {{keypress|Ctrl|S}}<br />
| Screenshot<br />
| Screenshot<br />
| Screenshot<br />
|-<br />
! {{keypress|T}}<br />
| <br />
| Toggle subtitles on and off<br />
| <br />
|-<br />
! {{keypress|Ctrl|T}}<br />
| <br />
| Subtitle position control<br />
| <br />
|-<br />
! {{keypress|U}}<br />
| Move item up ''([[Playlists|Playlist editor]] & [[Favourites|Favorites window]])''<br />
| <br />
| <br />
|-<br />
! {{keypress|V}}<br />
| <br />
| Teletext<br />
| Visualisation settings<br />
|-<br />
! {{keypress|W}}<br />
| Marked as watched / unwatched<br />
| <br />
| <br />
|-<br />
! {{keypress|X}}<br />
| Stop<br />
| Stop<br />
| Stop<br />
|-<br />
! {{keypress|Y}}<br />
| Switch/choose player. For example, can be used to switch between internal player or a UPnP target player.<br />
| Switch/choose player<br />
| Switch/choose player<br />
|-<br />
! {{keypress|Z}}<br />
| <br />
| [[Player_process_info|Display info]]<br />
| <br />
|-<br />
! {{keypress|Space}}<br />
| <br />
* Pause/Play<br />
* Current playlist window ''(video & music listings)''<br />
* Highlight ''([[File manager]])''<br />
| Pause/Play<br />
| Pause/Play<br />
|-<br />
! '''{{big| {{keypress|left}} }}'''<br />
| Left<br />
|<br />
* '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
* Prev channel group ''(live TV)''<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! '''{{big| {{keypress|right}} }}'''<br />
| Right<br />
| <br />
* '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
* Next channel group ''(live TV)''<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! '''{{big| {{keypress|up}} }}'''<br />
| Up<br />
| <br />
* '''[[Skip_steps]]''' forward 10min '''OR''' Next chapter ''(videos)''<br />
* Channel up ''(live TV)''<br />
| Next track<br />
|-<br />
! '''{{big| {{keypress|down}} }}'''<br />
| Down<br />
| <br />
* Step back 10min '''OR''' Prev chapter ''(videos)''<br />
* Channel down ''(live TV)''<br />
| Previous track<br />
|-<br />
! {{keypress|Ctrl|left}}<br />
| <br />
| Variable seek backwards<br />
| Variable seek backwards<br />
|-<br />
! {{keypress|Ctrl|right}}<br />
| <br />
| Variable seek forward<br />
| Variable seek forward<br />
|-<br />
! {{keypress|Ctrl|up}}<br />
| <br />
| Move subtitles up<br /><br />
| <br />
|-<br />
! {{keypress|Ctrl|down}}<br />
| <br />
| Move subtitles down<br /><br />
| <br />
|-<br />
! {{keypress|PageUp}}<br />
| Page up<br />
| Skip to next queued video or next chapter if no videos are queued.<br />
| Increase rating<br />
|-<br />
! {{keypress|PageDown}}<br />
| Page down<br />
| Skip to previous queued video or previous chapter if no videos are queued.<br />
| Decrease rating<br />
|-<br />
! {{keypress|Enter}} {{small|return}}<br />
| Select<br />
| Player controls (OSD)<br />
| Player controls (OSD)<br />
|-<br />
! {{key press|Backspace}}<br />
| Back<br />
| Back<br />
| Back<br />
|-<br />
! {{keypress|Esc}}<br />
| Previous menu '''OR''' Home screen<br />
| Exit full screen<br />
| <br />
|-<br />
! {{keypress|.}} {{small|period}}<br />
| Skip forward<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
| '''[[Skip_steps]]''' forward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! {{keypress|,}} {{small|comma}}<br />
| Skip backward<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
| '''[[Skip_steps]]''' backward. <br />{{small|1x 10s, 2x 30s, 3x 1m, 4x 3m...}}<br />
|-<br />
! {{keypress|'}} {{small|quote}}<br />
| <br />
| Small '''[[Skip_steps]]''' backwards 7 seconds<br />
| <br />
|-<br />
! {{keypress|Tab}}<br />
| Fullscreen playback<br />
| Fullscreen playback<br />
| Fullscreen playback<br />
|-<br />
! {{keypress|PrintSrc}}<br />
| Screenshot<br />
| Screenshot<br />
| Screenshot<br />
|-<br />
! F8<br />
| Mute<br />
| Mute<br />
| Mute<br />
|-<br />
! {{keypress|-}} {{small|minus}}<br />
| Volume down<br />
| Volume down<br />
| Volume down<br />
|-<br />
! {{keypress|+}} {{small|plus}}<br />
| Volume up<br />
| Volume up<br />
| Volume up<br />
|-<br />
! {{keypress|{{=}}}} {{small|equals}}<br />
| Volume up<br />
| Volume up<br />
| Volume up<br />
|-<br />
! {{keypress|\}} {{small|backslash}}<br />
| Toggle between fullscreen/windowed mode<br />
| Toggle between fullscreen/windowed mode<br />
| Toggle between fullscreen/windowed mode<br />
|-<br />
! {{keypress|[}} {{small|left bracket}}<br />
| <br />
| '''[[Skip_steps]]''' forward 10min<br />
| <br />
|-<br />
! {{keypress|]}} {{small|right bracket}}<br />
| <br />
| '''[[Skip_steps]]''' backward 10min<br />
| <br />
|-<br />
! {{keypress|CTRL|END}}<br />
| Exit Kodi ''(Only on Home Screen)''<br />
| <br />
| <br />
|-<br />
! {{keypress|DEL}}<br />
| Delete file ''(if enabled in [[Settings/Media/General#Allow_file_renaming_and_deletion|settings]])''<br />
| Remove from playlist ''([[Playlists|Playlist editor]] only)''<br />
| Remove from playlist ''([[Playlists|Playlist editor]] only)''<br />
|-<br />
! {{keypress|Home}}<br />
| Jump to the top of the menu (..)<br />
| <br />
| <br />
|-<br />
! [numbers] then {{keypress|Return}}<br />
| <br />
| Jump to that time in playback. ''(E.g,, {{keypress|1|2|3|4|return}} will jump to 12 minutes and 34 seconds.)''<br />
| Jump to that time in playback. ''(E.g,, {{keypress|1|2|3|4|return}} will jump to 12 minutes and 34 seconds.)''<br />
|-<br />
! [numbers] then {{keypress|left}}<br />
| <br />
| Jump backwards in that amount of time. ''(E.g,, {{keypress|1|0|left}} will jump back 10 seconds.)''<br />
| Jump backwards in that amount of time. ''(E.g,, {{keypress|1|0|left}} will jump back 10 seconds.)''<br />
|-<br />
! [numbers] then {{keypress|right}}<br />
| <br />
| Jump forward in that amount of time. ''(E.g,, {{keypress|1|0|right}} will jump forward 10 seconds.)''<br />
| Jump forward in that amount of time. ''(E.g,, {{keypress|1|0|right}} will jump forward 10 seconds.)''<br />
|-<br />
! {{keypress|Shift|LETTER}}<br />
| Jump to that letter in a list<br />
| <br />
| <br />
|}<br />
<br />
== Mouse controls ==<br />
{| class="prettytable"<br />
! Key<br />
! Description<br />
|- <br />
| Left Click on item<br />
| Select<br />
|- <br />
| Middle Click on item<br />
| Queue to playlist<br />
|- <br />
| Right Click on item<br />
| Context menu<br />
|- <br />
| Right Click on blank area<br />
| Back<br />
|- <br />
| Mouse Wheel Up<br />
| Up<br />
|- <br />
| Mouse Wheel Down<br />
| Down<br />
|}<br />
<br />
== Picture slide show controls ==<br />
{| class="wikitable" <br />
! Key<br />
! Description<br />
|-<br />
! {{keypress|0}}<br />
| Zoom Normal (100%)<br />
|-<br />
! {{keypress|1}}<br />
| Zoom Level 1<br />
|-<br />
! {{keypress|2}}<br />
| Zoom Level 2<br />
|-<br />
! {{keypress|3}}<br />
| Zoom Level 3<br />
|-<br />
! {{keypress|4}}<br />
| Zoom Level 4<br />
|-<br />
! {{Keypress|5}}<br />
| Zoom Level 5<br />
|-<br />
! {{keypress|6}}<br />
| Zoom Level 6<br />
|-<br />
! {{keypress|7}}<br />
| Zoom Level 7<br />
|-<br />
! {{keypress|8}}<br />
| Zoom Level 8<br />
|-<br />
! {{keypress|9}}<br />
| Zoom Level 9<br />
|-<br />
! {{keypress|R}}<br />
| Rotate<br />
|-<br />
! {{keypress|T}}<br />
| Info (EXif data)<br />
|-<br />
! {{keypress|.}} <small>period</small><br />
| Next picture<br />
|-<br />
! {{keypress|,}} <small>comma</small><br />
| Previous picture<br />
|-<br />
! {{keypress|+}} <small>plus</small><br />
| Zoom in<br />
|-<br />
! {{keypress|-}} <small>minus</small><br />
| Zoom out<br />
|}<br />
<br />
== Platform specific controls ==<br />
<br />
=== Windows, Live, and Linux ===<br />
<br />
{{key press|menu}} (Menu key): Contextual menu<br />
<br />
=== Mac ===<br />
{{key press|Cmd|Q}} to quit<br />
<br />
{{key press|Cmd|H}} and {{key press|Cmd|M}} to hide/minimize to the dock<br />
<br />
{{key press|Cmd|F}} to toggle fullscreen<br />
<br />
{{key press|Cmd|S}} to take a screen shot<br />
<br />
== Customizing buttons through the GUI ==<br />
{{main|Add-on:Keymap Editor}}<br />
Users can customize [[keymap]] for remotes in GUI by using the community [[Add-on:Keymap Editor|Keymap Editor]] add-on.<br />
<br />
<br />
<br />
{{Helix updated}}<br />
<br />
[[Category:Manual]]<br />
[[Category:Remotes]]<br />
[[Category:General topics]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Add-on:The_Movie_Database&diff=242828Add-on:The Movie Database2022-08-24T10:47:58Z<p>Uixtung: the site use all caps for the shortened name</p>
<hr />
<div>{{Addon <br />
|Name=The Movie Database<br />
|provider-name=Team Kodi<br />
|ID=metadata.themoviedb.org<br />
|latest-version=5.2.6<br />
|extension point=xbmc.metadata.scraper.movies<br />
|provides=<br />
|Summary=TMDB Movie Scraper<br />
|Description=The Movie Database (TMDB) is a free and open movie database. It's completely user driven by people like you. TMDB is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.<br />
|Platform=all<br />
|Language=<br />
|License=GPL v2.0<br />
|Forum=https://forum.kodi.tv/showthread.php?tid=339672<br />
|Website=https://www.themoviedb.org<br />
|Source=<br />
|Email=<br />
|broken=<br />
|icon url=http://mirrors.kodi.tv/addons/matrix/metadata.themoviedb.org/icon.png}}<br />
<br />
{{-}}<br />
{{Warning|'''This scraper is broken.''' It has been deprecated for v19 and later. Please switch to '''[[Add-on:TMDb_TV_Shows]]''' for TV Shows and '''[[Add-on:The_Movie_Database_Python]]''' for movies.<br>Unfortunately there is no replacement scraper for v18 and earlier, so we are forced to leave this scraper in the repository.<br>'''If you are using an older version of Kodi, you should update to the latest version and use the newer Python scrapers.'''}}<br />
<br />
<br />
= Introduction =<br />
TheMovieDB scraper consists of two scapers as follows-<br />
*metadata.themoviedb.org- Used for scraping '''Movie''' metadata and artwork<br />
*metadata.tvshows.themoviedb.org- Used for scraping '''TV Show''' metadata and artwork from TheMovieDB database <br />
<br />
:'''''See: http://themoviedb.org'''''<br />
<br />
<br />
'''{{red|{{big|When adjusting scraper settings you must make the adjustments on the Source using Change Content from the ''[[Basic_controls#Context_Menu|Context Menu]]'' when highlighting the Source. Do not make changes through the Add-ons menu option. This only sets default options and will not change existing settings attached to Sources.}}}}'''<br />
<br />
<br />
<br />
= TMDB - For Movies =<br />
'''''metadata.themoviedb.org''''' is used to download metadata and artwork for Movies. The following explains available scraper settings<br />
<br />
<br />
<br />
== Scraper Settings ==<br />
<section begin="Scraper settings" /><br />
<gallery widths=500px heights=313px><br />
File:Set.content.The MovieDB.settings.png<br />
</gallery><br />
<br />
; Keep original title<br />
: Use the original (untranslated) title when downloading info for a foreign film.<br />
: For example the movie ''[https://www.themoviedb.org/movie/146-wo-hu-cang-long Crouching Tiger, Hidden Dragon (2000)]'' is the English translated title of the movie. The Original Name of the movie is '''{{big|卧虎藏龙}}'''. If you prefer the English translated title, then '''disable''' the setting. If you prefer the original Chinese title then '''enable''' the setting.<br />
; Enable fanart<br />
: Enable this setting to download [[Artwork|Fanart]].<br />
; Enable trailer (YouTube)<br />
: Downloads the '''link''' to a movie trailer at [[Add-on:YouTube|YouTube]]. If you have local trailers, ensure this setting is '''disabled'''.<br />
; Preferred language<br />
: Language to use for summaries and other metadata.<br />
; Preferred Certification Country<br />
: Country/Nation preference for Content Advisory Ratings- eg M, MA, PG<br />
; Default Rating from<br />
: Choose site to download movie ratings from. Choices are TMDB and IMDB. If IMDB is selected, it becomes the default rating. TheMovieDB rating is still scraped.<br />
; Add also IMDB ratings<br />
: Only visible if the previous setting is set to TMDB. Allows scraping of ratings from both sources, but keeps TheMovieDB rating as the default rating.<br />
<section end="Scraper settings" /><br />
<br />
<br />
<br />
= TMDB - For TV Shows =<br />
*'''''metadata.tvshows.themoviedb.org''''' is used to scrape TV Show metadata and artwork from TheMovieDB database. The following explains the available scraper settings<br />
<br />
<br />
<br />
== Scraper Settings ==<br />
<section begin="TMDB-TVShow Settings" /><br />
<gallery widths=500px heights=313px><br />
File:TMDB-TVScraper01.jpg<br />
</gallery><br />
<br />
; Keep original title<br />
: Use the original (untranslated) title when downloading info for a TV Show<br />
: For example the movie ''[https://www.themoviedb.org/movie/146-wo-hu-cang-long Crouching Tiger, Hidden Dragon (2000)]'' is the English translated title of the movie. The Original Name of the movie is '''{{big|卧虎藏龙}}'''. If you want the English translated title, then '''disable''' the setting. If you want the original Chinese title then '''enable''' the setting.<br />
; Get Artwork from themoviedb.org<br />
: Enable this setting to download Poster, Fanart and episode Thumbs [[Artwork]]<br />
; Get Extra Artwork from fanart.tv<br />
: Enable this setting to download other [[Artwork]] types such as Banner, Clearart, Clearlogo, Discart, Landscape for the TV Show and Seasons<br />
; Preferred language<br />
: Language to use for summaries and other metadata.<br />
<section end="TMDB-TVShow Settings" /><br />
<br />
<br />
<br />
= See also =<br />
* [[Video library]]<br />
* [[Add-on:The_Movie_Database_Scraper_Library]]<br />
* [[Add-on:The_TVDB]]<br />
* [[NFO_files|NFO Files]]<br />
* [[Artwork]]<br />
<br />
<br />
<br />
<br />
{{top}}<br />
<br />
{{updated|18}}<br />
<br />
[[Category:Add-ons with license tag]]<br />
[[Category:Add-ons with website tag]]<br />
[[Category:All add-ons]]<br />
[[Category:Built-in add-ons]]<br />
[[Category:First time user]]<br />
[[Category:General topics]]<br />
[[Category:Karellen]]<br />
[[Category:Krypton]]<br />
[[Category:Leia]]<br />
[[Category:Manual]]<br />
[[Category:Movie scraper add-ons]]<br />
[[Category:TV scraper add-ons]]<br />
[[Category:Video library]]<br />
[[Category:Gotham add-on repository]]<br />
[[Category:Helix add-on repository]]<br />
[[Category:Isengard add-on repository]]<br />
[[Category:Jarvis add-on repository]]<br />
[[Category:Krypton add-on repository]]<br />
[[Category:Leia add-on repository]]<br />
[[Category:Matrix add-on repository]]<br />
[[Category:Nexus add-on repository]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skin_development_introduction&diff=242785Skin development introduction2022-08-08T06:35:44Z<p>Uixtung: /* Fonts */</p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}<br />
<br />
{{Kodi}} is noted as having a very flexible and robust framework for its GUI, making theme-skinning and personal customization very accessible. Users can create their own skin (or modify an existing skin) and share it with others.<br />
<br />
Kodi includes a new GUI library written from scratch. This library allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality. The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br /><br /><br />
Kodi skins once installed are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br />
<br />
Any additional skins you create or download or install via zip, Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin.myskin) is a good place to start. Don't forget to modify the addon.xml file and give your new skin a unique addon id.<br />
You can then edit each of the files as you become more familiar with the skinning system. Try modifying a window or two by adding a button, or altering the textures or layout and test the result of your changes in Kodi.<br />
<br /><br /><br />
<br />
== Anatomy of a Skin ==<br />
<br />
Each skin folder contains several subdirectorys, and several files:<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/1080p<br />
: This is a resolution-specific directory. As Kodi can run in multiple resolutions, your skin can have multiple resolution folders. see: [[Addon.xml|How Window XML Files Are Found]]<br />
; skin.myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; skin.myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; skin.myskin/extras<br />
: optional folder containing any additional items, that don't fit elsewhere<br />
; skin.myskin/fonts<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; skin.name/themes<br />
: optional folder for additional skin themes. Used to store textures in a different colour to create colour themes<br />
; myskin/resources<br />
: place 10 screenshots (1280x720) of your skin in here. Name them screenshot-01.jpg, screenshot-02.jpg ect. NOTE: You will need to reference these using the asset tag in the addon.xml<br />
; myskin/changelog.txt<br />
: a textfile detailing what has changed in every version of the skin<br />
; myskin/fanart.jpg<br />
: a 1280x720 or 1920x1080 jpeg fanart image for your skin<br />
; myskin/icon.png<br />
: a 256x256 or 512x512 png image for your skin<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
<br /><br />
The goal is to keep your skin folder structure as cleanly organized as possible as it makes it easier to troubleshoot problems; this is becomes very important if you are working as part of a Kodi skin creation team.<br />
<br />
== Skin Themes ==<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. <br />
For instance, you could tint all your main textures a red colour and create a new theme package called Red.xbt. This gives users more choice in the look of a particular skin.<br> <br />
Note that only the textures change when you change themes, the layout stays the same. If the user has selected a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures, all other textures will fall-back to using Textures.xbt as usual.<br />
<br />
When the user selects a theme, Kodi will automatically also select the theme's default color set, based on the <themename>.xml file located in the colors/ folder. See below for more information.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run TexturePacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run TexturePacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with TexturePacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
== Colour Themes ==<br />
The XML files contained in the colors/ folder contain the different colour themes for the skin. This allows you the skinner to define the colours that you'll use for text and images once in terms of English names (rather than hex codes) and potentially allows you to have different colour themes.<br />
<br />
Each additional colour theme has a single XML file, where the filename should be the same as the name of the colour theme (e.g. orange.xml). The default colours should be placed in defaults.xml - this is a fallback file that is used when the user hasn't requested another colour theme, or when their selected colour theme doesn't contain a particular colour assignment.<br />
<br />
The layout is as follows (note that the hex code is in ARGB format):<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<colors><br />
<color name="white">ffffffff</color><br />
<color name="grey">7fffffff</color><br />
<color name="green">ff00ff7f</color><br />
</colors><br />
</syntaxhighlight><br />
<br />
You can then use <textcolor>white</textcolor> within the main skin files to refer to which colour you want. This allows you to easily change all the colouring in the skin by just adding a new XML file to the colors/ folder.<br />
<br />
== Fonts ==<br />
There's one special file called Font.xml. This file contains a list of all fonts the skin uses. <br />
Kodi will load all the fonts mentioned in this file from the /myskin/fonts directory first, and if that fails,<br />
will attempt to load them from Kodi/media/fonts. In the event that Kodi is unable to locate the specified font, it will default to "font13". You can modify this file as you like and add/delete/change fonts. The user friendly font name is referenced by the other xml files mentioned below.<br />
<br />
== The Window XML Files ==<br />
The other xml files each define the skin for a single window. They all have the same basic layout, allowing you to place different controls on the window, and define how navigation should operate.<br /><br /><br />
The list of all window .xml files and what they represent is be found in the '''[[Window IDs|Window ID's]]''' section.<br /><br /><br />
The important thing to remember is that each window has a unique identifying number (id). This is how Kodi identifies the window from within the source code. Furthermore, many of the controls within each window should have a unique id as well, unless they're just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely. The window id's are all listed in the [[Window IDs|window list]].<br /><br /><br />
The structure of the window .xml files can be found in the '''[[Window Structure]]''' section.<br />
<br /><br /><br />
<br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
<br />
[[Category:Skin_development]]<br />
[[Category:Add-on development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skin_development_introduction&diff=242784Skin development introduction2022-08-08T06:28:38Z<p>Uixtung: /* Skin Themes */</p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}<br />
<br />
{{Kodi}} is noted as having a very flexible and robust framework for its GUI, making theme-skinning and personal customization very accessible. Users can create their own skin (or modify an existing skin) and share it with others.<br />
<br />
Kodi includes a new GUI library written from scratch. This library allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality. The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br /><br /><br />
Kodi skins once installed are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br />
<br />
Any additional skins you create or download or install via zip, Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin.myskin) is a good place to start. Don't forget to modify the addon.xml file and give your new skin a unique addon id.<br />
You can then edit each of the files as you become more familiar with the skinning system. Try modifying a window or two by adding a button, or altering the textures or layout and test the result of your changes in Kodi.<br />
<br /><br /><br />
<br />
== Anatomy of a Skin ==<br />
<br />
Each skin folder contains several subdirectorys, and several files:<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/1080p<br />
: This is a resolution-specific directory. As Kodi can run in multiple resolutions, your skin can have multiple resolution folders. see: [[Addon.xml|How Window XML Files Are Found]]<br />
; skin.myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; skin.myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; skin.myskin/extras<br />
: optional folder containing any additional items, that don't fit elsewhere<br />
; skin.myskin/fonts<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; skin.name/themes<br />
: optional folder for additional skin themes. Used to store textures in a different colour to create colour themes<br />
; myskin/resources<br />
: place 10 screenshots (1280x720) of your skin in here. Name them screenshot-01.jpg, screenshot-02.jpg ect. NOTE: You will need to reference these using the asset tag in the addon.xml<br />
; myskin/changelog.txt<br />
: a textfile detailing what has changed in every version of the skin<br />
; myskin/fanart.jpg<br />
: a 1280x720 or 1920x1080 jpeg fanart image for your skin<br />
; myskin/icon.png<br />
: a 256x256 or 512x512 png image for your skin<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
<br /><br />
The goal is to keep your skin folder structure as cleanly organized as possible as it makes it easier to troubleshoot problems; this is becomes very important if you are working as part of a Kodi skin creation team.<br />
<br />
== Skin Themes ==<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. <br />
For instance, you could tint all your main textures a red colour and create a new theme package called Red.xbt. This gives users more choice in the look of a particular skin.<br> <br />
Note that only the textures change when you change themes, the layout stays the same. If the user has selected a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures, all other textures will fall-back to using Textures.xbt as usual.<br />
<br />
When the user selects a theme, Kodi will automatically also select the theme's default color set, based on the <themename>.xml file located in the colors/ folder. See below for more information.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run TexturePacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run TexturePacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with TexturePacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
== Colour Themes ==<br />
The XML files contained in the colors/ folder contain the different colour themes for the skin. This allows you the skinner to define the colours that you'll use for text and images once in terms of English names (rather than hex codes) and potentially allows you to have different colour themes.<br />
<br />
Each additional colour theme has a single XML file, where the filename should be the same as the name of the colour theme (e.g. orange.xml). The default colours should be placed in defaults.xml - this is a fallback file that is used when the user hasn't requested another colour theme, or when their selected colour theme doesn't contain a particular colour assignment.<br />
<br />
The layout is as follows (note that the hex code is in ARGB format):<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<colors><br />
<color name="white">ffffffff</color><br />
<color name="grey">7fffffff</color><br />
<color name="green">ff00ff7f</color><br />
</colors><br />
</syntaxhighlight><br />
<br />
You can then use <textcolor>white</textcolor> within the main skin files to refer to which colour you want. This allows you to easily change all the colouring in the skin by just adding a new XML file to the colors/ folder.<br />
<br />
== Fonts ==<br />
There's one special file called Font.xml. This file contains a list of all fonts the skin uses. <br />
kodi will load all the fonts mentioned in this file from the /myskin/fonts directory first, and if that fails,<br />
will attempt to load them from Kodi/media/fonts. In the event that Kodi is unable to locate the specified font, it will default to "font13". You can modify this file as you like and<br />
add/delete/change fonts. The user friendly font name is referenced by the other xml files mentioned<br />
below.<br />
<br />
<br />
== The Window XML Files ==<br />
The other xml files each define the skin for a single window. They all have the same basic layout, allowing you to place different controls on the window, and define how navigation should operate.<br /><br /><br />
The list of all window .xml files and what they represent is be found in the '''[[Window IDs|Window ID's]]''' section.<br /><br /><br />
The important thing to remember is that each window has a unique identifying number (id). This is how Kodi identifies the window from within the source code. Furthermore, many of the controls within each window should have a unique id as well, unless they're just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely. The window id's are all listed in the [[Window IDs|window list]].<br /><br /><br />
The structure of the window .xml files can be found in the '''[[Window Structure]]''' section.<br />
<br /><br /><br />
<br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
<br />
[[Category:Skin_development]]<br />
[[Category:Add-on development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skin_development_introduction&diff=242783Skin development introduction2022-08-08T06:26:28Z<p>Uixtung: /* Skin Themes */</p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}<br />
<br />
{{Kodi}} is noted as having a very flexible and robust framework for its GUI, making theme-skinning and personal customization very accessible. Users can create their own skin (or modify an existing skin) and share it with others.<br />
<br />
Kodi includes a new GUI library written from scratch. This library allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality. The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br /><br /><br />
Kodi skins once installed are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br />
<br />
Any additional skins you create or download or install via zip, Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin.myskin) is a good place to start. Don't forget to modify the addon.xml file and give your new skin a unique addon id.<br />
You can then edit each of the files as you become more familiar with the skinning system. Try modifying a window or two by adding a button, or altering the textures or layout and test the result of your changes in Kodi.<br />
<br /><br /><br />
<br />
== Anatomy of a Skin ==<br />
<br />
Each skin folder contains several subdirectorys, and several files:<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/1080p<br />
: This is a resolution-specific directory. As Kodi can run in multiple resolutions, your skin can have multiple resolution folders. see: [[Addon.xml|How Window XML Files Are Found]]<br />
; skin.myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; skin.myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; skin.myskin/extras<br />
: optional folder containing any additional items, that don't fit elsewhere<br />
; skin.myskin/fonts<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; skin.name/themes<br />
: optional folder for additional skin themes. Used to store textures in a different colour to create colour themes<br />
; myskin/resources<br />
: place 10 screenshots (1280x720) of your skin in here. Name them screenshot-01.jpg, screenshot-02.jpg ect. NOTE: You will need to reference these using the asset tag in the addon.xml<br />
; myskin/changelog.txt<br />
: a textfile detailing what has changed in every version of the skin<br />
; myskin/fanart.jpg<br />
: a 1280x720 or 1920x1080 jpeg fanart image for your skin<br />
; myskin/icon.png<br />
: a 256x256 or 512x512 png image for your skin<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
<br /><br />
The goal is to keep your skin folder structure as cleanly organized as possible as it makes it easier to troubleshoot problems; this is becomes very important if you are working as part of a Kodi skin creation team.<br />
<br />
== Skin Themes ==<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. <br />
For instance, you could tint all your main textures a red colour and create a new theme package called Red.xbt. This gives users more choice in the look of a particular skin.<br> <br />
Note that only the textures change when you change themes, the layout stays the same. If the user has selected a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures. All other textures will fall-back to using Textures.xbt as usual.<br />
<br />
When the user selects a theme, Kodi will automatically also select the theme's default color set, based on the <themename>.xml file located in the colors/ folder. See below for more information.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run TexturePacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run TexturePacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with TexturePacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
== Colour Themes ==<br />
The XML files contained in the colors/ folder contain the different colour themes for the skin. This allows you the skinner to define the colours that you'll use for text and images once in terms of English names (rather than hex codes) and potentially allows you to have different colour themes.<br />
<br />
Each additional colour theme has a single XML file, where the filename should be the same as the name of the colour theme (e.g. orange.xml). The default colours should be placed in defaults.xml - this is a fallback file that is used when the user hasn't requested another colour theme, or when their selected colour theme doesn't contain a particular colour assignment.<br />
<br />
The layout is as follows (note that the hex code is in ARGB format):<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<colors><br />
<color name="white">ffffffff</color><br />
<color name="grey">7fffffff</color><br />
<color name="green">ff00ff7f</color><br />
</colors><br />
</syntaxhighlight><br />
<br />
You can then use <textcolor>white</textcolor> within the main skin files to refer to which colour you want. This allows you to easily change all the colouring in the skin by just adding a new XML file to the colors/ folder.<br />
<br />
== Fonts ==<br />
There's one special file called Font.xml. This file contains a list of all fonts the skin uses. <br />
kodi will load all the fonts mentioned in this file from the /myskin/fonts directory first, and if that fails,<br />
will attempt to load them from Kodi/media/fonts. In the event that Kodi is unable to locate the specified font, it will default to "font13". You can modify this file as you like and<br />
add/delete/change fonts. The user friendly font name is referenced by the other xml files mentioned<br />
below.<br />
<br />
<br />
== The Window XML Files ==<br />
The other xml files each define the skin for a single window. They all have the same basic layout, allowing you to place different controls on the window, and define how navigation should operate.<br /><br /><br />
The list of all window .xml files and what they represent is be found in the '''[[Window IDs|Window ID's]]''' section.<br /><br /><br />
The important thing to remember is that each window has a unique identifying number (id). This is how Kodi identifies the window from within the source code. Furthermore, many of the controls within each window should have a unique id as well, unless they're just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely. The window id's are all listed in the [[Window IDs|window list]].<br /><br /><br />
The structure of the window .xml files can be found in the '''[[Window Structure]]''' section.<br />
<br /><br /><br />
<br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
<br />
[[Category:Skin_development]]<br />
[[Category:Add-on development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skin_development_introduction&diff=242782Skin development introduction2022-08-08T06:13:14Z<p>Uixtung: </p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}<br />
<br />
{{Kodi}} is noted as having a very flexible and robust framework for its GUI, making theme-skinning and personal customization very accessible. Users can create their own skin (or modify an existing skin) and share it with others.<br />
<br />
Kodi includes a new GUI library written from scratch. This library allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality. The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br /><br /><br />
Kodi skins once installed are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br />
<br />
Any additional skins you create or download or install via zip, Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin.myskin) is a good place to start. Don't forget to modify the addon.xml file and give your new skin a unique addon id.<br />
You can then edit each of the files as you become more familiar with the skinning system. Try modifying a window or two by adding a button, or altering the textures or layout and test the result of your changes in Kodi.<br />
<br /><br /><br />
<br />
== Anatomy of a Skin ==<br />
<br />
Each skin folder contains several subdirectorys, and several files:<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/1080p<br />
: This is a resolution-specific directory. As Kodi can run in multiple resolutions, your skin can have multiple resolution folders. see: [[Addon.xml|How Window XML Files Are Found]]<br />
; skin.myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; skin.myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; skin.myskin/extras<br />
: optional folder containing any additional items, that don't fit elsewhere<br />
; skin.myskin/fonts<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; skin.name/themes<br />
: optional folder for additional skin themes. Used to store textures in a different colour to create colour themes<br />
; myskin/resources<br />
: place 10 screenshots (1280x720) of your skin in here. Name them screenshot-01.jpg, screenshot-02.jpg ect. NOTE: You will need to reference these using the asset tag in the addon.xml<br />
; myskin/changelog.txt<br />
: a textfile detailing what has changed in every version of the skin<br />
; myskin/fanart.jpg<br />
: a 1280x720 or 1920x1080 jpeg fanart image for your skin<br />
; myskin/icon.png<br />
: a 256x256 or 512x512 png image for your skin<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
<br /><br />
The goal is to keep your skin folder structure as cleanly organized as possible as it makes it easier to troubleshoot problems; this is becomes very important if you are working as part of a Kodi skin creation team.<br />
<br />
== Skin Themes ==<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. For instance,<br />
you could tint all your main textures a red colour, and create a new theme package Red.xbt? – this gives users more choice in the look<br />
of a particular skin. Note that only the textures change when you change themes – the layout stays the same. If the user has selected<br />
a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures – all other textures will fall-back to using Textures.xbt as usual.<br />
<br />
When the user selects a theme, Kodi will automatically also select the themes default color set, based on the <themename>.xml file located in the colors/ folder. See below for more information.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run TexturePacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run TexturePacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with TexturePacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
== Colour Themes ==<br />
The XML files contained in the colors/ folder contain the different colour themes for the skin. This allows you the skinner to define the colours that you'll use for text and images once in terms of English names (rather than hex codes) and potentially allows you to have different colour themes.<br />
<br />
Each additional colour theme has a single XML file, where the filename should be the same as the name of the colour theme (e.g. orange.xml). The default colours should be placed in defaults.xml - this is a fallback file that is used when the user hasn't requested another colour theme, or when their selected colour theme doesn't contain a particular colour assignment.<br />
<br />
The layout is as follows (note that the hex code is in ARGB format):<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<colors><br />
<color name="white">ffffffff</color><br />
<color name="grey">7fffffff</color><br />
<color name="green">ff00ff7f</color><br />
</colors><br />
</syntaxhighlight><br />
<br />
You can then use <textcolor>white</textcolor> within the main skin files to refer to which colour you want. This allows you to easily change all the colouring in the skin by just adding a new XML file to the colors/ folder.<br />
<br />
== Fonts ==<br />
There's one special file called Font.xml. This file contains a list of all fonts the skin uses. <br />
kodi will load all the fonts mentioned in this file from the /myskin/fonts directory first, and if that fails,<br />
will attempt to load them from Kodi/media/fonts. In the event that Kodi is unable to locate the specified font, it will default to "font13". You can modify this file as you like and<br />
add/delete/change fonts. The user friendly font name is referenced by the other xml files mentioned<br />
below.<br />
<br />
<br />
== The Window XML Files ==<br />
The other xml files each define the skin for a single window. They all have the same basic layout, allowing you to place different controls on the window, and define how navigation should operate.<br /><br /><br />
The list of all window .xml files and what they represent is be found in the '''[[Window IDs|Window ID's]]''' section.<br /><br /><br />
The important thing to remember is that each window has a unique identifying number (id). This is how Kodi identifies the window from within the source code. Furthermore, many of the controls within each window should have a unique id as well, unless they're just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely. The window id's are all listed in the [[Window IDs|window list]].<br /><br /><br />
The structure of the window .xml files can be found in the '''[[Window Structure]]''' section.<br />
<br /><br /><br />
<br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
<br />
[[Category:Skin_development]]<br />
[[Category:Add-on development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skin_development_introduction&diff=242781Skin development introduction2022-08-08T06:12:28Z<p>Uixtung: </p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]|[[Skinning]]}}<br />
<br />
{{Kodi}} is noted as having a very flexible and robust framework for its GUI, making theme-skinning and personal customization very accessible. Users can create their own skin (or modify an existing skin) and share it with others.<br />
<br />
Kodi includes a new GUI library written from scratch. This library allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality. The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br /><br /><br />
Kodi skins once installed are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br />
<br />
Any additional skins you create or download or install via zip Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin.myskin) is a good place to start. Don't forget to modify the addon.xml file and give your new skin a unique addon id.<br />
You can then edit each of the files as you become more familiar with the skinning system. Try modifying a window or two by adding a button, or altering the textures or layout and test the result of your changes in Kodi.<br />
<br /><br /><br />
<br />
== Anatomy of a Skin ==<br />
<br />
Each skin folder contains several subdirectorys, and several files:<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/1080p<br />
: This is a resolution-specific directory. As Kodi can run in multiple resolutions, your skin can have multiple resolution folders. see: [[Addon.xml|How Window XML Files Are Found]]<br />
; skin.myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; skin.myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; skin.myskin/extras<br />
: optional folder containing any additional items, that don't fit elsewhere<br />
; skin.myskin/fonts<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; skin.name/themes<br />
: optional folder for additional skin themes. Used to store textures in a different colour to create colour themes<br />
; myskin/resources<br />
: place 10 screenshots (1280x720) of your skin in here. Name them screenshot-01.jpg, screenshot-02.jpg ect. NOTE: You will need to reference these using the asset tag in the addon.xml<br />
; myskin/changelog.txt<br />
: a textfile detailing what has changed in every version of the skin<br />
; myskin/fanart.jpg<br />
: a 1280x720 or 1920x1080 jpeg fanart image for your skin<br />
; myskin/icon.png<br />
: a 256x256 or 512x512 png image for your skin<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
<br /><br />
The goal is to keep your skin folder structure as cleanly organized as possible as it makes it easier to troubleshoot problems; this is becomes very important if you are working as part of a Kodi skin creation team.<br />
<br />
== Skin Themes ==<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. For instance,<br />
you could tint all your main textures a red colour, and create a new theme package Red.xbt? – this gives users more choice in the look<br />
of a particular skin. Note that only the textures change when you change themes – the layout stays the same. If the user has selected<br />
a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures – all other textures will fall-back to using Textures.xbt as usual.<br />
<br />
When the user selects a theme, Kodi will automatically also select the themes default color set, based on the <themename>.xml file located in the colors/ folder. See below for more information.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run TexturePacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run TexturePacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with TexturePacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
== Colour Themes ==<br />
The XML files contained in the colors/ folder contain the different colour themes for the skin. This allows you the skinner to define the colours that you'll use for text and images once in terms of English names (rather than hex codes) and potentially allows you to have different colour themes.<br />
<br />
Each additional colour theme has a single XML file, where the filename should be the same as the name of the colour theme (e.g. orange.xml). The default colours should be placed in defaults.xml - this is a fallback file that is used when the user hasn't requested another colour theme, or when their selected colour theme doesn't contain a particular colour assignment.<br />
<br />
The layout is as follows (note that the hex code is in ARGB format):<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<colors><br />
<color name="white">ffffffff</color><br />
<color name="grey">7fffffff</color><br />
<color name="green">ff00ff7f</color><br />
</colors><br />
</syntaxhighlight><br />
<br />
You can then use <textcolor>white</textcolor> within the main skin files to refer to which colour you want. This allows you to easily change all the colouring in the skin by just adding a new XML file to the colors/ folder.<br />
<br />
== Fonts ==<br />
There's one special file called Font.xml. This file contains a list of all fonts the skin uses. <br />
kodi will load all the fonts mentioned in this file from the /myskin/fonts directory first, and if that fails,<br />
will attempt to load them from Kodi/media/fonts. In the event that Kodi is unable to locate the specified font, it will default to "font13". You can modify this file as you like and<br />
add/delete/change fonts. The user friendly font name is referenced by the other xml files mentioned<br />
below.<br />
<br />
<br />
== The Window XML Files ==<br />
The other xml files each define the skin for a single window. They all have the same basic layout, allowing you to place different controls on the window, and define how navigation should operate.<br /><br /><br />
The list of all window .xml files and what they represent is be found in the '''[[Window IDs|Window ID's]]''' section.<br /><br /><br />
The important thing to remember is that each window has a unique identifying number (id). This is how Kodi identifies the window from within the source code. Furthermore, many of the controls within each window should have a unique id as well, unless they're just used as images or labels where navigation is unimportant and Kodi does not need to be able to identify them uniquely. The window id's are all listed in the [[Window IDs|window list]].<br /><br /><br />
The structure of the window .xml files can be found in the '''[[Window Structure]]''' section.<br />
<br /><br /><br />
<br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
<br />
[[Category:Skin_development]]<br />
[[Category:Add-on development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Quick_start_guide&diff=242780Quick start guide2022-08-07T08:34:31Z<p>Uixtung: /* Introduction */</p>
<hr />
<div>{{mininav|[[First time user]]}}<br />
<br />
<br />
= Introduction =<br />
Hello and welcome to {{Kodi}}!<br />
<br />
{{Kodi}} is an [https://en.wikipedia.org/wiki/Open-source_software open source] media centre '''software''' that can play a wide variety of music and video formats in addition to viewing '''[[PVR|Live TV]]''' and using add-ons (plugins) to further enhance your {{kodi}}. The software can be installed on a variety of platforms as detailed on the '''''[[First time user]]''''' wiki page. <br />
<br />
{{Kodi}} is designed with the '''''[[w:Home cinema|Home Theater]]''''' in mind using a '''''[[w:10-foot_user_interface|10-foot user interface]]''''' rather than on a small monitor while you sit at your desk. Because everything is designed with the home theater experience in mind, the best way to interact with {{Kodi}} is with a remote control or keyboard, rather than with a mouse. If it helps, think of {{Kodi}} as the ultimate DVD-player/set-top-box. Be aware that mouse functionality is limited.<br />
<br />
<br />
<section begin="intro" />This guide is designed to point you to the correct information that will assist in correctly setting up your {{kodi}}. We strongly recommend you follow the guides to ensure the correct setup.<section end="intro" /><br />
<br />
''{{red|We strongly urge you to not follow the numerous YouTube video guides as nearly all those guides have been written with the single minded purpose of Piracy and Copyright Infringement. THERE IS NO SUPPORT FOR THAT HERE at {{kodi}}.}}''<br />
<br />
<br />
If you have not already downloaded and installed the {{kodi}} software, return to '''''[[First time user]]''''' and follow the installation instructions for your chosen operating system.<br />
<br />
''{{red|{{Kodi}} does not sell hardware, nor are we affiliated or promote any of the so called "{{kodi}} boxes" that are advertised for sale. We strongly urge you not to purchase these devices as they are normally pre-installed with add-ons used for piracy and copyright infringement, and some have been known to contain malware. The [https://forum.kodi.tv/ {{kodi}} forum] does not provide support for these types of devices.}}''<br />
<br />
= Basic Controls =<br />
Read this page to familiarise yourself with the menu system and other screens in {{kodi}}.<br />
{{see|Basic controls}}<br />
<br />
<br />
<br />
= Library Mode =<br />
;Why do I need a library?<br />
One of the features that makes {{kodi}} so great is the ability to display all types of artwork and metadata (plots, directors, actors etc) in a visually stunning format. <br />
<br />
The Libraries are accessed from the Main Menu using...<br />
*Movies, TV Shows or Music Videos for the Video Library<br />
*Music for the Music Library.<br />
<br />
To use the numerous features that are only possible with a correctly setup library, then your video and/or music collections need to be added to the library to correctly function. <br />
<br />
{{Kodi}} consists of two libraries - Music and Video. The following guides have been created to guide you through the setup process of both.<br />
<br />
{{Index two column<br />
| link name 1 = Guide to Create and Modify your Video Library<br />
| link 1 = HOW-TO:Create_Video_Library<br />
| image 1 = Video.png<br />
| link name 2 = Guide to Create and Modify your Music Library<br />
| link 2 = :HOW-TO:Create_Music_Library<br />
| image 2 = Nuvola apps kscd.png<br />
}}<br />
<br />
<br />
<br />
= File Mode =<br />
If you do not want to create the libraries and take advantage of these features, then you can '''''[[Add-on:Estuary/Settings#Main_Menu_Items|hide Menu items]]''''' and access your media through the inbuilt file browser accessed from the main menu by selecting '''Videos''' then '''Files'''.<br />
<br />
Be aware that using this mode, {{kodi}} becomes a simple media player with limited functionality. There will be no extended artwork and no movie information amongst many other missing features which all require a library to function. In effect, {{kodi}} is a simple file browser similar to Windows Explorer, and will simply allow you to browse your folders and files as set up on your hard drives.<br />
<br />
<br />
= Live TV and Radio =<br />
{{main|PVR}}<br />
With a pre-installed backend PVR Tuner, {{Kodi}} can be used as the front end interface to view and record live TV and radio, similar to a TiVO setup.<br />
<br />
<br />
<br />
= Adding Games =<br />
{{main|Games}}<br />
Note! Games support are not available before Kodi v18 Leia! The Games option allows you to add stand-alone games and games running in emulators which can be launched from Kodi.<br />
<br />
Games does not yet use any library functions and is simply a file browser. New in Kodi v18 Leia is also many an input manager with many game controller settings for configuring gamepads, joysticks, keyboards, and mouses, for use inside those games/emulators that are running natively inside Kodi's runtime.<br />
<br />
<br />
<br />
= {{Kodi}} add-ons =<br />
{{Main|Add-ons|Add-on manager}}<br />
{{#lst:Add-ons|intro}}<br />
<br />
<br />
<br />
= Adding Pictures =<br />
{{main|Pictures}}<br />
The Pictures option allows you to add your home photo collection to {{kodi}} which you can then easily display on your large, high definition TV screen.<br />
<br />
Pictures does not yet use any library functions and is simply a file browser. If you set up either the video or music library, you will be familiar with setting up a source for pictures.<br />
<br />
<br />
<br />
= Using a remote control =<br />
{{main|Remote controls}}<br />
{{#lst:Remote controls|intro}}<br />
<br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:FAQ]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:Music library]]</div>Uixtunghttps://kodi.wiki/index.php?title=Basic_controls&diff=242779Basic controls2022-08-07T05:00:57Z<p>Uixtung: /* Introduction */</p>
<hr />
<div>{{mininav|[[First time user]]}}<br />
<br />
<br />
= Introduction =<br />
'''Welcome new user!''' <section begin="intro" />You have finally installed Kodi on your equipment, launched it, and then probably sat there for a few minutes scratching your head thinking "What is this"? This page will describe the commonly used screens and basic navigation around Kodi. Its aim is to allow you to become familiar with Kodi and prepare you for the upcoming setup pages.<section end="intro" /><br />
<br />
This page will not describe how to load your media. That task is covered in subsequent pages. As with most pages of the wiki, this page assumes you are using the default skin '''[[Add-on:Estuary|Estuary]]'''. If you are using another skin, then you have run before learning to walk, so you should change back until you have at least set up Kodi.<br />
<br />
Kodi has been designed around the ''[https://en.wikipedia.org/wiki/10-foot_user_interface 10 foot interface]'' principle. This means that Kodi is best used with a remote control or keyboard while sitting on your couch watching TV. Mouse support is limited, and disabled in many skins.<br />
<br />
Although this guide applies to all parts of Kodi, some portions have been based on the Video/Movies/TV Shows section of Kodi. To see the specific Basic Controls for Music, see '''''[http://kodi.wiki/view/Music_navigation Music Navigation & Playback]'''''<br />
<br />
<br />
The following image is a screenshot of the Home Screen when Kodi launches. In this screenshot there is media in the library, but you may not have media in your library yet.<br />
<br />
<gallery mode="packed" widths="900px" heights="506px"><br />
File:HomeScreenGuide.jpg<br />
</gallery><br />
{{-}}<br />
<br />
= Power Options =<br />
[[File:Estuary-power-menu.jpg|right|300px]]<br />
Pressing {{keypress|S}} on the keyboard, or by selecting the Power icon in the top left corner of the home screen calls up the Power Options menu. <br />
<br />
Depending on your hardware, the Power Options menu may have more or less options to that shown in the image.<br />
<br />
The options on this menu are from top to bottom:<br />
<br />
;Exit<br />
:Exits Kodi to your operating system.<br />
;Power off system<br />
:Powers down your hardware<br />
;Custom Shutdown Timer<br />
:Kodi will shutdown the hardware at the end of the nominated countdown time. Enter the time interval in minutes.<br />
;Suspend<br />
:Suspends your hardware.<br />
;Hibernate<br />
:Hibernates your hardware.<br />
;Reboot<br />
:Restarts your hardware.<br />
;Log off <ProfileName> user<br />
:If using Profiles, the option to log out the current user and login as a new user is this option. <ProfileName> will display the name of the currently logged in Profile/User.<br />
<br />
<br />
<br />
= Settings =<br />
The Settings Icon in the top left of the screen provides access to the Kodi Settings pages. Most general use settings are contained in these pages. During your travels with Kodi, you will come across mention of the advancedsettings.xml file. This holds advanced Settings for Kodi and can be modified by the user.<br />
<br />
For more information on the Settings pages, {{See|Settings}}<br />
<br />
For more information on the advancedsettings.xml file, {{see|Advancedsettings.xml}}<br />
<br />
<br />
<br />
= Search & Filter =<br />
[[File:GlobalSearch.jpg|right|300px]]<br />
The Global Search function allows you to search your library, add-ons or some on-line sources for information. <br />
<br />
Some of the pictured options will require installation of an add-on. Simply confirm the installation of the add-on when prompted.<br />
<br />
{{see|Add-on:Global Search}}<br />
{{see|Add-on:YouTube}}<br />
{{see|Add-on:ExtendedInfo Script}}<br />
<br />
<br />
There are also Search and Filter functions inside each of the Main Menu options which are accessible from the '''[[Basic_controls#Sideblade_Menu|Sideblade Menu]]'''.<br />
<br />
{{see|Advanced library filtering}}<br />
{{-}}<br />
<br />
<br />
<br />
= Main Menu =<br />
All classes of media are separated into their own menu options. The default classes are listed below. Other skins allow you to add additional menu items for, say, Home Movies, Cartoons, Disney etc. See: '''''[[Custom_home_items|Custom home items]]'''''<br />
<br />
It is possible to remove unwanted menu options and to re-add them at a later date. Very useful for those options that remain unused in your setup such as Live TV, Radio etc. See: '''''[[Add-on:Estuary/Settings#Main_Menu_Items|Hiding Menu items]]'''''<br />
<br />
As each Main Menu option is selected, the Home Page will dynamically update with information relevant for the selected menu option. The full list of available menu options are as follows:<br />
<br />
* '''[[Video_library|Movies]]''' - Enter the movie library and view "All movies, by title"<br />
* '''[[Video_library|TV shows]]''' - Enter the TV show library and view "All TV shows, by title"<br />
* '''[[Music_library|Music]]''' - Enter the music library and select how to view the library- artists, albums, songs, genre, etc<br />
* '''[[Music_library|Music Videos]]''' - Enter the music video library and select how to view the library- artists, albums, songs, genre, etc<br />
* '''[[PVR|Live TV]]''' - With a PVR add-on, access Free To Air Television channels with an EPG (Electronic Program Guide) with Pause/Rewind/Fast Forward and Record facilities<br />
* '''[[PVR|Radio]]''' - With a PVR add-on, access Free To Air Radio Channels with an EPG (Electronic Program Guide)<br />
* '''[[Games]]''' - View your games<br />
* '''[[Add-ons]]''' - Access installed add-ons, such as 'Video-addons', Music add-ons, Program add-ons, etc<br />
* '''[[Pictures]]''' - Shows a basic file-based image viewer, as well as picture-related add-ons.<br />
* '''[[Video_library|Vidoes]]''' - Allows you to access the file system of your video Sources. It includes file views, movie library, TV show library, music video library, playlists, and video related add-ons. Users can also use this to navigate to more '''[[video nodes|nodes]]''' in the library, showing movies or TV shows by year, genre, actor, or even custom created nodes for specific people, moods, etc.<br />
* '''[[Favourites]]''' - Shows all your media that has been tagged as a ''Favourite'' in one easily accessible location.<br />
* '''[[Weather]]''' - Install a weather add-on to display weather forecasts for your chosen area<br />
<br />
= Home Screen =<br />
The term '''Home Screen''' can be used to mean the entire screen as depicted in the image in Section 1 above. If it is prefixed by a menu item, say ''Movies Home Screen'' or ''TV Show Home Screen'', then it refers to the section to the right of the Main Menu. The following information refers to the latter.<br />
<br />
The Home Screen contains a dynamic list of media relevant for the selected main menu item. The image above displays the following items:<br />
<br />
;Categories- also known as Nodes<br />
:A quick link to the available Movie Nodes. It allows you to navigate your Movie library via Genres, Title, Year, Country Actors, Directors, Studios, Sets, Tags and Recently added<br />
:{{see also|Video nodes|Music nodes}}<br />
<br />
;Poster views<br />
:Displays movie titles that fit into the following criteria:<br />
:*In-progress<br />
:*Recently added<br />
:*Unwatched movies<br />
:*Random selection<br />
:*Movie Sets<br />
<br />
;Genres<br />
:Quck icon selection of available Genre's in the library.<br />
<br />
;Studios<br />
:Quick icon selection of available Studios in the library.<br />
<br />
<br />
The other classes in the main menu have a similar selection but designed and named to be most relevant for their class of media.<br />
<br />
<br />
<br />
= '''Sideblade Menu''' =<br />
[[File:EstuarySideBarMenu_small.gif|right]]<br />
[[File:Estuary-player-sidebar-video.jpg|210px|right]]<br />
<br />
'''{{resize|1.4em|{{red|The Sideblade Menu is a critical menu that holds numerous options. It is available in most locations.}}}}'''<br />
<br />
The Sideblade Menu is accessible from '''most''' screens in Kodi.<br />
<br />
{{red|The menu options shown below are for the Movies section. The options will vary for the other media classes}}<br />
<br />
<section begin="SidebladeMenu" />You can invoke the sideblade using one of the following methods:<br />
* pressing the {{keypress|left}} key on your remote control<br />
* pressing the {{keypress|left}} key on a keyboard<br />
* bringing the mouse cursor to the left border of the screen.<section end="SidebladeMenu" /><br />
<br />
<br />
The options in the Sideblade Menu vary. The following is the menu in the Movies listing.<br />
<br />
<br />
'''Available Options'''<br />
<br />
;ViewType<br />
:Change current library view.<br />
<br />
;Sort by<br />
:Select how the list of Movies/TV Shows/Episodes are sorted- eg ''Title, PlayCount'' etc<br />
<br />
;Order<br />
:Once the ''Sort by'' is selected, do you want the order ''Ascending'' or ''Descending''<br />
<br />
;Filter<br />
:Allows you to filter your list on certain criteria- eg ''Director, Actor, Ratings, Tags'' etc '''''See: [[Advanced library filtering]]'''''<br />
<br />
;All Videos / Watched / Unwatched<br />
:Global toggle that allows you to select what is shown in the list - ''All Videos, Watched'' or ''Unwatched'' videos only<br />
<br />
;Update library<br />
:Scans the library for newly added Movies, TV Shows, Episodes and Music Videos in the Video Library.<br />
<br />
;Go to playlists<br />
:Will open the currently playing Party Mode playlist<br />
<br />
;Bottom Icons- From Left to right<br />
*Pause<br />
*Stop<br />
*Skip to next video<br />
*Open Fullscreen mode - for video this returns you to the playing video and for music this opens the Now Playing/Visualisation window.<br />
<br />
<br />
To see the Sidebar Menu for '''Music''' see '''''[[Music_navigation#Sideblade_Menu|Music Sideblade Menu]]'''''<br />
{{-}}<br />
<br />
<br />
<br />
= '''Context Menu''' =<br />
'''{{resize|1.4em|{{red|The Context Menu is a critical menu that holds numerous options. It is available in most locations.}}}}'''<br />
<br />
The '''Context Menu''' allows quick access to a limited set of functions relevant for the currently selected item. <br />
<br />
<section begin="ContextMenu" />After highlighting an item (eg a movie) the Context Menu can be invoked by:<br />
* long press the {{keypress|OK}} key on your remote control<br />
* Press letter {{keypress|C}} on a keyboard<br />
* right-clicking with the mouse<section end="ContextMenu" /><br />
<br />
References to Context Menus are scattered throughout the wiki on relevant pages and can be found easily enough in Kodi. As there are many, many types of context menus, it would be uneconomical to list them all here.<br />
<br />
The following are a few examples of the context menu.<br />
<gallery mode="packed-overlay" widths="500px" heights="283px"><br />
File:MovieSets02.jpg|The context menu in the ''Movie library''.<br />
File:EstuaryContextmenu3.png|The context menu in the ''Video file browser''.<br />
File:EstuaryContextmenu2.png|The context menu in the [[Add-on:YouTube|YouTube]] add-on.<br />
</gallery><br />
<br />
<br />
<br />
= '''Information Page''' =<br />
[[File:Artwork-Actors01.jpg|right|500px]]<br />
<section begin="InformationPage" />The Information Page is available for each title in the movies, TV show and Music Video library, and for each artist, album and song in the music library. An Information Page may also be available for each recording in the PVR library.<br />
<br />
This screen will display the metadata for the title. A number of options are available along the bottom of the page. What is displayed will depend on the skin in use and which class of media is displayed (Movie, TV Show, Music Video, Music, PVR)<section end="InformationPage" /><br />
<br />
This is a Library only feature and will not work on titles not in the library. Attempting to perform this in the File Browser using Videos>Files will commence the scrape process for that individual title. '''''See: [[Updating_or_removing_videos|Update Video Library]]'''''<br />
<br />
<br />
To access the Information Page, navigate to, and highlight the required title. Once highlighted use one of the following methods to view the Information Page:<br />
*Press {{keypress|i}} on a remote control<br />
*Press {{keypress|i}} on a keyboard<br />
*Using the '''''[[Basic_controls#Context_Menu|Context Menu]]''''', select '''Information'''<br />
<br />
<br />
Available option buttons. '''Requires scrolling left/right to access all buttons'''<br />
;Actors image<br />
:Clicking on the image of an actor will bring up a listing of other titles, in your library, the actor appears in<br />
:Pressing {{keypress|up}} will provide additional information from online sources. If the '''''[[Add-on:ExtendedInfo_Script|ExtendedInfo add-on]]''''' is not installed, you will be asked to install it<br />
;Play<br />
:Commence playback of the title<br />
;Your Rating<br />
:Use this option to apply your personal rating to your media. The display of the User Rating depends upon the library view in use. It is displayed at the top of the Poster as a blue star containing the rating in Poster View. Each type of view displays it differently.<br />
;Trailer<br />
:Commence playback of the '''''[[Trailers|Trailer]]'''''. If no trailer is available, either the button will not be displayed or you will be offered to install the YouTube add-on to view online trailers.<br />
;Show Fanart<br />
:Full screen display of the fanart attached to the title<br />
;Same director<br />
:Displays a listing of other titles in the library from the same director <br />
;Movie Set<br />
:Open the '''''[[Movie_sets|Movie Set]]''''' that the current movie belongs to. Only visible when the movie is part of a set.<br />
;Choose art <br />
:Settings page that allows the manual selection of '''''[[Artwork]]'''''<br />
;Refresh<br />
:Allows you to rescan or rescrape the title. Useful if you have modified information in the NFO File, or you would like to re-scrape updated information from the site of the Information provider. '''''See: [[Updating_or_removing_videos|Update Video Library]]'''''<br />
:Highlighting this button will also display the path to the playable file that {{kodi}} has recorded in the library database. Useful to track down duplicate entries.<br />
<br />
<br />
<br />
= Now Playing Controls =<br />
The Now Playing Controls are covered in more detail in the following two sections...<br />
<br />
;Music Player Controls<br />
:'''''See: [[Music_navigation|Music Navigation & Playback]]'''''<br />
<br />
;Video Player Controls<br />
:'''''See: [[Video_playback|Video Playback]]'''''<br />
<br />
<br />
<br />
= On Screen Keyboard =<br />
[[File:OnScreenKeyboard.jpg|right|500px]]<br />
When required, Kodi will display an on-screen keyboard to facilitate data entry. No special selection is required by the user as the keyboard will appear where required.<br />
<br />
The on-screen keyboard can be used in the following ways:<br />
*Remote control<br />
*Physical keyboard<br />
*Mouse presses<br />
{{-}}<br />
<br />
<br />
<br />
= Remote Controls =<br />
Kodi is best used with a Remote Control. Many types of Remote Controls can be used as listed on the following page.<br />
{{see|Remote controls}}<br />
<br />
<br />
<br />
= Keyboard Controls =<br />
If you are using a physical keyboard, the following page lists available keystrokes to control Kodi.<br />
{{see|Keyboard controls}}<br />
<br />
<br />
<br />
{{top}}<br />
<br />
<div style="{{linear-gradient|left|#ffdddd, #ddffdd 50%, #ddddff}}">{{next|[[Video_library|Video Library Main Menu]]}} </div><br />
<br /><br />
<div style="{{linear-gradient|left|#f5d3ff, #12b2e7}}">{{next|[[Music_library|Music Library Main Menu]]}} </div><br />
<br />
<br />
{{updated|19}}<br />
[[Category:Karellen]]<br />
[[Category:First time user]]<br />
[[Category:Quick Start Guide]]</div>Uixtunghttps://kodi.wiki/index.php?title=Add-on_settings_conversion&diff=242767Add-on settings conversion2022-08-05T19:22:18Z<p>Uixtung: /* Structure */ formatting</p>
<hr />
<div>{{mininav|[[Development]]|[[Add-on development]]}}<br />
{{see also|Python development}}<br />
<br />
=Converting addon settings=<br />
<br />
==Preface==<br />
As of Kodi 18 Leia it is possible to write your addon settings in the same setting format as Kodi uses.<br />
Due to many initial issues, it is not recommended to convert your settings if your addon is in the Leia addon repo.<br />
<br />
In Kodi 19 Matrix, those bugs have been fixed, so we recommend to convert your addon settings if you plan to submit your addon to the Matrix addon repo (or higher).<br />
<br />
==Structure==<br />
<br />
The structure of your settings.xml file should look like this<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" ?><br />
<settings version="1"><br />
<section id="my.addon.id"><br />
<category id="general" label="" help=""><br />
<group id="1" label=""><br />
<setting id="" type="" label="" help=""><br />
<control type="" format=""/><br />
</setting><br />
</group><br />
</category><br />
</section><br />
</settings><br />
</syntaxhighlight><br />
<br />
* The '''<settings>''' tag '''must''' have a '''version="1"''' attribute, or the '''<section>''' tag will not be supported.<br />
* Your addon settings file can only have one '''<section>''' tag.<br> The id should be the id of your addon. The use of multiple sections is reserved for Kodi's main settings.xml file.<br />
* You can use multiple '''<category>''' tags, just like in the old addon settings format.<br> The id of a category needs to be a string.<br />
* The '''<group>''' tag is a replacement for the old '''sep''' and '''lsep''' types.<br> You can define multiple groups in order to group a number of settings.<br />
<br />
==Level==<br />
<br />
Similar to Kodi settings, addons can now define a setting level for every setting.<br><br />
This will show or hide certain settings based on the settings level the user has selected (Basic, Standard, Advanced, Expert).<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="" type="" label="" help=""><br />
<level>0</level><br />
</setting><br />
</syntaxhighlight><br />
<br />
The various levels are defined as such:<br />
* 0 - Basic<br />
* 1 - Standard<br />
* 2 - Advanced<br />
* 3 - Expert<br />
* 4 - Internal (will never be shown in the GUI)<br />
<br />
=Setting types=<br />
<br />
==type="text"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="text" id="test01" label="32001" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format|<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test01" type="string" label="32001" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="edit" format="string"><br />
<heading>32001</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="text" id="test02" label="32002" default="" option="hidden"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test02" type="string" label="32002" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="edit" format="string"><br />
<heading>32002</heading><br />
<hidden>true</hidden><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="text" id="test03" label="32003" default="" option="urlencoded"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test03" type="urlencodedstring" label="32003" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="edit" format="urlencoded"><br />
<heading>32003</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="ipaddress"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="ipaddress" id="test04" label="32004"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test04" type="string" label="32004" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="edit" format="ip"><br />
<heading>32004</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="number"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="number" id="test05" label="32005"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test05" type="integer" label="32005" help=""><br />
<level>0</level><br />
<default>0</default><br />
<control type="edit" format="integer"><br />
<heading>32005</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
==type="date"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="date" id="test06" label="32006" default="2015-03-12"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test06" type="date" label="32006" help=""><br />
<level>0</level><br />
<default>2015-03-12</default><br />
<control type="button" format="date"><br />
<heading>32006</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="time"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="time" id="test07" label="32007" default="13:13"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test07" type="time" label="32007" help=""><br />
<level>0</level><br />
<default>13:13</default><br />
<control type="button" format="time"><br />
<heading>32007</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="bool"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="bool" id="test08" label="32008" default="false"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test08" type="boolean" label="32008" help=""><br />
<level>0</level><br />
<default>false</default><br />
<control type="toggle"/><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="select"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="select" id="test09" label="32009" lvalues="11|12|13|14"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test09" type="integer" label="32009" help=""><br />
<level>0</level><br />
<default>0</default><br />
<constraints><br />
<options><br />
<option label="11">0</option><br />
<option label="12">1</option><br />
<option label="13">2</option><br />
<option label="14">3</option><br />
</options><br />
</constraints><br />
<control type="list" format="string"><br />
<heading>32009</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="select" id="test10" label="32010" values="aa|bb|cc|dd"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test10" type="string" label="32010" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<options><br />
<option>aa</option><br />
<option>bb</option><br />
<option>cc</option><br />
<option>dd</option><br />
</options><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="list" format="string"><br />
<heading>32010</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
==type="addon"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="addon" id="test11" label="32011" default="" addontype="xbmc.metadata.scraper.movies"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test11" type="addon" label="32011" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<addontype>xbmc.metadata.scraper.movies</addontype><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="addon"><br />
<heading>32011</heading><br />
<show more="true" details="true">installed</show><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="addon" id="test12" label="32012" default="" addontype="xbmc.metadata.scraper.movies" multiselect="true"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test12" type="list[addon]" label="32012" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<addontype>xbmc.metadata.scraper.movies</addontype><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="addon"><br />
<heading>32012</heading><br />
<show more="true" details="true">installed</show><br />
<multiselect>true</multiselect><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="enum"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="enum" id="test13" label="32013" lvalues="11|12|13|14"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test13" type="integer" label="32013" help=""><br />
<level>0</level><br />
<default>0</default><br />
<constraints><br />
<options><br />
<option label="11">0</option><br />
<option label="12">1</option><br />
<option label="13">2</option><br />
<option label="14">3</option><br />
</options><br />
</constraints><br />
<control type="spinner" format="string"/><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="enum" id="test14" label="32014" values="aa|bb|cc|dd"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test14" type="integer" label="32014" help=""><br />
<level>0</level><br />
<default>0</default><br />
<constraints><br />
<options><br />
<option label="aa">0</option><br />
<option label="bb">1</option><br />
<option label="cc">2</option><br />
<option label="dd">3</option><br />
</options><br />
</constraints><br />
<control type="spinner" format="string"/><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
==type="labelenum"==<br />
in case you use lvalues in a labelenum control, the saved value will now be the string id, instead of the localized string.<br />
please adapt your python code for this.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="labelenum" id="test15" label="32015" lvalues="11|12|13|14"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test15" type="string" label="32015" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<options><br />
<option label="11">11</option><br />
<option label="12">12</option><br />
<option label="13">13</option><br />
<option label="14">14</option><br />
</options><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="spinner" format="string"/><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="labelenum" id="test16" label="32016" values="bb|aa|dd|cc" sort="yes"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test16" type="string" label="32016" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<options sort="ascending"><br />
<option label="bb">bb</option><br />
<option label="aa">aa</option><br />
<option label="dd">dd</option><br />
<option label="cc">cc</option><br />
</options><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="spinner" format="string"/><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
note: for labelenum settings, the label attribute for the options is optional.<br />
if you use it, it can either be a hardcoded string (label="foobar") or a localized id (label="32085").<br />
<br />
==type="slider"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="slider" id="test17" label="32017" default="20" range="5,5,100" option="int"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test17" type="integer" label="32017" help=""><br />
<level>0</level><br />
<default>20</default><br />
<constraints><br />
<minimum>5</minimum><br />
<step>5</step><br />
<maximum>100</maximum><br />
</constraints><br />
<control type="slider" format="integer"><br />
<popup>false</popup><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="slider" id="test18" label="32018" default="0.5" range="0.0,0.1,1.0" option="float"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test18" type="number" label="32018" help=""><br />
<level>0</level><br />
<default>0.5</default><br />
<constraints><br />
<minimum>0.0</minimum><br />
<step>0.1</step><br />
<maximum>1.0</maximum><br />
</constraints><br />
<control type="slider" format="number"><br />
<popup>false</popup><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="slider" id="test19" label="32019" default="20" range="0,1,100" option="percent"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test19" type="integer" label="32019" help=""><br />
<level>0</level><br />
<default>20</default><br />
<constraints><br />
<minimum>0</minimum><br />
<step>1</step><br />
<maximum>100</maximum><br />
</constraints><br />
<control type="slider" format="percentage"><br />
<popup>false</popup><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="file"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="file" id="test20" label="32020" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test20" type="path" label="32020" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="file"><br />
<heading>32020</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="audio"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="audio" id="test21" label="32021" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test21" type="path" label="32021" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<masking>audio</masking><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="file"><br />
<heading>32021</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="video"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="video" id="test22" label="32022" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test22" type="path" label="32022" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<masking>video</masking><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="file"><br />
<heading>32022</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="image"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="image" id="test23" label="32023" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test23" type="path" label="32023" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<masking>image</masking><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="image"><br />
<heading>32023</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="executable"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="executable" id="test24" label="32024" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test24" type="path" label="32024" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<masking>executable</masking><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="file"><br />
<heading>32024</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="folder"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test25" label="32025" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test25" type="path" label="32025" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32025</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test26" label="32026" default="" option="writeable"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test26" type="path" label="32026" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32026</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test27" label="32027" default="" source="videos"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test27" type="path" label="32027" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>videos</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32027</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test28" label="32028" default="" source="music"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test28" type="path" label="32028" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>music</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32028</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test29" label="32029" default="" source="pictures"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test29" type="path" label="32029" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>pictures</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32029</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test30" label="32030" default="" source="programs"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test30" type="path" label="32030" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>programs</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32030</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test31" label="32031" default="" source="files"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test31" type="path" label="32031" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>files</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32031</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="folder" id="test32" label="32032" default="" source="local"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test32" type="path" label="32032" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<sources><br />
<source>local</source><br />
</sources><br />
<writable>false</writable><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="path"><br />
<heading>32032</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
==type="action"==<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="action" id="test33" label="32033" action="RunScript(script.globalsearch)" option="close"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test33" type="action" label="32033" help=""><br />
<level>0</level><br />
<data>RunScript(script.globalsearch)</data><br />
<control type="button" format="action"><br />
<close>true</close><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="action" id="test34" label="32034" action="RunScript(weather.yahoo,Location1)" default=""/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test34" type="string" label="32034" help=""><br />
<level>0</level><br />
<default/><br />
<constraints><br />
<allowempty>true</allowempty><br />
</constraints><br />
<control type="button" format="action"><br />
<data>RunScript(weather.yahoo,Location1)</data><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
You can use the variables <code>$ID</code> and <code>$CWD</code> in your actions. <code>$ID</code> will be replaced by your add-on ID and <code>$CWD</code> with your add-on path:<br />
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format - Add-on ID |<syntaxhighlight lang="xml" enclose="div"><br />
<setting><br />
<control type="button" format="action"><br />
<data>RunPlugin(plugin://$ID/foo)</data><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
==type="fileenum"==<br />
fileenum type settings (which was basically a spincontrol listing all items) are no longer supported.<br />
these settings can be converted into a file or folder browser.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="fileenum" id="test35" label="32035" values="resources"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test35" type="path" label="32035" help=""><br />
<level>0</level><br />
<default>/home/ronie/.kodi/addons/script.settings-convert/resources</default><br />
<control type="button" format="file"><br />
<heading>32035</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="fileenum" id="test36" label="32036" values="resources" mask="/"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test36" type="path" label="32036" help=""><br />
<level>0</level><br />
<default>/home/ronie/.kodi/addons/script.settings-convert/resources</default><br />
<control type="button" format="path"><br />
<heading>32036</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting type="fileenum" id="test37" label="32037" values="resources" mask="*.txt"/><br />
</syntaxhighlight><br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|New Setting Format |<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test37" type="path" label="32037" help=""><br />
<level>0</level><br />
<default>/home/ronie/.kodi/addons/script.settings-convert/resources</default><br />
<constraints><br />
<masking>*.txt</masking><br />
</constraints><br />
<control type="button" format="file"><br />
<heading>32037</heading><br />
</control><br />
</setting><br />
</syntaxhighlight>}}<br />
<br />
==type="colorbutton"==<br />
colorbutton type settings allow a user to open a color picker dialog to select a color from Kodi's default color list.<br />
When the color has been selected, you can preview the colour and the hex code.<br />
<br />
{{note|Available from Kodi v20}}<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<setting id="test36.color" type="string" label="32035" help=""><br />
<level>0</level><br />
<default>FF000000</default> <!-- Black --><br />
<control type="colorbutton" /><br />
</setting><br />
</syntaxhighlight><br />
<br />
=Subsetting=<br />
if you wish to define a subsetting, you can use the '''parent''' attribute with the id of the parent setting as the value.<br />
<syntaxhighlight lang="xml" enclose="div"><setting id="test37" type="path" label="32037" help="" parent="test36"></syntaxhighlight><br />
<br />
<br />
=Conditions=<br />
<br />
==visible==<br />
if a setting should always be hidden, you can add this to the setting<br />
<syntaxhighlight lang="xml" enclose="div"><visible>false</visible></syntaxhighlight><br />
<br />
if a settings should be conditionallly visible, add a dependencies section to your setting<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="visible" setting=""></dependency><br />
</dependencies></syntaxhighlight><br />
<br />
==enable==<br />
if a setting should always be disabled, you can add this to the setting<br />
<syntaxhighlight lang="xml" enclose="div"><enable>false</enable></syntaxhighlight><br />
<br />
if a settings should be conditionally enabled, add a dependencies section to your setting<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" setting=""></dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
== infobool ==<br />
enabling based on a boolean condition<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" on="property" name="infobool">system.platform.android</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
== eq / lt / gt ==<br />
<br />
'''eq'''<br />
<br />
compare to a bool value of another setting<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" setting="test01">true</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
compare to a int value of another setting<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" setting="test01">5</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
compare to a string value of another setting<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" setting="test01">something</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
'''!eq'''<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" operator="!is" setting="test01">true</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" operator="!is" setting="test01">0</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" operator="!is" setting="test01"></dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
'''lt'''<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" operator="lt" setting="test01">5</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
'''gt'''<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable" operator="gt" setting="test01">0</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
== and / or==<br />
multiple dependencies can be defined as such<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable"><br />
<and><br />
<condition setting=""></condition><br />
<condition setting=""></condition><br />
</and><br />
</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<dependencies><br />
<dependency type="enable"><br />
<or><br />
<condition setting=""></condition><br />
<condition setting=""></condition><br />
</or><br />
</dependency><br />
</dependencies><br />
</syntaxhighlight><br />
<br />
<br />
[[Category:Add-ons|*]]<br />
[[Category:Settings]]<br />
[[Category:Add-on development]]<br />
[[Category:Development]]</div>Uixtunghttps://kodi.wiki/index.php?title=User_talk:Uixtung&diff=242632User talk:Uixtung2022-07-21T16:43:57Z<p>Uixtung: Blanked the page</p>
<hr />
<div></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242628HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-20T20:10:59Z<p>Uixtung: screenshots</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
<gallery widths=400px heights=160px><br />
File:Walltvposters-default.png|TV Wall view without mods<br />
File:Walltvposters-mod4.png|TV Wall view with mods 1-4<br />
File:Walltvposters-mod5.png|TV Wall view with mods 1-3 & 5<br />
</gallery><br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml'' (same section as above)<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the control above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")|String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
This looks best if you ''don't'' do mod 4. You can always see TotalEpisodes on the info page for the TV Show.<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=File:Walltvposters-mod5.png&diff=242627File:Walltvposters-mod5.png2022-07-20T19:47:09Z<p>Uixtung: </p>
<hr />
<div>TV Wall view with mods 1-3 & 5</div>Uixtunghttps://kodi.wiki/index.php?title=File:Walltvposters-mod4.png&diff=242626File:Walltvposters-mod4.png2022-07-20T19:45:09Z<p>Uixtung: </p>
<hr />
<div>TV Wall view with mods 1-4</div>Uixtunghttps://kodi.wiki/index.php?title=File:Walltvposters-default.png&diff=242625File:Walltvposters-default.png2022-07-20T19:43:26Z<p>Uixtung: </p>
<hr />
<div>TV Wall view without mods</div>Uixtunghttps://kodi.wiki/index.php?title=Smart_playlists/Examples&diff=242621Smart playlists/Examples2022-07-18T23:34:14Z<p>Uixtung: /* TV Shows */</p>
<hr />
<div>{{:Smart_playlists/Contents}}<br />
{{mininav|[[Playlists]] | [[Smart playlists]] }}<br />
<br />
<br />
<br />
Examples of XSP code for Smart Playlists.<br />
<br />
<br />
= Movies =<br />
<br />
===In progress movies===<br />
Moives that are still ''in progress'' ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>In progress movies</name><br />
<match>all</match><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
===Last played movies (history)===<br />
Not ''in progress'' movies with a ''play count'' bigger than 0 ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Last played movies (history)</name><br />
<match>all</match><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Movies with a specific subtitle language ===<br />
Movies that contain Swedish (swe) internal subtitles.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Movies with Swedish subs</name><br />
<match>all</match><br />
<rule field="subtitlelanguage" operator="is"><br />
<value>swe</value><br />
</rule><br />
<group>none</group><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== One random movie ===<br />
Only ''one'' movie is added to the playlist. This isn't possible to create in the GUI because the lower limit is 10 (or at least the limit needs to be edited afterward).<br /><br />
Even though the limit is only ''one'' you still need to set ''random'' order.<br />
<br />
Though the difference between a playlist containing the GUI minimum 10 or edited to contain only 1 isn't significant. Pressing play on both of them will play a random movie. The benefits with a playlist only containing one movie is that you'll only be presented with one if you open the playlist, or that you can queue 1 random movie.<br />
<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Random movie</name><br />
<match>all</match><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>1</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
= TV Shows =<br />
<br />
=== Last played TV shows ===<br />
TV shows that've been played in the last ''3 months'' ordered by ''last played'' with ''play count 0''.<br />
<br />
The ''play count'' setting makes it so if all episodes have been watched it doesn't show up, but as soon new unplayed episodes or seasons are scraped the TV Show will show up again in the playlist.<br />
<br />
If you want to nudge yourself from binging TV shows sort last played in reverse by setting <order direction> to ''ascending''<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="tvshows"><br />
<name>Last played TV shows</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>3 months</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Not played TV Show in the last 6 days ===<br />
TV shows that haven't been played in the last ''6 days'' ordered by ''last played'' ascending order.<br />
<br />
This playlist is great to force yourself into watching shows weekly.<br><br />
Binding this playlist to a remote button makes it even easier to stick to it.<br><br />
Having the rule ''last played inthelast 24 weeks'' is good if you're not sure if you wanna drop a show or want to take a break between seasons.<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="tvshows"><br />
<name>NPTVIL X days</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="notinthelast"><br />
<value>6 days</value><br />
</rule><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>24 weeks</value><br />
</rule> <br />
<rule field="inprogress" operator="true" /> <br />
<order direction="ascending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
= Episodes =<br />
<br />
=== In progress episodes ===<br />
Episodes that are still ''in progress'' from the last ''2 weeks'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>In progress episodes</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Last played episodes (history) ===<br />
Not ''in progress'' episodes and with a ''play count'' bigger than 0 from the last ''6 months'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Last played episodes (history)</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>6 months</value><br />
</rule><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from a TV show ===<br />
''10 random'' episodes with a ''play count of 0'' from ''The Simpsons''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - The Simpsons</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from several TV shows ===<br />
''10 random'' episodes with a ''play count of 0'' (i.e. unplayed) from six different shows. Though as it's random this can create a list with two to ten episodes of the same show in a row. <br />
<br />
If you specifically want to watch 6 random episodes from 6 different shows you could create playlists that are limited to 1 episode and 1 show (see [[Smart_playlists#One_random_movie|One random movie]] example). Then you queue the 6 playlists.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - AAFFSS</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>American Dad</value><br />
<value>Archer</value><br />
<value>Family Guy</value><br />
<value>Futurama</value><br />
<value>South Park</value><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
=== TV show with specific episode names ===<br />
A playlist with The Simpsons' ''Treehouse'' of Terror episodes.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>The Simpsons - Treehouse of Horror</name><br />
<match>all</match><br />
<rule field="title" operator="contains"><br />
<value>Treehouse</value><br />
</rule><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Music Videos =<br />
<br />
<br />
<br />
<br />
= Songs =<br />
<br />
=== Recently played songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Recently Played Songs</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Rock music from the 1970s ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Rock Music from the 1970s</name><br />
<match>all</match><br />
<rule field="genre" operator="is"><br />
<value>Rock</value><br />
</rule><br />
<rule field="year" operator="greaterthan"><br />
<value>1969</value><br />
</rule><br />
<rule field="year" operator="lessthan"><br />
<value>1980</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
=== Top 100 songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Top 100 Songs</name><br />
<match>all</match><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">playcount</order><br />
<limit>100</limit><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Album =<br />
<br />
=== Albums By Label ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="albums"><br />
<name>DECCA</name><br />
<match>all</match><br />
<rule field="label" operator="is"><br />
<value>DECCA</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
<br />
= Artists =<br />
<br />
<br />
<br />
<br />
<br />
<br />
{{top}}<br />
<br />
{{updated|19}}<br />
<br />
[[Category:Karellen]]<br />
[[Category:Music library]]<br />
[[Category:Video library]]</div>Uixtunghttps://kodi.wiki/index.php?title=Smart_playlists/Examples&diff=242620Smart playlists/Examples2022-07-18T23:20:17Z<p>Uixtung: /* Last played TV shows */</p>
<hr />
<div>{{:Smart_playlists/Contents}}<br />
{{mininav|[[Playlists]] | [[Smart playlists]] }}<br />
<br />
<br />
<br />
Examples of XSP code for Smart Playlists.<br />
<br />
<br />
= Movies =<br />
<br />
===In progress movies===<br />
Moives that are still ''in progress'' ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>In progress movies</name><br />
<match>all</match><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
===Last played movies (history)===<br />
Not ''in progress'' movies with a ''play count'' bigger than 0 ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Last played movies (history)</name><br />
<match>all</match><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Movies with a specific subtitle language ===<br />
Movies that contain Swedish (swe) internal subtitles.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Movies with Swedish subs</name><br />
<match>all</match><br />
<rule field="subtitlelanguage" operator="is"><br />
<value>swe</value><br />
</rule><br />
<group>none</group><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== One random movie ===<br />
Only ''one'' movie is added to the playlist. This isn't possible to create in the GUI because the lower limit is 10 (or at least the limit needs to be edited afterward).<br /><br />
Even though the limit is only ''one'' you still need to set ''random'' order.<br />
<br />
Though the difference between a playlist containing the GUI minimum 10 or edited to contain only 1 isn't significant. Pressing play on both of them will play a random movie. The benefits with a playlist only containing one movie is that you'll only be presented with one if you open the playlist, or that you can queue 1 random movie.<br />
<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Random movie</name><br />
<match>all</match><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>1</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
= TV Shows =<br />
<br />
=== Last played TV shows ===<br />
TV shows that've been played in the last ''3 months'' ordered by ''last played'' with ''play count 0''.<br />
<br />
The ''play count'' setting makes it so if all episodes have been watched it doesn't show up, but as soon new unplayed episodes or seasons are scraped the TV Show will show up again in the playlist.<br />
<br />
If you want to nudge yourself from binging TV shows sort last played in reverse by setting <order direction> to ''ascending''<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="tvshows"><br />
<name>Last played TV shows</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>3 months</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
= Episodes =<br />
<br />
=== In progress episodes ===<br />
Episodes that are still ''in progress'' from the last ''2 weeks'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>In progress episodes</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Last played episodes (history) ===<br />
Not ''in progress'' episodes and with a ''play count'' bigger than 0 from the last ''6 months'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Last played episodes (history)</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>6 months</value><br />
</rule><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from a TV show ===<br />
''10 random'' episodes with a ''play count of 0'' from ''The Simpsons''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - The Simpsons</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from several TV shows ===<br />
''10 random'' episodes with a ''play count of 0'' (i.e. unplayed) from six different shows. Though as it's random this can create a list with two to ten episodes of the same show in a row. <br />
<br />
If you specifically want to watch 6 random episodes from 6 different shows you could create playlists that are limited to 1 episode and 1 show (see [[Smart_playlists#One_random_movie|One random movie]] example). Then you queue the 6 playlists.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - AAFFSS</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>American Dad</value><br />
<value>Archer</value><br />
<value>Family Guy</value><br />
<value>Futurama</value><br />
<value>South Park</value><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
=== TV show with specific episode names ===<br />
A playlist with The Simpsons' ''Treehouse'' of Terror episodes.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>The Simpsons - Treehouse of Horror</name><br />
<match>all</match><br />
<rule field="title" operator="contains"><br />
<value>Treehouse</value><br />
</rule><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Music Videos =<br />
<br />
<br />
<br />
<br />
= Songs =<br />
<br />
=== Recently played songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Recently Played Songs</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Rock music from the 1970s ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Rock Music from the 1970s</name><br />
<match>all</match><br />
<rule field="genre" operator="is"><br />
<value>Rock</value><br />
</rule><br />
<rule field="year" operator="greaterthan"><br />
<value>1969</value><br />
</rule><br />
<rule field="year" operator="lessthan"><br />
<value>1980</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
=== Top 100 songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Top 100 Songs</name><br />
<match>all</match><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">playcount</order><br />
<limit>100</limit><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Album =<br />
<br />
=== Albums By Label ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="albums"><br />
<name>DECCA</name><br />
<match>all</match><br />
<rule field="label" operator="is"><br />
<value>DECCA</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
<br />
= Artists =<br />
<br />
<br />
<br />
<br />
<br />
<br />
{{top}}<br />
<br />
{{updated|19}}<br />
<br />
[[Category:Karellen]]<br />
[[Category:Music library]]<br />
[[Category:Video library]]</div>Uixtunghttps://kodi.wiki/index.php?title=Smart_playlists/Examples&diff=242619Smart playlists/Examples2022-07-18T23:08:17Z<p>Uixtung: /* One random movie */</p>
<hr />
<div>{{:Smart_playlists/Contents}}<br />
{{mininav|[[Playlists]] | [[Smart playlists]] }}<br />
<br />
<br />
<br />
Examples of XSP code for Smart Playlists.<br />
<br />
<br />
= Movies =<br />
<br />
===In progress movies===<br />
Moives that are still ''in progress'' ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>In progress movies</name><br />
<match>all</match><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
===Last played movies (history)===<br />
Not ''in progress'' movies with a ''play count'' bigger than 0 ordered by ''last played''.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Last played movies (history)</name><br />
<match>all</match><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Movies with a specific subtitle language ===<br />
Movies that contain Swedish (swe) internal subtitles.<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Movies with Swedish subs</name><br />
<match>all</match><br />
<rule field="subtitlelanguage" operator="is"><br />
<value>swe</value><br />
</rule><br />
<group>none</group><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== One random movie ===<br />
Only ''one'' movie is added to the playlist. This isn't possible to create in the GUI because the lower limit is 10 (or at least the limit needs to be edited afterward).<br /><br />
Even though the limit is only ''one'' you still need to set ''random'' order.<br />
<br />
Though the difference between a playlist containing the GUI minimum 10 or edited to contain only 1 isn't significant. Pressing play on both of them will play a random movie. The benefits with a playlist only containing one movie is that you'll only be presented with one if you open the playlist, or that you can queue 1 random movie.<br />
<br />
<syntaxhighlight lang=xml><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="movies"><br />
<name>Random movie</name><br />
<match>all</match><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>1</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
= TV Shows =<br />
<br />
=== Last played TV shows ===<br />
TV shows that've been played in the last ''3 months'' ordered by ''last played'' with ''play count 0''.<br />
<br />
The ''play count'' setting makes it so if all episodes have been watched it doesn't show up, but as soon new unplayed episodes or seasons are scraped the TV Show will show up again in the playlist.<br />
<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="tvshows"><br />
<name>Last played TV shows</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>3 months</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
= Episodes =<br />
<br />
=== In progress episodes ===<br />
Episodes that are still ''in progress'' from the last ''2 weeks'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>In progress episodes</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<rule field="inprogress" operator="true" /><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Last played episodes (history) ===<br />
Not ''in progress'' episodes and with a ''play count'' bigger than 0 from the last ''6 months'' ordered by ''last played''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Last played episodes (history)</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>6 months</value><br />
</rule><br />
<rule field="inprogress" operator="false" /><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from a TV show ===<br />
''10 random'' episodes with a ''play count of 0'' from ''The Simpsons''.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - The Simpsons</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Random unplayed episodes from several TV shows ===<br />
''10 random'' episodes with a ''play count of 0'' (i.e. unplayed) from six different shows. Though as it's random this can create a list with two to ten episodes of the same show in a row. <br />
<br />
If you specifically want to watch 6 random episodes from 6 different shows you could create playlists that are limited to 1 episode and 1 show (see [[Smart_playlists#One_random_movie|One random movie]] example). Then you queue the 6 playlists.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>Random episodes - AAFFSS</name><br />
<match>all</match><br />
<rule field="tvshow" operator="is"><br />
<value>American Dad</value><br />
<value>Archer</value><br />
<value>Family Guy</value><br />
<value>Futurama</value><br />
<value>South Park</value><br />
<value>The Simpsons</value><br />
</rule><br />
<rule field="playcount" operator="is"><br />
<value>0</value><br />
</rule><br />
<limit>10</limit><br />
<order direction="ascending">random</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
=== TV show with specific episode names ===<br />
A playlist with The Simpsons' ''Treehouse'' of Terror episodes.<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="episodes"><br />
<name>The Simpsons - Treehouse of Horror</name><br />
<match>all</match><br />
<rule field="title" operator="contains"><br />
<value>Treehouse</value><br />
</rule><br />
<rule field="tvshow" operator="is"><br />
<value>The Simpsons</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Music Videos =<br />
<br />
<br />
<br />
<br />
= Songs =<br />
<br />
=== Recently played songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Recently Played Songs</name><br />
<match>all</match><br />
<rule field="lastplayed" operator="inthelast"><br />
<value>2 weeks</value><br />
</rule><br />
<order direction="descending">lastplayed</order><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
=== Rock music from the 1970s ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Rock Music from the 1970s</name><br />
<match>all</match><br />
<rule field="genre" operator="is"><br />
<value>Rock</value><br />
</rule><br />
<rule field="year" operator="greaterthan"><br />
<value>1969</value><br />
</rule><br />
<rule field="year" operator="lessthan"><br />
<value>1980</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
=== Top 100 songs ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="songs"><br />
<name>Top 100 Songs</name><br />
<match>all</match><br />
<rule field="playcount" operator="greaterthan"><br />
<value>0</value><br />
</rule><br />
<order direction="descending">playcount</order><br />
<limit>100</limit><br />
</smartplaylist><br />
</syntaxhighlight><br />
<br />
<br />
<br />
= Album =<br />
<br />
=== Albums By Label ===<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
<smartplaylist type="albums"><br />
<name>DECCA</name><br />
<match>all</match><br />
<rule field="label" operator="is"><br />
<value>DECCA</value><br />
</rule><br />
</smartplaylist><br />
</syntaxhighlight><br /><br />
<br />
<br />
<br />
= Artists =<br />
<br />
<br />
<br />
<br />
<br />
<br />
{{top}}<br />
<br />
{{updated|19}}<br />
<br />
[[Category:Karellen]]<br />
[[Category:Music library]]<br />
[[Category:Video library]]</div>Uixtunghttps://kodi.wiki/index.php?title=Naming_video_files/Episodes&diff=242618Naming video files/Episodes2022-07-18T09:07:39Z<p>Uixtung: /* Specials */</p>
<hr />
<div>{{VideoLibraryCreate}}<br />
{{mininav| [[Video library]] |[[HOW-TO:Create_Video_Library|Create Video Library]] }}<br />
<br />
__TOC__<br />
<br />
= Introduction =<br />
Be aware of the following:<br />
<br />
* The only item in the episode file name that the {{kodi}} scanner searches for is the Season and Episode numbering (''SxxEyy''). Everything else is irrelevant.<br />
* It is this SxxEyy that is used to match and scrape the episode metadata and artwork.<br />
* To reduce the risk of the scanner becoming confused by complicated naming, ensure your episode filenames are clean and simple as described below.<br />
* Contrary to advice from 3rd party internet guides, you cannot set season and episode numbering through NFO Files.<br />
<br />
'''Do not refer to IMDB for episode orders. There is no IMDB Scraper.'''<br><br />
'''If you are using the default scraper then the site to check is [https://www.themoviedb.org/ TMDB]. If you have changed to [https://www.thetvdb.com/ TVDB] or [https://www.tvmaze.com/ TV Maze], check the appropriate site.'''<br />
<br />
<br />
<br />
= Single Episode Files =<br />
Episode files are assumed to contain a single episode. If you have files that contain two or more episodes, then read the Multi-Episodes section below. <br />
<br />
The following table details the ''Minimum'' and ''Recommended'' naming for episodes files. <br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01''''' = Season 1, Episode 1 - no spaces || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01''''' = Season 1, Episode 1 - no spaces<br />
|}<br />
<br />
The Pattern '''S01E01''' is the most accurate available. Other Patterns are available in the table below with the most accurate at the top and accuracy decreasing down the list.<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | With Season<br />
! colspan="2" style="background-color:#;" | No Season<br />
! colspan="2" style="background-color:#;" | By Date<br />
! colspan="2" style="background-color:#;" | By Title<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01E02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy.mm.dd'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|'''Name'''.''special''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S1E2'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep_02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy-mm-dd'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01.E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''part.II'''.ext<br />
|style="width:50px; text-align:center;"|4<br />
|style="width:50px; text-align:left;"|''Name'' '''dd.mm.yyyy'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01_E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt.II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01xE02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt_II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:50px; text-align:left;"|''Name'' '''1x02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|6<br />
|style="width:50px; text-align:left;"|''Name'' '''102'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|}<br />
|<br />
;With Season<br />
:The most commonly used for nearly all TV Shows.<br />
;No Season<br />
:Normally used for Anime or single season TV Shows. Not commonly used.<br />
;By date<br />
:Used for long-running daily shows. Check the scraper site for numbering method used.<br />
;By title (added in v.20 "Nexus")<br />
:Used for special episodes in case if a data provider does not support "zero season" convention for specials, e.g. TVmaze. It allows to match special episodes by their titles.<br />
|}<br />
<br />
<br />
<br />
= Multi-Episode Files =<br />
If you video files contain two or more episodes, then the following naming is required to scan multiple episodes from a single file.<br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01E02E04.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01E02E04.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4 || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| ''Note that Episode 3 is not included'' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4<br />
|}<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | Complex Pattern<br />
! colspan="2" style="background-color:#;" | Short Pattern<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:350px" | Example Name<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Example Name<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01e02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-''episode1.title''-'''s01e02'''-''episode2.title''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01-02-03'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''-'''s01e03'''.ext<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:150px; text-align:left;"|''name'' '''1x01x02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:300px; text-align:left;"|''name'' '''1x01'''-'''1x02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:150px; text-align:left;"|''name'' '''ep01-02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:300px; text-align:left;"|''name'' '''ep01'''-'''ep02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:150px; text-align:left;"|<br />
|}<br />
|<br />
'''It is recommended that multi-episode files be split into Single Episode files.'''<br />
<br />
In cases where the video file contains more than one episode, you must nominate each episode in the filename. <br />
<br />
* The patterns are the same as Single Episode numbering, but extended to include multiple episodes.<br />
* Only the episodes in the file name will be added, e.g. '''''Angel (1999) S01E01E04.mkv''''' will scrape episodes 1 and 4 but not include episodes 2 and 3.<br />
* When using a single video file for multiple episodes it is possible to tell set episode bookmarks for each episode in the file. See: '''''[[bookmarks|Episode Bookmarks]]'''''<br />
<br />
:'''''See also: [[Advancedsettings.xml#tvmultipartmatching|Multi-Episode Matching]]''''' to create additional pattern matches<br />
|}<br />
<br />
= Specials =<br />
Specials are extras or episodes that don't belong to a season.<br />
<br />
Movies based on TV shows are usually ''not'' added as specials. Instead you [[Linking_movies_to_TV_shows|link a movie]] to a TV show. It will then appear at the bottom of the season list. <br />
<br />
Specials are named as season 00 and start at E01, e.g. S'''00'''E01. Which episode number they'll have depends on the website the scraper use. At TMDB you access the specials by going to "View All Seasons">Specials.<br />
<br />
In Kodi specials will appear under ''Specials'' in the season list.<br />
<br />
= Episode Groups =<br />
Episode Groups or Orders are listings with alternate episode orders. Some TV Shows are broadcast in one order but the DVD/Bluray release may have a different screening order. A well known example is the TV Show ''Firefly'' where the Studio opted to broadcast high action episodes for ratings first, while the Producer wanted a different order to correctly unfold the storyline.<br />
<br />
Each Information Provider uses a different method to make alternate orders available. Check which scraper you are using and select the correct method below.<br />
<br />
<br />
== TheMovieDB-TV Shows ==<br />
See... '''[[Add-on:TMDb_TV_Shows#Episode_Orders|TheMovieDB Episode Groups]]'''<br />
<br />
Only available when using the python scraper ''TMDB TV Shows.''<br />
<br />
<br />
<br />
== The TVDB ==<br />
See... '''[[Add-on:The_TVDB_v4#Flexible_Orders|TheTVDB Flexible Orders]]<br />
<br />
Only available when using TheTVDB v4 python scraper by TVDB Team.<br />
<br />
<br />
== TVmaze ==<br />
See... '''[[Add-on:TVmaze#Episode_Orders|TVmaze Episode Orders]]'''<br />
<br />
<br />
<br />
= References =<br />
<references /><br />
<br />
<br />
<br />
<br />
<center><br />
{| style="border: 1px solid black;"<br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Mergefrom.gif|60px|link=Naming_video_files/Seasons]]<br />
| style="width:200px; text-align:center;" | '''Previous step''' <br />
| style="width:200px; text-align:center;" | '''Next step''' <br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Merge-arrow.gif|60px|link=Adding_video_sources]]<br />
|-<br />
| style="width:200px; text-align:center;" | '''[[Naming_video_files/Seasons|Seasons Setup]]'''<br />
| style="width:200px; text-align:center;" | '''[[Adding_video_sources|Add Source & Scrape]]'''<br />
|}</center><br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:Guides]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Naming_video_files/Episodes&diff=242553Naming video files/Episodes2022-07-16T11:42:48Z<p>Uixtung: /* Specials */</p>
<hr />
<div>{{VideoLibraryCreate}}<br />
{{mininav| [[Video library]] |[[HOW-TO:Create_Video_Library|Create Video Library]] }}<br />
<br />
__TOC__<br />
<br />
= Introduction =<br />
Be aware of the following:<br />
<br />
* The only item in the episode file name that the {{kodi}} scanner searches for is the Season and Episode numbering (''SxxEyy''). Everything else is irrelevant.<br />
* It is this SxxEyy that is used to match and scrape the episode metadata and artwork.<br />
* To reduce the risk of the scanner becoming confused by complicated naming, ensure your episode filenames are clean and simple as described below.<br />
* Contrary to advice from 3rd party internet guides, you cannot set season and episode numbering through NFO Files.<br />
<br />
'''Do not refer to IMDB for episode orders. There is no IMDB Scraper.'''<br><br />
'''If you are using the default scraper then the site to check is [https://www.themoviedb.org/ TMDB]. If you have changed to [https://www.thetvdb.com/ TVDB] or [https://www.tvmaze.com/ TV Maze], check the appropriate site.'''<br />
<br />
<br />
<br />
= Single Episode Files =<br />
Episode files are assumed to contain a single episode. If you have files that contain two or more episodes, then read the Multi-Episodes section below. <br />
<br />
The following table details the ''Minimum'' and ''Recommended'' naming for episodes files. <br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01''''' = Season 1, Episode 1 - no spaces || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01''''' = Season 1, Episode 1 - no spaces<br />
|}<br />
<br />
The Pattern '''S01E01''' is the most accurate available. Other Patterns are available in the table below with the most accurate at the top and accuracy decreasing down the list.<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | With Season<br />
! colspan="2" style="background-color:#;" | No Season<br />
! colspan="2" style="background-color:#;" | By Date<br />
! colspan="2" style="background-color:#;" | By Title<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01E02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy.mm.dd'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|'''Name'''.''special''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S1E2'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep_02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy-mm-dd'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01.E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''part.II'''.ext<br />
|style="width:50px; text-align:center;"|4<br />
|style="width:50px; text-align:left;"|''Name'' '''dd.mm.yyyy'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01_E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt.II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01xE02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt_II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:50px; text-align:left;"|''Name'' '''1x02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|6<br />
|style="width:50px; text-align:left;"|''Name'' '''102'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|}<br />
|<br />
;With Season<br />
:The most commonly used for nearly all TV Shows.<br />
;No Season<br />
:Normally used for Anime or single season TV Shows. Not commonly used.<br />
;By date<br />
:Used for long-running daily shows. Check the scraper site for numbering method used.<br />
;By title (added in v.20 "Nexus")<br />
:Used for special episodes in case if a data provider does not support "zero season" convention for specials, e.g. TVmaze. It allows to match special episodes by their titles.<br />
|}<br />
<br />
<br />
<br />
= Multi-Episode Files =<br />
If you video files contain two or more episodes, then the following naming is required to scan multiple episodes from a single file.<br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01E02E04.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01E02E04.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4 || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| ''Note that Episode 3 is not included'' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4<br />
|}<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | Complex Pattern<br />
! colspan="2" style="background-color:#;" | Short Pattern<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:350px" | Example Name<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Example Name<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01e02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-''episode1.title''-'''s01e02'''-''episode2.title''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01-02-03'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''-'''s01e03'''.ext<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:150px; text-align:left;"|''name'' '''1x01x02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:300px; text-align:left;"|''name'' '''1x01'''-'''1x02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:150px; text-align:left;"|''name'' '''ep01-02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:300px; text-align:left;"|''name'' '''ep01'''-'''ep02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:150px; text-align:left;"|<br />
|}<br />
|<br />
'''It is recommended that multi-episode files be split into Single Episode files.'''<br />
<br />
In cases where the video file contains more than one episode, you must nominate each episode in the filename. <br />
<br />
* The patterns are the same as Single Episode numbering, but extended to include multiple episodes.<br />
* Only the episodes in the file name will be added, e.g. '''''Angel (1999) S01E01E04.mkv''''' will scrape episodes 1 and 4 but not include episodes 2 and 3.<br />
* When using a single video file for multiple episodes it is possible to tell set episode bookmarks for each episode in the file. See: '''''[[bookmarks|Episode Bookmarks]]'''''<br />
<br />
:'''''See also: [[Advancedsettings.xml#tvmultipartmatching|Multi-Episode Matching]]''''' to create additional pattern matches<br />
|}<br />
<br />
= Specials =<br />
Specials are extras or episodes that don't belong to a season.<br />
<br />
Movies based on TV shows are ''not'' added as specials. Instead you [[Linking_movies_to_TV_shows|link a movie]] to a TV show. It will then appear at the bottom of the season list. <br />
<br />
Specials are named as season 00 and start at E01, e.g. S'''00'''E01. Which episode number they'll have depends on the website the scraper use. At TMDB you access the specials by going to "View All Seasons">Specials.<br />
<br />
In Kodi specials will appear under ''Specials'' in the season list.<br />
<br />
= Episode Groups =<br />
Episode Groups or Orders are listings with alternate episode orders. Some TV Shows are broadcast in one order but the DVD/Bluray release may have a different screening order. A well known example is the TV Show ''Firefly'' where the Studio opted to broadcast high action episodes for ratings first, while the Producer wanted a different order to correctly unfold the storyline.<br />
<br />
Each Information Provider uses a different method to make alternate orders available. Check which scraper you are using and select the correct method below.<br />
<br />
<br />
== TheMovieDB-TV Shows ==<br />
See... '''[[Add-on:TMDb_TV_Shows#Episode_Orders|TheMovieDB Episode Groups]]'''<br />
<br />
Only available when using the python scraper ''TMDB TV Shows.''<br />
<br />
<br />
<br />
== The TVDB ==<br />
See... '''[[Add-on:The_TVDB_v4#Flexible_Orders|TheTVDB Flexible Orders]]<br />
<br />
Only available when using TheTVDB v4 python scraper by TVDB Team.<br />
<br />
<br />
== TVmaze ==<br />
See... '''[[Add-on:TVmaze#Episode_Orders|TVmaze Episode Orders]]'''<br />
<br />
<br />
<br />
= References =<br />
<references /><br />
<br />
<br />
<br />
<br />
<center><br />
{| style="border: 1px solid black;"<br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Mergefrom.gif|60px|link=Naming_video_files/Seasons]]<br />
| style="width:200px; text-align:center;" | '''Previous step''' <br />
| style="width:200px; text-align:center;" | '''Next step''' <br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Merge-arrow.gif|60px|link=Adding_video_sources]]<br />
|-<br />
| style="width:200px; text-align:center;" | '''[[Naming_video_files/Seasons|Seasons Setup]]'''<br />
| style="width:200px; text-align:center;" | '''[[Adding_video_sources|Add Source & Scrape]]'''<br />
|}</center><br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:Guides]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Naming_video_files/Episodes&diff=242552Naming video files/Episodes2022-07-16T11:40:19Z<p>Uixtung: linking movies</p>
<hr />
<div>{{VideoLibraryCreate}}<br />
{{mininav| [[Video library]] |[[HOW-TO:Create_Video_Library|Create Video Library]] }}<br />
<br />
__TOC__<br />
<br />
= Introduction =<br />
Be aware of the following:<br />
<br />
* The only item in the episode file name that the {{kodi}} scanner searches for is the Season and Episode numbering (''SxxEyy''). Everything else is irrelevant.<br />
* It is this SxxEyy that is used to match and scrape the episode metadata and artwork.<br />
* To reduce the risk of the scanner becoming confused by complicated naming, ensure your episode filenames are clean and simple as described below.<br />
* Contrary to advice from 3rd party internet guides, you cannot set season and episode numbering through NFO Files.<br />
<br />
'''Do not refer to IMDB for episode orders. There is no IMDB Scraper.'''<br><br />
'''If you are using the default scraper then the site to check is [https://www.themoviedb.org/ TMDB]. If you have changed to [https://www.thetvdb.com/ TVDB] or [https://www.tvmaze.com/ TV Maze], check the appropriate site.'''<br />
<br />
<br />
<br />
= Single Episode Files =<br />
Episode files are assumed to contain a single episode. If you have files that contain two or more episodes, then read the Multi-Episodes section below. <br />
<br />
The following table details the ''Minimum'' and ''Recommended'' naming for episodes files. <br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01''''' = Season 1, Episode 1 - no spaces || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01''''' = Season 1, Episode 1 - no spaces<br />
|}<br />
<br />
The Pattern '''S01E01''' is the most accurate available. Other Patterns are available in the table below with the most accurate at the top and accuracy decreasing down the list.<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | With Season<br />
! colspan="2" style="background-color:#;" | No Season<br />
! colspan="2" style="background-color:#;" | By Date<br />
! colspan="2" style="background-color:#;" | By Title<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01E02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy.mm.dd'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|'''Name'''.''special''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S1E2'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep_02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy-mm-dd'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01.E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''part.II'''.ext<br />
|style="width:50px; text-align:center;"|4<br />
|style="width:50px; text-align:left;"|''Name'' '''dd.mm.yyyy'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01_E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt.II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01xE02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt_II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:50px; text-align:left;"|''Name'' '''1x02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|6<br />
|style="width:50px; text-align:left;"|''Name'' '''102'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|}<br />
|<br />
;With Season<br />
:The most commonly used for nearly all TV Shows.<br />
;No Season<br />
:Normally used for Anime or single season TV Shows. Not commonly used.<br />
;By date<br />
:Used for long-running daily shows. Check the scraper site for numbering method used.<br />
;By title (added in v.20 "Nexus")<br />
:Used for special episodes in case if a data provider does not support "zero season" convention for specials, e.g. TVmaze. It allows to match special episodes by their titles.<br />
|}<br />
<br />
<br />
<br />
= Multi-Episode Files =<br />
If you video files contain two or more episodes, then the following naming is required to scan multiple episodes from a single file.<br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01E02E04.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01E02E04.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4 || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| ''Note that Episode 3 is not included'' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4<br />
|}<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | Complex Pattern<br />
! colspan="2" style="background-color:#;" | Short Pattern<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:350px" | Example Name<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Example Name<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01e02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-''episode1.title''-'''s01e02'''-''episode2.title''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01-02-03'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''-'''s01e03'''.ext<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:150px; text-align:left;"|''name'' '''1x01x02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:300px; text-align:left;"|''name'' '''1x01'''-'''1x02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:150px; text-align:left;"|''name'' '''ep01-02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:300px; text-align:left;"|''name'' '''ep01'''-'''ep02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:150px; text-align:left;"|<br />
|}<br />
|<br />
'''It is recommended that multi-episode files be split into Single Episode files.'''<br />
<br />
In cases where the video file contains more than one episode, you must nominate each episode in the filename. <br />
<br />
* The patterns are the same as Single Episode numbering, but extended to include multiple episodes.<br />
* Only the episodes in the file name will be added, e.g. '''''Angel (1999) S01E01E04.mkv''''' will scrape episodes 1 and 4 but not include episodes 2 and 3.<br />
* When using a single video file for multiple episodes it is possible to tell set episode bookmarks for each episode in the file. See: '''''[[bookmarks|Episode Bookmarks]]'''''<br />
<br />
:'''''See also: [[Advancedsettings.xml#tvmultipartmatching|Multi-Episode Matching]]''''' to create additional pattern matches<br />
|}<br />
<br />
= Specials =<br />
Specials are extras or episodes that don't belong to a season.<br />
<br />
Movies based on TV shows are ''not'' added as specials. Instead you [[Linking_movies_to_TV_shows|link a movie]] to show. It will then appear at the bottom of the season list. <br />
<br />
They are named as season 00 and start at E01, e.g. S'''00'''E01. Which episode number they'll have depends on the website the scraper use. At TMDB you access the specials by going to "View All Seasons">Specials.<br />
<br />
In Kodi specials will appear under ''Specials'' in the season list.<br />
<br />
= Episode Groups =<br />
Episode Groups or Orders are listings with alternate episode orders. Some TV Shows are broadcast in one order but the DVD/Bluray release may have a different screening order. A well known example is the TV Show ''Firefly'' where the Studio opted to broadcast high action episodes for ratings first, while the Producer wanted a different order to correctly unfold the storyline.<br />
<br />
Each Information Provider uses a different method to make alternate orders available. Check which scraper you are using and select the correct method below.<br />
<br />
<br />
== TheMovieDB-TV Shows ==<br />
See... '''[[Add-on:TMDb_TV_Shows#Episode_Orders|TheMovieDB Episode Groups]]'''<br />
<br />
Only available when using the python scraper ''TMDB TV Shows.''<br />
<br />
<br />
<br />
== The TVDB ==<br />
See... '''[[Add-on:The_TVDB_v4#Flexible_Orders|TheTVDB Flexible Orders]]<br />
<br />
Only available when using TheTVDB v4 python scraper by TVDB Team.<br />
<br />
<br />
== TVmaze ==<br />
See... '''[[Add-on:TVmaze#Episode_Orders|TVmaze Episode Orders]]'''<br />
<br />
<br />
<br />
= References =<br />
<references /><br />
<br />
<br />
<br />
<br />
<center><br />
{| style="border: 1px solid black;"<br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Mergefrom.gif|60px|link=Naming_video_files/Seasons]]<br />
| style="width:200px; text-align:center;" | '''Previous step''' <br />
| style="width:200px; text-align:center;" | '''Next step''' <br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Merge-arrow.gif|60px|link=Adding_video_sources]]<br />
|-<br />
| style="width:200px; text-align:center;" | '''[[Naming_video_files/Seasons|Seasons Setup]]'''<br />
| style="width:200px; text-align:center;" | '''[[Adding_video_sources|Add Source & Scrape]]'''<br />
|}</center><br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:Guides]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Naming_video_files/Episodes&diff=242551Naming video files/Episodes2022-07-16T11:26:16Z<p>Uixtung: /* Specials */</p>
<hr />
<div>{{VideoLibraryCreate}}<br />
{{mininav| [[Video library]] |[[HOW-TO:Create_Video_Library|Create Video Library]] }}<br />
<br />
__TOC__<br />
<br />
= Introduction =<br />
Be aware of the following:<br />
<br />
* The only item in the episode file name that the {{kodi}} scanner searches for is the Season and Episode numbering (''SxxEyy''). Everything else is irrelevant.<br />
* It is this SxxEyy that is used to match and scrape the episode metadata and artwork.<br />
* To reduce the risk of the scanner becoming confused by complicated naming, ensure your episode filenames are clean and simple as described below.<br />
* Contrary to advice from 3rd party internet guides, you cannot set season and episode numbering through NFO Files.<br />
<br />
'''Do not refer to IMDB for episode orders. There is no IMDB Scraper.'''<br><br />
'''If you are using the default scraper then the site to check is [https://www.themoviedb.org/ TMDB]. If you have changed to [https://www.thetvdb.com/ TVDB] or [https://www.tvmaze.com/ TV Maze], check the appropriate site.'''<br />
<br />
<br />
<br />
= Single Episode Files =<br />
Episode files are assumed to contain a single episode. If you have files that contain two or more episodes, then read the Multi-Episodes section below. <br />
<br />
The following table details the ''Minimum'' and ''Recommended'' naming for episodes files. <br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01''''' = Season 1, Episode 1 - no spaces || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01''''' = Season 1, Episode 1 - no spaces<br />
|}<br />
<br />
The Pattern '''S01E01''' is the most accurate available. Other Patterns are available in the table below with the most accurate at the top and accuracy decreasing down the list.<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | With Season<br />
! colspan="2" style="background-color:#;" | No Season<br />
! colspan="2" style="background-color:#;" | By Date<br />
! colspan="2" style="background-color:#;" | By Title<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01E02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy.mm.dd'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|'''Name'''.''special''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S1E2'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep_02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy-mm-dd'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01.E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''part.II'''.ext<br />
|style="width:50px; text-align:center;"|4<br />
|style="width:50px; text-align:left;"|''Name'' '''dd.mm.yyyy'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01_E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt.II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01xE02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt_II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:50px; text-align:left;"|''Name'' '''1x02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|6<br />
|style="width:50px; text-align:left;"|''Name'' '''102'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|}<br />
|<br />
;With Season<br />
:The most commonly used for nearly all TV Shows.<br />
;No Season<br />
:Normally used for Anime or single season TV Shows. Not commonly used.<br />
;By date<br />
:Used for long-running daily shows. Check the scraper site for numbering method used.<br />
;By title (added in v.20 "Nexus")<br />
:Used for special episodes in case if a data provider does not support "zero season" convention for specials, e.g. TVmaze. It allows to match special episodes by their titles.<br />
|}<br />
<br />
<br />
<br />
= Multi-Episode Files =<br />
If you video files contain two or more episodes, then the following naming is required to scan multiple episodes from a single file.<br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01E02E04.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01E02E04.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4 || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| ''Note that Episode 3 is not included'' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4<br />
|}<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | Complex Pattern<br />
! colspan="2" style="background-color:#;" | Short Pattern<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:350px" | Example Name<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Example Name<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01e02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-''episode1.title''-'''s01e02'''-''episode2.title''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01-02-03'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''-'''s01e03'''.ext<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:150px; text-align:left;"|''name'' '''1x01x02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:300px; text-align:left;"|''name'' '''1x01'''-'''1x02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:150px; text-align:left;"|''name'' '''ep01-02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:300px; text-align:left;"|''name'' '''ep01'''-'''ep02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:150px; text-align:left;"|<br />
|}<br />
|<br />
'''It is recommended that multi-episode files be split into Single Episode files.'''<br />
<br />
In cases where the video file contains more than one episode, you must nominate each episode in the filename. <br />
<br />
* The patterns are the same as Single Episode numbering, but extended to include multiple episodes.<br />
* Only the episodes in the file name will be added, e.g. '''''Angel (1999) S01E01E04.mkv''''' will scrape episodes 1 and 4 but not include episodes 2 and 3.<br />
* When using a single video file for multiple episodes it is possible to tell set episode bookmarks for each episode in the file. See: '''''[[bookmarks|Episode Bookmarks]]'''''<br />
<br />
:'''''See also: [[Advancedsettings.xml#tvmultipartmatching|Multi-Episode Matching]]''''' to create additional pattern matches<br />
|}<br />
<br />
= Specials =<br />
Specials are extras or episodes that don't belong to a season.<br />
<br />
They are named as season 00 and start at E01, e.g. S'''00'''E01. Which episode number they'll have depends on the website the scraper use. At TMDB you access the specials by going to "View All Seasons">Specials.<br />
<br />
In Kodi specials will appear under ''Specials'' in the season list.<br />
<br />
= Episode Groups =<br />
Episode Groups or Orders are listings with alternate episode orders. Some TV Shows are broadcast in one order but the DVD/Bluray release may have a different screening order. A well known example is the TV Show ''Firefly'' where the Studio opted to broadcast high action episodes for ratings first, while the Producer wanted a different order to correctly unfold the storyline.<br />
<br />
Each Information Provider uses a different method to make alternate orders available. Check which scraper you are using and select the correct method below.<br />
<br />
<br />
== TheMovieDB-TV Shows ==<br />
See... '''[[Add-on:TMDb_TV_Shows#Episode_Orders|TheMovieDB Episode Groups]]'''<br />
<br />
Only available when using the python scraper ''TMDB TV Shows.''<br />
<br />
<br />
<br />
== The TVDB ==<br />
See... '''[[Add-on:The_TVDB_v4#Flexible_Orders|TheTVDB Flexible Orders]]<br />
<br />
Only available when using TheTVDB v4 python scraper by TVDB Team.<br />
<br />
<br />
== TVmaze ==<br />
See... '''[[Add-on:TVmaze#Episode_Orders|TVmaze Episode Orders]]'''<br />
<br />
<br />
<br />
= References =<br />
<references /><br />
<br />
<br />
<br />
<br />
<center><br />
{| style="border: 1px solid black;"<br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Mergefrom.gif|60px|link=Naming_video_files/Seasons]]<br />
| style="width:200px; text-align:center;" | '''Previous step''' <br />
| style="width:200px; text-align:center;" | '''Next step''' <br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Merge-arrow.gif|60px|link=Adding_video_sources]]<br />
|-<br />
| style="width:200px; text-align:center;" | '''[[Naming_video_files/Seasons|Seasons Setup]]'''<br />
| style="width:200px; text-align:center;" | '''[[Adding_video_sources|Add Source & Scrape]]'''<br />
|}</center><br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:Guides]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Naming_video_files/Episodes&diff=242550Naming video files/Episodes2022-07-16T11:25:37Z<p>Uixtung: specials added</p>
<hr />
<div>{{VideoLibraryCreate}}<br />
{{mininav| [[Video library]] |[[HOW-TO:Create_Video_Library|Create Video Library]] }}<br />
<br />
__TOC__<br />
<br />
= Introduction =<br />
Be aware of the following:<br />
<br />
* The only item in the episode file name that the {{kodi}} scanner searches for is the Season and Episode numbering (''SxxEyy''). Everything else is irrelevant.<br />
* It is this SxxEyy that is used to match and scrape the episode metadata and artwork.<br />
* To reduce the risk of the scanner becoming confused by complicated naming, ensure your episode filenames are clean and simple as described below.<br />
* Contrary to advice from 3rd party internet guides, you cannot set season and episode numbering through NFO Files.<br />
<br />
'''Do not refer to IMDB for episode orders. There is no IMDB Scraper.'''<br><br />
'''If you are using the default scraper then the site to check is [https://www.themoviedb.org/ TMDB]. If you have changed to [https://www.thetvdb.com/ TVDB] or [https://www.tvmaze.com/ TV Maze], check the appropriate site.'''<br />
<br />
<br />
<br />
= Single Episode Files =<br />
Episode files are assumed to contain a single episode. If you have files that contain two or more episodes, then read the Multi-Episodes section below. <br />
<br />
The following table details the ''Minimum'' and ''Recommended'' naming for episodes files. <br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01''''' = Season 1, Episode 1 - no spaces || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01''''' = Season 1, Episode 1 - no spaces<br />
|}<br />
<br />
The Pattern '''S01E01''' is the most accurate available. Other Patterns are available in the table below with the most accurate at the top and accuracy decreasing down the list.<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | With Season<br />
! colspan="2" style="background-color:#;" | No Season<br />
! colspan="2" style="background-color:#;" | By Date<br />
! colspan="2" style="background-color:#;" | By Title<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Episode Naming<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01E02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy.mm.dd'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|'''Name'''.''special''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S1E2'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:50px; text-align:left;"|''Name'' '''ep_02'''.ext<br />
|style="width:50px; text-align:center;"|3<br />
|style="width:50px; text-align:left;"|''Name'' '''yyyy-mm-dd'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01.E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''part.II'''.ext<br />
|style="width:50px; text-align:center;"|4<br />
|style="width:50px; text-align:left;"|''Name'' '''dd.mm.yyyy'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01_E02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt.II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:50px; text-align:left;"|''Name'' '''S01xE02'''.ext<br />
|style="width:50px; text-align:center;"|7<br />
|style="width:50px; text-align:left;"|''Name'' '''pt_II'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:50px; text-align:left;"|''Name'' '''1x02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:center;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|-<br />
|style="width:50px; text-align:center;"|6<br />
|style="width:50px; text-align:left;"|''Name'' '''102'''.ext<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|style="width:50px; text-align:left;"|<br />
|}<br />
|<br />
;With Season<br />
:The most commonly used for nearly all TV Shows.<br />
;No Season<br />
:Normally used for Anime or single season TV Shows. Not commonly used.<br />
;By date<br />
:Used for long-running daily shows. Check the scraper site for numbering method used.<br />
;By title (added in v.20 "Nexus")<br />
:Used for special episodes in case if a data provider does not support "zero season" convention for specials, e.g. TVmaze. It allows to match special episodes by their titles.<br />
|}<br />
<br />
<br />
<br />
= Multi-Episode Files =<br />
If you video files contain two or more episodes, then the following naming is required to scan multiple episodes from a single file.<br />
<br />
{| class="prettytable"<br />
|-<br />
| scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Minimum required episode name:''' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || scope="row" colspan="2" style="text-align:center; background-color:#a1f5e4;" | '''Recommended episode name:'''<br />
|-<br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"|''S01E01E02E04.mkv''<br />
! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| <br />
! scope="row" colspan="2" style="width:400px; background-color:#f5f5a1; text-align:center;"| ''Angel (1999) S01E01E02E04.mkv''<br />
|-<br />
|Where:<br />
|'''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4 || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| ||Where: ||'''''Angel (1999)''''' = TV Show name<br />
|-<br />
|<br />
| ''Note that Episode 3 is not included'' || ! scope="row" colspan="1" style="width:10px; background-color:#d3d3d5; text-align:center;"| || || '''''S01E01E02E04''''' = Season 1, Episode 1, 2 & 4<br />
|}<br />
<br />
{|<br />
|-<br />
|<br />
{|class="{{{1|prettytable}}}" style="margin: 0.5em 2.0em 0.5em 0em; font-size: 0.80em; {{border-radius|5px}}; float: top; clear: top;" width="500"<br />
|-<br />
! colspan="2" style="background-color:#;" | Complex Pattern<br />
! colspan="2" style="background-color:#;" | Short Pattern<br />
|+<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:350px" | Example Name<br />
! style="background-color:#;" | Order<br />
! style="background-color:#; width:200px" | Example Name<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01e02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-''episode1.title''-'''s01e02'''-''episode2.title''.ext<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:150px; text-align:left;"|''name'' '''s01e01-02-03'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|1<br />
|style="width:300px; text-align:left;"|''name'' '''s01e01'''-'''s01e02'''-'''s01e03'''.ext<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:150px; text-align:left;"|''name'' '''1x01x02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|5<br />
|style="width:300px; text-align:left;"|''name'' '''1x01'''-'''1x02'''.ext<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:150px; text-align:left;"|''name'' '''ep01-02'''.ext<br />
|-<br />
|style="width:50px; text-align:center;"|2<br />
|style="width:300px; text-align:left;"|''name'' '''ep01'''-'''ep02'''.ext<br />
|style="width:50px; text-align:center;"|<br />
|style="width:150px; text-align:left;"|<br />
|}<br />
|<br />
'''It is recommended that multi-episode files be split into Single Episode files.'''<br />
<br />
In cases where the video file contains more than one episode, you must nominate each episode in the filename. <br />
<br />
* The patterns are the same as Single Episode numbering, but extended to include multiple episodes.<br />
* Only the episodes in the file name will be added, e.g. '''''Angel (1999) S01E01E04.mkv''''' will scrape episodes 1 and 4 but not include episodes 2 and 3.<br />
* When using a single video file for multiple episodes it is possible to tell set episode bookmarks for each episode in the file. See: '''''[[bookmarks|Episode Bookmarks]]'''''<br />
<br />
:'''''See also: [[Advancedsettings.xml#tvmultipartmatching|Multi-Episode Matching]]''''' to create additional pattern matches<br />
|}<br />
<br />
= Specials =<br />
Specials are extras or episodes that don't belong to a season.<br />
<br />
They are named as season 00, e.g. S'''00'''E01. Which episode number they'll have depends on the website the scraper use. At TMDB you access the specials by going to "View All Seasons">Specials.<br />
<br />
In Kodi specials will appear under ''Specials'' in the season list.<br />
<br />
= Episode Groups =<br />
Episode Groups or Orders are listings with alternate episode orders. Some TV Shows are broadcast in one order but the DVD/Bluray release may have a different screening order. A well known example is the TV Show ''Firefly'' where the Studio opted to broadcast high action episodes for ratings first, while the Producer wanted a different order to correctly unfold the storyline.<br />
<br />
Each Information Provider uses a different method to make alternate orders available. Check which scraper you are using and select the correct method below.<br />
<br />
<br />
== TheMovieDB-TV Shows ==<br />
See... '''[[Add-on:TMDb_TV_Shows#Episode_Orders|TheMovieDB Episode Groups]]'''<br />
<br />
Only available when using the python scraper ''TMDB TV Shows.''<br />
<br />
<br />
<br />
== The TVDB ==<br />
See... '''[[Add-on:The_TVDB_v4#Flexible_Orders|TheTVDB Flexible Orders]]<br />
<br />
Only available when using TheTVDB v4 python scraper by TVDB Team.<br />
<br />
<br />
== TVmaze ==<br />
See... '''[[Add-on:TVmaze#Episode_Orders|TVmaze Episode Orders]]'''<br />
<br />
<br />
<br />
= References =<br />
<references /><br />
<br />
<br />
<br />
<br />
<center><br />
{| style="border: 1px solid black;"<br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Mergefrom.gif|60px|link=Naming_video_files/Seasons]]<br />
| style="width:200px; text-align:center;" | '''Previous step''' <br />
| style="width:200px; text-align:center;" | '''Next step''' <br />
| scope="row" rowspan="2" style=" text-align:center;" | [[File:Merge-arrow.gif|60px|link=Adding_video_sources]]<br />
|-<br />
| style="width:200px; text-align:center;" | '''[[Naming_video_files/Seasons|Seasons Setup]]'''<br />
| style="width:200px; text-align:center;" | '''[[Adding_video_sources|Add Source & Scrape]]'''<br />
|}</center><br />
<br />
<br />
<br />
<br />
{{top}}<br />
{{updated|19}}<br />
<br />
[[Category:Guides]]<br />
[[Category:Karellen]]<br />
[[Category:Video library]]<br />
[[Category:First time user]]</div>Uixtunghttps://kodi.wiki/index.php?title=Skinning_Manual&diff=242549Skinning Manual2022-07-14T13:34:04Z<p>Uixtung: /* Use params in includes */</p>
<hr />
<div>{{TOC right}}{{mininav|[[Development]]|[[Skinning]]}}<br />
<br />
Kodi includes a GUI library that allows you to skin/change everything you see in Kodi, from the images, the sizes and positions of all controls, colours, fonts, and text, through to altering navigation and even adding new functionality.<br /><br /><br />
The skin system is quite complex, and this portion of the manual is dedicated to providing in depth information on how it all works, along with tips to make the experience a little more pleasant.<br />
<br />
<br />
If you are just getting started with skinning Kodi, then it is suggested that the best way to learn is by modifying one of the many existing skins that are available. The default skin, Estuary, includes almost all the various tricks and features that make the Kodi [[Skinning Engine]] so powerful, so is an ideal place to start. You may wish to start by having a look at the "[[Skin_development_introduction|Skinning for Kodi introduction]]" article as well as the [[Skinning|tutorial section on skinning Kodi]], and try modifying a window or two by adding a button, or altering the textures or layout.<br />
<br /><br />
<br />
<br />
= Anatomy of a Skin =<br />
Kodi skins, once installed, are located in [[userdata]] addons folder. This is the folder where all skins are placed and listed.<br /><br /><br />
Any additional skins you create, or download from, or be installed via zip, Kodi will load and ask you if you would like to load the skin and also allow you to load them up from within the Appearance Settings. It is suggested that if you want to make your own skin, then starting by copying an existing skins files over into a new folder (let's say skin/myskin) is a good place to start. You can then edit each of the files as you become more familiar with the skinning system.<br /><br /><br />
Each skin folder contains several subdirectorys, and one file:<br />
; myskin/720p<br />
: This is a resolution-specific directory. Kodi can run in multiple resolutions, and thus can use different files for some resolutions (as there is a big difference between NTSC at 720x480 pixels and 1080i at 1920x1080 pixels!) <br />
; myskin/backgrounds<br />
: optional folder containing the background images used in the skin<br />
; myskin/colors<br />
: contains a defaults.xml file which is used to define the colours used in the skin<br />
; myskin/font<br />
: This subdirectory contains all fonts used by the skin. you can add/replace fonts here<br />
; myskin/language<br />
: contains several subfolders for each language (English/strings.po). you can define strings used in your skin in this file.<br />
; myskin/media<br />
: This subdirectory contains all the media files (.png/.gif/.jpg...) You can replace/edit these as you like. <br />
; myskin/resources<br />
: place your icon.png (a 256x256 or 512x512 png image for your skin), fanart.jpg (a 1280x720 or 1920x1080 jpeg fanart image for your skin) and 10 jpeg screenshots (1280x720) of your skin in here. Name them screenshot01.jpg, screenshot02.jpg ect.<br />
; [[addon.xml|myskin/addon.xml]]<br />
: This contains the information that Kodi uses to find the other files that Kodi requires to describe it's skin. It also contains credits information, and versioning information.<br />
; myskin/LICENSE.txt<br />
: we recommend to include a Creative Commons license file in your skin: http://creativecommons.org/licenses/<br />
[[Addon.xml#Skin specific elements|See here for the order in which it looks for skin files.]]<br />
<br />
= Skin Themes =<br />
All the basic media files for a skin should be compressed into the Textures.xbt file, and placed in the media/ folder. You can use the tool [[TexturePacker]] for this. All the images that make up the default skin theme should be in the Textures.xbt file.<br />
<br />
In addition to this, Kodi allows other .xbt files in the media/ folder, each one representing a different theme for your skin. <br />
For instance, you could tint all your main textures a red colour, and create a new theme package Red.xbt.<br />
This gives users more choice in the look of a particular skin, and only the textures change when you change themes – the layout stays the same. <br />
If the user has selected a theme, then when a control requires a texture, Kodi will first look in the <themename>.xbt file for the texture. <br />
It will fall back to the Textures.xbt file if <themename>.xbt doesn't contain the image. This means that the theme .xbt files need only contain the changed textures – all other textures will fallback to using Textures.xbt as usual.<br />
<br />
A suggested method of creating a theme is as follows:<br />
<br />
# Run Texturepacker.exe on the folder containing the default texture files, to generate Textures.xbt as you would normally do.<br />
# Identify the textures you wish to have themed and copy them to a separate folder.<br />
# Create a separate folder for each theme outside of your normal skin work area, and place the altered copies of each of the textures in them.<br />
# Run Texturepacker.exe on each of the theme folders created in step 3 to create the themed .xbt files (note you can use the -output switch with Texturepacker.exe to name the theme appropriately).<br />
# Place Textures.xbt and each of the theme .xbt files in the media/ folder of your skin. Kodi will automatically pick them up.<br />
<br />
<br />
= addon.xml =<br />
<br />
{{main|addon.xml}}<br />
<br />
<br />
= Windows =<br />
== Window Structure ==<br />
{{#lst:Window Structure|main content}}<br />
<br />
<br />
= Includes =<br />
The other special (and arguably the most important skinning file of all) is includes.xml. This is, as its title suggests, a place from which you can define the default look, size, and positioning of controls, to save you replicating many of the control's attributes throughout the window .xml files. For instance, you can setup the size, and textures used for a button control, thus allowing you to leave those details out in the rest of the skin files, unless of course you want to override the default look or size etc. in a particular window.<br /><br /><br />
This is extremely valuable as it allows you to greatly simplify a lot of the work in building a skin. For one thing, it means that once you have include files setup, many of the default parameters for a different resolution can be done by just altering the parameters within the include file(s) for the different resolution.<br /><br /><br />
You can infact have more than one include file - you can specify the file attribute when including from a different file, allowing you to have an include file dedicated to a particular set of attributes.<br /><br /><br />
The layout of an includes file is as follows.<br />
<br />
<syntaxhighlight lang="XML"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<includes><br />
<include name="whitetext"><br />
<textcolor>ffffffff</textcolor><br />
</include><br />
<include file="listdefaults.xml" /><br />
<include condition="Skin.HasSetting(extras) file="includes_extras.xml" /><br />
<default type="button"><br />
<include>whitetext</include><br />
</default><br />
<constant name="leftedge">50</constant><br />
</includes><br />
</syntaxhighlight><br />
<br />
You'll notice in the above example that we have 4 different types of includes. The first <include> tag basically allows a substitution of the tags underneath it whenever it occurs. For instance, if in a window .xml file you have this:<br />
<br />
<syntaxhighlight lang="XML"><br />
<control type="togglebutton"><br />
<include>whitetext</include><br />
... other tags go here<br />
</control><br />
</syntaxhighlight><br />
<br />
Then it would substitute the <textcolor> tag for where the include tag is. You can have as many includes as you like, and as many tags can be inside an include - even complete controls, or complete control groups.<br />
<br />
The second <include> tag in the example demonstrates how to include from a different file. As there is no include name specified, it will include the contents of the entire file at that point.<br />
<br />
The <default> tag is similar to an include, except that it is used in every control of that type - even if you don't specify that the control is to use includes. Thus every buttoncontrol will have the whitetext include in it. Note that you can override this by specifying the <textcolor> tag in the buttoncontrol.<br />
<br />
And finally, the <constant> tag allows you to define a numeric (floating point) constant by name for use in place of numeric values (<left>, height="" etc.) would otherwise be used. This allows alignment of items using the same position values which can then easily be altered in one place.<br />
<br /><br /><br />
<br />
== Use params in includes ==<br />
It's possible to pass arbitrary parameters to your includes and then use these values anywhere within the include body. Just so you don't have to copy/paste huge chunks of XML anymore in order to change just a value or two. Includes are now roughly equivalent to "procedures" in programming languages. Here's the final syntax that has been included in Kodi.<br />
<br />
'''Include definitions''' are still written within ''<includes>'' tag, usually in ''includes.xml''. But they can now accept parameters:<br />
<br />
<syntaxhighlight lang="XML"><br />
<include name="MyControl"><br />
<param name="id"/><br />
<param name="left" default="120"/><br />
<param name="top">225</param><br />
<definition><br />
<control type="image" id="$PARAM[id]"><br />
<left>$PARAM[left]</left><br />
<top>$PARAM[top]</top><br />
<width>370</width><br />
<height>40</height><br />
<texture>foo.png</texture><br />
</control><br />
<definition><br />
</include><br />
</syntaxhighlight><br />
<br />
Here, the first part is called ''parameter list'' and is specified using ''<param>'' tags. When it is present, include body that follows it should be enclosed within ''<definition>'' tag. At the moment, parameter list is optional and is mainly used for specifying default values for parameters (such as ''120'' and ''225'' above), but is otherwise not mandatory.<br />
<br />
The above include can be called like this:<br />
<br />
<syntaxhighlight lang="XML"><br />
<include content="MyControl"><br />
<param name="id" value="52"/><br />
<param name="left">300</param><br />
</include><br />
</syntaxhighlight><br />
<br />
This has the exact same effect as if you've written this instead:<br />
<br />
<syntaxhighlight lang="XML"><br />
<include content="MyControl"><br />
<control type="image" id="52"><br />
<left>300</left><br />
<top>225</top><br />
<width>370</width><br />
<height>40</height><br />
<texture>foo.png</texture><br />
</control><br />
</include><br />
</syntaxhighlight><br />
<br />
and called it (old-style) like this:<br />
<br />
<syntaxhighlight lang="XML"><br />
<include>MyControl</include><br />
</syntaxhighlight><br />
<br />
only without added benefits.<br />
<br />
Any appropriate value can be passed as parameter in the new '''include call''', including ''$INFO'' labels, ''$LOCALIZE'', ''$VAR''s, constants, etc. Empty string (''value=""'') can also be passed, for example to override a non-empty default value set in the include definition.<br />
<br />
Default values are used as replacement when their parameters are not passed in the include call.<br />
<br />
''$PARAM'' references can be specified within both '''tag values and attributes''' inside include body, and are expanded to either actual value passed (if it was passed), default value (if set) or empty string, in that order.<br />
<br />
Parameters without default values (such as ''id'' above) are specified for better readability and documentation purposes only, but are otherwise not necessary and can be omitted. This is really a matter of style, and some skinners might prefer writing explicit parameter lists to specify all parameters referenced in the include body. It's a good practice though, as explicit parameter lists might be better utilized in the future versions of Kodi.<br />
<br />
If there are no ''<param>'' tags at all, ''<definition>'' can be omitted too. This leads to even shorter syntax:<br />
<br />
<syntaxhighlight lang="XML"><br />
<include name="MyControl"><br />
<control type="image" id="$PARAM[id]"><br />
<left>$PARAM[left]</left><br />
<top>$PARAM[top]</top><br />
<width>370</width><br />
<height>40</height><br />
<texture>foo.png</texture><br />
</control><br />
</include><br />
</syntaxhighlight><br />
<br />
Includes can call other (nested) includes and even pass them ''exact'' parameter values that they've got themselves. This is called '''parameter forwarding'''.<br />
<br />
<syntaxhighlight lang="XML"><br />
<include name="MyControl"><br />
...<br />
<include name="MyOtherControl"><br />
<param name="label">$INFO[Player.Title]</param><br />
<param name="label2" value="x:$PARAM[left]; y:$PARAM[top]"/><br />
<param name="color" value="$PARAM[color]"/> <!-- forwarding --><br />
<param name="id" value="$PARAM[scrollbarid]"/> <!-- forwarding --><br />
</include><br />
...<br />
</include><br />
</syntaxhighlight><br />
<br />
Here, ''$PARAM[color]'' and ''$PARAM[scrollbarid]'' will be forwarded to ''MyOtherControl'' '''only''' if parameters ''color'' and ''scrollbarid'' have actually been passed to ''MyControl'', otherwise the default values for ''color'' and ''id'' (if set in ''MyOtherControl'') will be used instead in the body of ''MyOtherControl''. Composite values containing other characters (such as ''label2'') are not considered as "true" forwarding and always override any default value set in the nested include, even when they expand to empty strings.<br />
<br /><br /><br />
<br />
== Nested ==<br />
<br />
The <code>nested</code> element can be used as a placeholder for elements (controls) defined between the start-tag and end-tag of an include element. The nested part can contain anything what is valid in our skin language. Using parameters for the nested XML fragment is also supported.<br />
<br />
This is really handy if you want to re-use elements (controls) before and after some variable elements (controls) e.g. a box with a header and footer but variable content.<br />
<br />
=== Definition of an include using nested ===<br />
<syntaxhighlight lang="XML"><br />
<include name="MyBox"><br />
<control type=""><br />
...<br />
</control><br />
<control type="group"><br />
<top>$PARAM[top]</top><br />
<left>$PARAM[left]</left><br />
...<br />
<nested /> <!-- used to indicate where to place nested elements of the include --><br />
...<br />
</control><br />
</include><br />
</syntaxhighlight><br />
<br />
=== Use the include with nested elements ===<br />
<syntaxhighlight lang="XML"><br />
<include content="MyBox"><br />
<param name="top" value="100" /><br />
<param name="left" value="200" /><br />
<br />
<!-- nested elements --><br />
<control type="label"><br />
...<br />
</control> <br />
<control type="group"><br />
<control type="label"><br />
...<br />
</control> <br />
</control> <br />
</include><br />
</syntaxhighlight><br />
<br />
== Variables ==<br />
Variables make it easier to use conditional infolabels. You can define them in includes.xml, or to keep them separate, you can place them in another file which is included in includes.xml.<br />
You can include a file in includes.xml by adding a line like this:<br />
<syntaxhighlight lang="XML"><br />
<include file="Variables.xml" /><br />
</syntaxhighlight><br />
Variables can be used in any tag that supports infolabels, like the texture, label and visible tags. Instead of having to include two whole controls with a condition, they allow you to just apply the condition to the actual texture or label. Meaning less controls to maintain ect. The values in the variable are read from top to bottom and the first condition that is met gets used. The last value usually has no condition and it's content acts as a fallback. The following example shows the album label if the player has audio, the year if there is no audio and no fallback is used (because there either is or is not any audio).<br />
<syntaxhighlight lang="XML"><br />
<variable name="Example"><br />
<value condition="Player.HasAudio">$INFO[ListItem.Album]</value><br />
<value condition="!Player.HasAudio">$INFO[ListItem.Year]</value><br />
<value></value><br />
</variable><br />
</syntaxhighlight><br />
You can use a variable in a label control like this:<br />
<syntaxhighlight lang="XML"><br />
<label>$VAR[Example]</label><br />
</syntaxhighlight><br />
or when the viariable value is likely to contain commas (,) and/or quotes ("):<br />
<syntaxhighlight lang="XML"><br />
<label>$ESCVAR[Example]</label><br />
</syntaxhighlight><br />
(see $ESCINFO[] for more info on the need to escape strings: http://kodi.wiki/view/Label_Parsing)<br />
<br /><br /><br />
<br />
== Constants ==<br />
In case you want to re-use a certain value multiple times in your skin, you can define a constant for it:<br />
<syntaxhighlight lang="XML"><br />
<constant name="FanartCrossfadeTime">300</constant><br />
<constant name="IconCrossfadeTime">300</constant><br />
</syntaxhighlight><br />
<br />
you can now reference this value by it's name elsewhere in your skin:<br />
<syntaxhighlight lang="XML"><br />
<control type="image"><br />
<left>0</left><br />
<top>0</top><br />
<width>256</width><br />
<height>256</height><br />
<texture background="true">$INFO[ListItem.Icon]</texture><br />
<fadetime>IconCrossfadeTime</fadetime><br />
</control><br />
</syntaxhighlight><br />
<br /><br /><br />
<br />
== Defaults ==<br />
for every control type, you can define a default template. for instance here's a template for a button control:<br />
<syntaxhighlight lang="XML"><br />
<default type="button"><br />
<left>0</left><br />
<top>0</top><br />
<width>700</width><br />
<height>40</height><br />
<label></label><br />
<texturefocus border="20">list-focus.png</texturefocus><br />
<texturenofocus border="20">list-nofocus.png</texturenofocus><br />
<font>font20</font><br />
<textcolor>white</textcolor><br />
<focusedcolor>blue</focusedcolor><br />
<disabledcolor>darkgrey</disabledcolor><br />
<invalidcolor>red</invalidcolor><br />
<textoffsetx>10</textoffsetx><br />
<aligny>center</aligny><br />
<pulseonselect>true</pulseonselect><br />
</default><br />
</syntaxhighlight><br />
<br />
the benefit of defining defaults is that kodi will use the template everywhere in you skin where a button is used,<br />
so you don't have to code all of the tags for each and every button. you only have to code the tags that you want to differ from the default template.<br />
<br /><br /><br />
<br />
== Expressions ==<br />
expressions are useful if you need to use a certain boolean expression several times throughout your skin.<br />
they can be defined in your includes file like this:<br />
<syntaxhighlight lang="XML"><br />
<expression name="HasInfoDialog">Window.IsActive(musicinformation) | Window.IsActive(movieinformation) | Window.IsActive(addoninformation)</expression><br />
<expression name="PluginAdvancedLauncher">substring(Container.FolderPath,plugin://plugin.program.advanced.launcher/,left)</expression><br />
</syntaxhighlight><br />
<br />
to use an expression in your skin, you can reference them using $EXP[]<br />
<syntaxhighlight lang="XML"><br />
<animation condition="$EXP[HasInfoDialog]" effect="fade" start="100" end="0" time="200" tween="sine">Conditional</animation><br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="XML"><br />
<visible>$EXP[PluginAdvancedLauncher] + !Window.IsActive(Home)</visible><br />
</syntaxhighlight><br />
<br />
expressions can be used in the following tags/attributes:<br />
* visible<br />
* enable<br />
* usealttexture<br />
* selected<br />
* condition<br />
<br />
= Controls =<br />
Controls are the substance of your skin. They define everything from buttons, to text labels, to visualization placement. This portion of the manual will explain each and every control in detail.<br />
== Label Control ==<br />
{{#lst:Label_control|main content}}<br />
== Fade Label Control ==<br />
{{#lst:Fade_label_control|main content}}<br />
== Button Control ==<br />
{{#lst:Button control|main content}}<br />
== Image Control ==<br />
{{#lst:Image Control|main content}}<br />
== MultiImage Control ==<br />
{{#lst:MultiImage Control|main content}}<br />
== Radio button Control ==<br />
{{#lst:Radio button control|main content}}<br />
== Toggle button control ==<br />
{{#lst:Toggle button control|main content}}<br />
== Spin Control ==<br />
{{#lst:Spin_Control|main content}}<br />
== Settings Spin Control ==<br />
{{#lst:Settings_Spin_Control|main content}}<br />
== Slider Control ==<br />
{{#lst:Slider Control|main content}}<br />
== Progress Control ==<br />
{{#lst:Progress Control|main content}}<br />
== Ranges Control ==<br />
{{#lst:Ranges Control|main content}}<br />
== ScrollBar Control ==<br />
{{#lst:Scroll Bar Control|main content}}<br />
== Text Box ==<br />
{{#lst:Text Box|main content}}<br />
== RSS feed Control ==<br />
{{#lst:RSS_ticker|main content}}<br />
== Visualisation Control ==<br />
{{#lst:Visualisation Control|main content}}<br />
== Video Control ==<br />
{{#lst:Video Control|main content}}<br />
== Mover Control ==<br />
{{#lst:Mover Control|main content}}<br />
== Resize Control ==<br />
{{#lst:Resize control|main content}}<br />
== Edit Control ==<br />
{{#lst:Edit Control|main content}}<br />
== EPGGrid Control ==<br />
{{#lst:EPGGrid_control|main content}}<br />
== Gamecontroller Control ==<br />
{{#lst:Gamecontroller_Control|main content}}<br />
== GameWindow Control ==<br />
{{#lst:GameWindow Control|main content}}<br />
== Group Control ==<br />
{{#lst:Group Control|main content}}<br />
== GroupList Control ==<br />
{{#lst:Group List Control|main content}}<br />
== List Container ==<br />
{{#lst:List Container|main content}}<br />
== Wraplist Container ==<br />
{{#lst:Wrap List Container|main content}}<br />
== FixedList Container ==<br />
{{#lst:Fixed List Container|main content}}<br />
== Panel Container ==<br />
{{#lst:Panel Container|main content}}<br />
<br />
= Filling containers=<br />
== Filling containers with static content ==<br />
{{#lst:Static List Content|main content}}<br />
<br />
== Filling containers with dynamic content ==<br />
{{#lst:Dynamic List Content|main content}}<br />
<br />
= Conditional_Visibility =<br />
Kodi's skinning engine versatility is based upon the fact that the skinner can display and hide portions of the skin using a variety of conditional statements that can be combined to create very user friendly UI implementations. For further information of available variable and how they can be applied.<br />
{{#lst:Conditional visibility|main content}}<br />
<br />
= Animations =<br />
The Kodi skinning engine supports animations of any control allowing them to rotate, slide, fade or any combination there-of. Combining animations with conditional statements ensure your skin will have stunning effects that appear as professional as a 1st party product.<br />
== Animating Your Skin ==<br />
{{#lst:Animating_your_skin|main content}}<br />
<br />
= Tweeners =<br />
{{#lst:Tweeners|main content}}<br />
<br />
= Fonts =<br />
Kodi allows you to customize which fonts are displayed onscreen in the User Interface.<br />
{{#lst:Fonts|main content}}<br />
<br />
= Appendix =<br />
* [[Window IDs|List of Windows]]<br />
* [[List_of_boolean_conditions|List of Boolean Conditions]]<br />
* [[InfoLabels|List of Info Labels]]<br />
* [[List_of_built-in_functions|List of Built In Functions]]<br />
* [[List of Built In Controls|List of Built In Controls]]<br />
* [[Default Icons|List of Default Icons]]<br />
* [[Skin Optimizations]]<br />
* [[Debugging via Renderdoc]]<br />
<br />
<br />
<br />
[[Category:Development]]<br />
[[Category:Skin development|*]]<br />
[[Category:Python]]</div>Uixtunghttps://kodi.wiki/index.php?title=Label_control&diff=242548Label control2022-07-14T13:20:07Z<p>Uixtung: /* Auto size labels */</p>
<hr />
<div><section begin="main content" /><br />
The label control is used for displaying text in Kodi. You can choose the font, size, colour, location and contents of the text to be displayed.<br />
=== Example ===<br />
<syntaxhighlight lang="XML" enclose="div"><br />
<control type="label" id="1"><br />
<description>My First label</description><br />
<left>80</left><br />
<top>60</top><br />
<width>250</width><br />
<visible>true</visible><br />
<align>center</align><br />
<aligny>center</aligny><br />
<scroll>false</scroll><br />
<label fallback="$LOCALIZE[123]">$INFO[MusicPlayer.Artist]</label><br />
<angle>30</angle><br />
<haspath>false</haspath><br />
<font>font14</font><br />
<textcolor>FFB2D4F5</textcolor><br />
<shadowcolor>ff000000</shadowcolor><br />
<wrapmultiline>false</wrapmultiline><br />
<scrollspeed>50</scrollspeed><br />
<scrollsuffix> - </scrollsuffix><br />
</control><br />
</syntaxhighlight><br />
<br />
=== Auto size labels ===<br />
<br />
Wrapping your label in a grouplist with the auto width and appropriate minimum and maximum values, allows the labels width to dynamically change relevant to how long the label text is. This allows an image or other control to be aligned to the right of the actual label text no matter how wide the label is.<br />
<br />
<syntaxhighlight lang="XML" enclose="div"><br />
<width min="29" max="200">auto</width><br />
</syntaxhighlight><br />
<br />
Also, simply specifying <width>auto</width> is also supported.<br />
<br />
=== Multi-line labels ===<br />
If you want your label control to span multiple lines, you can insert a new line character in your label. For example:<br />
<br />
<syntaxhighlight lang="XML" enclose="div"><br />
<label>This will be on the first line[CR]And this will be on the second line</label><br />
</syntaxhighlight><br />
<br />
Also, if you want your label control to conform to the <width> parameter, but still want to be able to give it more content than will fit on one line, then setting:<br />
<br />
<syntaxhighlight lang="XML" enclose="div"><br />
<wrapmultiline>true</wrapmultiline><br />
</syntaxhighlight><br />
will cause the text to be cut up (at the spaces in the text) onto multiple lines. Note that if a single word is larger than <width> then it will not be cut, and will still overflow.<br />
<br />
=== Available tags ===<br />
In addition to the '''[[Default Control Tags]]''' the following tags are available. Note that each tag is '''lower case''' only. This is important, as xml tags are case'''-'''sensitive.<br />
<br />
{| class="prettytable"<br />
! Tag<br />
! Description<br />
|-<br />
! align<br />
| Can be left, right, or center. Aligns the text within the given label <code><width></code>. Defaults to left<br />
|-<br />
! aligny<br />
| Can be top or center. Aligns the text within its given label <code><height></code>. Defaults to top<br />
|-<br />
! scroll<br />
| When true, the text will scroll if longer than the label's <code><width></code>. If false, the text will be truncated. Defaults to false.<br />
|-<br />
! label<br />
| Specifies the text which should be drawn. You should specify an entry from the strings.po here (either the Kodi strings.po or your skin's strings.po file). The fallback attribute will be used when the infolabel returns empty. You can use the full [[Label Formatting|label formatting syntax]] and [[Label Parsing|you may also specify more than one piece of information here by using the $INFO and $LOCALIZE formats.]]<br />
|-<br />
! info<br />
| Specifies the information that should be presented. Kodi will <span class="nobr">auto-fill</span> in this info in place of the <code><label></code>. [[InfoLabels|See here for more information.]]<br />
|-<br />
! number<br />
| Specifies a number that should be presented. This is just here to allow a skinner to use a number rather than a text label (as any number given to <code><label></code> will be used to lookup in strings.po)<br />
|-<br />
! angle<br />
| The angle the text should be rendered at, in degrees. A value of 0 is horizontal.<br />
|-<br />
! haspath<br />
| Specifies whether or not this label is filled with a path. Long paths are shortened by compressing the file path while keeping the actual filename full length.<br />
|-<br />
! font<br />
| Specifies the font to use from the font.xml file.<br />
|-<br />
! textcolor<br />
| Specifies the color the text should be, in hex AARRGGBB format, or a name from the [[Colour themes|colour theme.]]<br />
|-<br />
! shadowcolor<br />
| Specifies the color of the drop shadow on the text, in AARRGGBB format, or a name from the [[Colour themes|colour theme.]]<br />
|-<br />
! wrapmultiline<br />
| If true, any text that doesn't fit on one line will be wrapped onto multiple lines.<br />
|-<br />
! scrollspeed<br />
| Scroll speed of text in pixels per second. Defaults to 60.<br />
|-<br />
! scrollsuffix<br />
| Specifies the suffix used in scrolling labels. Defaults to " <nowiki>|</nowiki> ".<br />
|}<br />
<br />
<section end="main content" /><br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
* [[Skinning]]<br />
<br />
[[Category:Skin development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Conditional_visibility&diff=242547Conditional visibility2022-07-13T19:19:29Z<p>Uixtung: </p>
<hr />
<div><section begin="main content" /><br />
All controls benefit from '''conditional visibility''' support. This means that instead of specifying just YES or NO for the <visible> tag, you can provide one of the many preset [[List of Boolean Conditions|boolean conditions]]. Not only that, you can also specify how Kodi should transistion between a visible state and a hidden state.<br />
<br />
For example, the Project Mayhem 3 skin has ''<visible>!Player.HasMedia</visible>'' tags on all the background images on the home page. The reason is that we don't want the images being displayed while a media file (audio or video) is playing or paused, as the video or visualisation will cover the images anyway, so they only take up memory unnecessarily. They also slow down navigation, as the need to be loaded/unloaded depending on whether they are visible (ie whether or not the user has a particular button focused).<br />
<br />
== How They Work ==<br />
The condition given in the <visible> tag is evaluated at during the control's Render() function. Kodi decides whether or not the condition is true, and updates the control's visibility accordingly. So it all happens without Kodi having to do the extra chores of maintaining which controls need to be shown at which points in time. The controls automatically update themselves.<br />
<br />
== Conditional Visibility for Dialogs ==<br />
Dialogs can also be made to popup automatically based on a visibility condition. This is done by supplying the <visible> tag at the top of the window file (where the <id>, <type> and <coordinate> tags are). Kodi once again evaluates this visibility at render time, and if necessary, will create and show the dialog at the appropriate time. It'll also close them once that visibility has vanished.<br />
<br />
This only works with dialogs. For custom windows, you can specify the type of window you require by specifying it using the <type> tag. For more information see the [[Window Structure|window .xml structure page]].<br />
<br />
==Combining Conditions==<br />
You can combine two (or more) of the above settings by using:<br />
* + as AND operator<br />
* | as OR operator<br />
* ! as NOT operator<br />
* [ and ] to bracket expressions<br />
<br />
For example, <visible>Player.HasVideo + Player.Rewinding8x</visible> will only show the control when the player is rewinding a video at 8x, whereas <visible>Player.HasVideo | Player.IsRecording</visible> will show the control if a video is playing, or if we are recording something. <br />
<br />
The AND operator takes precedence over the OR operator when evaluating the logic. AND operators are read from left to right. <br />
<br />
So if you want to show something when condition1 OR condition2 is true AND condition3 is true, you can do:<br />
<visible>[condition1 | condition2] + condition3</visible><br />
<br />
Note that if you missed the brackets, then it would actually be reading «if condition1 or (condition2 and condition3)" due to AND taking precedence over OR.<br />
<br />
Some pointers on boolean logic.<br />
The following holds true:<br />
<br />
A + (B | C) = A + B | A + C<br /><br />
A | (B + C) = (A | B) + (A | C)<br /><br />
<br /><br />
!(A + B) =!A | !B<br /><br />
!(A | B) =!A + !B<br />
<br />
A common mistake is to do something like this:<br />
<br />
!A | !B | !C<br />
<br />
This is false only if A, B and C are all simultaneously true (as it's the same as !(A + B + C)), and you may have possibly been after<br />
<br />
!A + !B + !C<br />
<br />
which is false if A is true, or B is true, or C is true.<br />
<br />
One thing you will notice, is that when a control is hidden, it can't be focused. This means you can't move to a control and have it automatically become visible (eg even if it had Control.HasFocus(myID) it wouldn't come back on, as Kodi wouldn't allow navigation to the hidden control). To solve this issue, you can use:<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<visible allowhiddenfocus="true">Control.HasFocus(21)</visible><br />
</syntaxhighlight><br />
on a control of <id> 21. This will allow the control to be focusable even when it's hidden. When the user moves to the hidden control, it will automatically unhide itself, due to the Control.HasFocus(21) visibility condition.<br />
<section end="main content" /><br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
* [[Skinning]]<br />
<br />
[[Category:Skin development]]</div>Uixtunghttps://kodi.wiki/index.php?title=Conditional_visibility&diff=242546Conditional visibility2022-07-13T19:18:13Z<p>Uixtung: cleanup</p>
<hr />
<div><section begin="main content" /><br />
All controls benefit from '''conditional visibility''' support. This means that, instead of specifying just YES or NO for the <visible> tag, you can provide one of the many preset [[List of Boolean Conditions|boolean conditions]]. Not only that, you can also specify how Kodi should transistion between a visible state and a hidden state.<br />
<br />
For example, the Project Mayhem 3 skin has ''<visible>!Player.HasMedia</visible>'' tags on all the background images on the home page. The reason is that we don't want the images being displayed while a media file (audio or video) is playing or paused, as the video or visualisation will cover the images anyway, so they only take up memory unnecessarily. They also slow down navigation, as the need to be loaded/unloaded depending on whether they are visible (ie whether or not the user has a particular button focused).<br />
<br />
== How They Work ==<br />
The condition given in the <visible> tag is evaluated at during the control's Render() function. Kodi decides whether or not the condition is true, and updates the control's visibility accordingly. So it all happens without Kodi having to do the extra chores of maintaining which controls need to be shown at which points in time. The controls automatically update themselves.<br />
<br />
== Conditional Visibility for Dialogs ==<br />
Dialogs can also be made to popup automatically based on a visibility condition. This is done by supplying the <visible> tag at the top of the window file (where the <id>, <type> and <coordinate> tags are). Kodi once again evaluates this visibility at render time, and if necessary, will create and show the dialog at the appropriate time. It'll also close them once that visibility has vanished.<br />
<br />
This only works with dialogs. For custom windows, you can specify the type of window you require by specifying it using the <type> tag. For more information see the [[Window Structure|window .xml structure page]].<br />
<br />
==Combining Conditions==<br />
You can combine two (or more) of the above settings by using:<br />
* + as AND operator<br />
* | as OR operator<br />
* ! as NOT operator<br />
* [ and ] to bracket expressions<br />
<br />
For example, <visible>Player.HasVideo + Player.Rewinding8x</visible> will only show the control when the player is rewinding a video at 8x, whereas <visible>Player.HasVideo | Player.IsRecording</visible> will show the control if a video is playing, or if we are recording something. <br />
<br />
The AND operator takes precedence over the OR operator when evaluating the logic. AND operators are read from left to right. <br />
<br />
So if you want to show something when condition1 OR condition2 is true AND condition3 is true, you can do:<br />
<visible>[condition1 | condition2] + condition3</visible><br />
<br />
Note that if you missed the brackets, then it would actually be reading «if condition1 or (condition2 and condition3)" due to AND taking precedence over OR.<br />
<br />
Some pointers on boolean logic.<br />
The following holds true:<br />
<br />
A + (B | C) = A + B | A + C<br /><br />
A | (B + C) = (A | B) + (A | C)<br /><br />
<br /><br />
!(A + B) =!A | !B<br /><br />
!(A | B) =!A + !B<br />
<br />
A common mistake is to do something like this:<br />
<br />
!A | !B | !C<br />
<br />
This is false only if A, B and C are all simultaneously true (as it's the same as !(A + B + C)), and you may have possibly been after<br />
<br />
!A + !B + !C<br />
<br />
which is false if A is true, or B is true, or C is true.<br />
<br />
One thing you will notice, is that when a control is hidden, it can't be focused. This means you can't move to a control and have it automatically become visible (eg even if it had Control.HasFocus(myID) it wouldn't come back on, as Kodi wouldn't allow navigation to the hidden control). To solve this issue, you can use:<br />
<syntaxhighlight lang="xml" enclose="div"><br />
<visible allowhiddenfocus="true">Control.HasFocus(21)</visible><br />
</syntaxhighlight><br />
on a control of <id> 21. This will allow the control to be focusable even when it's hidden. When the user moves to the hidden control, it will automatically unhide itself, due to the Control.HasFocus(21) visibility condition.<br />
<section end="main content" /><br />
<br />
== See also ==<br />
'''Development:'''<br />
* [[Add-on development]]<br />
* [[Skinning]]<br />
<br />
[[Category:Skin development]]</div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_volume_value_to_Estuary&diff=242544HOW-TO:Add volume value to Estuary2022-07-11T08:42:45Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]]}}<br />
This tutorial will show how to add a volume value (number, percent or decibel) below the volume circle. This is achieved by editing DialogVolumeBar.xml (...\Kodi\addons\skin.estuary\xml\DialogVolumeBar.xml)<br />
<br />
All the code below should be added inside <code><controls>...</controls></code> but outside <code><control type="group">...</control></code><br />
<br />
{{Note|Kodi's audio is based on decibel and doesn't have 100 different levels, it has 90 (default). So at a couple places the volume will skip 2 points. E.g. 89%-91%.}}<br />
<br />
<gallery widths=194px heights=150px><br />
File:Mod-estuary-original.png|Original volume circle<br />
File:Mod1-estuary-number.png|MOD1 - number<br />
File:Mod2-estuary-percent.png|MOD2 - percent<br />
File:Mod3-estuary-db.png|MOD3 - decibel<br />
</gallery><br />
<br />
==Add volume value as a number or percent==<br />
Add this code:<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>!Player.Muted</visible><br />
<description>Volume value, number</description><br />
<left>935</left><br />
<top>90</top><br />
<font>font45</font> <br />
<shadowcolor>black</shadowcolor><br />
<label>$INFO[Control.GetLabel(29999)]</label><br />
</control><br />
</syntaxhighlight><br />
<br />
To add as percent add this instead:<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>!Player.Muted</visible><br />
<description>Volume value, percent</description><br />
<left>915</left><br />
<top>90</top><br />
<font>font45</font> <br />
<shadowcolor>black</shadowcolor><br />
<label>$INFO[Control.GetLabel(29999),,%]</label><br />
</control><br />
</syntaxhighlight><br />
<br />
==Add volume value as decibel (dB)==<br />
Add this code:<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>!Player.Muted</visible><br />
<description>Volume value, decibel (dB)</description><br />
<left>877</left><br />
<top>90</top><br />
<font>font45</font> <br />
<shadowcolor>black</shadowcolor><br />
<label>$INFO[Player.Volume]</label><br />
</control><br />
</syntaxhighlight><br />
<br />
[[Category:Skin_development]]</div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242542HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T11:36:03Z<p>Uixtung: /* Hide the eye image when all episodes are watched */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml'' (same section as above)<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the control above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")|String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
This looks best if you ''don't'' do mod 4. You can always see TotalEpisodes on the info page for the TV Show.<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242541HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T11:04:31Z<p>Uixtung: /* Show W/T when UWE=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml'' (same section as above)<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the control above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")|String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242540HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:59:08Z<p>Uixtung: /* Show W/T when UWE=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml'' (same section as above)<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the control above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242539HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:56:41Z<p>Uixtung: /* Show W/T when W=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml'' (same section as above)<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242538HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:48:44Z<p>Uixtung: /* Show W/T when W=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)</visible><br />
<top>320</top><br />
<control type="image"><br />
<left>35</left><br />
<top>0</top><br />
<width>250</width><br />
<height>50</height><br />
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture><br />
<visible>!String.IsEmpty(ListItem.Art(poster))</visible><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this control section '''after''' </control><br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242537HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:37:44Z<p>Uixtung: /* Show W/T | UW when W!=0 and UWE!=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml"> <visible>!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242536HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:30:35Z<p>Uixtung: /* Show W/T | UW when W!=0 and UWE!=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
e.g. 3/50 | 47<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242535HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:27:53Z<p>Uixtung: /* Show W/T | UW when W!=0 and UWE!=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
Show "Watched / Total | Unwatched"<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242534HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:25:14Z<p>Uixtung: /* Show W/T | UW when W!=0 AND UWE!=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 and UWE!=0 ==<br />
"Watched / Total | Unwatched"<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242533HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:23:09Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add '''UnWatchedEpisodes (UWE)''' count to TV Show posters. Default only '''"WatchedEpisodes / TotalEpisodes" (W/T)''' is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 AND UWE!=0 ==<br />
"Watched / Total | Unwatched"<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242532HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:21:50Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UW) count to TV Show posters. Default only "WatchedEpisodes / TotalEpisodes" (W/T) is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 AND UWE!=0 ==<br />
"Watched / Total | Unwatched"<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Show W/T when UWE=0 ==<br />
Change in the above section<br />
<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
to<br />
<syntaxhighlight lang="xml"><visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242531HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-07-10T10:09:24Z<p>Uixtung: /* Show W/T | UW when W!=0 */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UW) count to TV Show posters. Default only "WatchedEpisodes / TotalEpisodes" (W/T) is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 AND UWE!=0 ==<br />
"Watched / Total | Unwatched"<br />
<br />
'''IF''' Watched !=0<br />
<br />
e.g. '''NOT''' 0/50<br />
<br />
'''AND'''<br />
<br />
'''IF''' Unwatched !=0<br />
<br />
e.g. '''NOT''' 50/50 <br />
<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")+!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242183HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:28:12Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UW) count to TV Show posters. Default only "WatchedEpisodes / TotalEpisodes" (W/T) is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UW".<br />
<br />
== Show W/T | UW when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show W/T when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242182HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:26:04Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only "WatchedEpisodes / TotalEpisodes" (W/T) is shown. This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UWE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242181HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:15:53Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "WatchedEpisodes / TotalEpisodes" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UWE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242180HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:11:04Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "WatchedEpisodes / TotalEpisodes" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UWE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242179HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:08:45Z<p>Uixtung: /* Hide the eye image when all episodes are watched */</p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "Watched / Total" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UWE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
Add this code in the control section to hide the eye<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242178HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:07:03Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "Watched / Total" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T | UWE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
add this code in the control section to hide the eye:<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242177HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:04:39Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "Watched / Total" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T" to "W/T (UWE)".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
add this code in the control section to hide the eye:<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242176HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:03:58Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "Watched / Total" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T EYE" to "W/T (UWE) EYE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
add this code in the control section to hide the eye:<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtunghttps://kodi.wiki/index.php?title=HOW-TO:Add_UnWatchedEpisodes_to_TV_Show_posters_in_Estuary&diff=242175HOW-TO:Add UnWatchedEpisodes to TV Show posters in Estuary2022-06-02T19:03:07Z<p>Uixtung: </p>
<hr />
<div>{{mininav| [[Skinning]] | [[Estuary]] }}<br />
__FORCETOC__<br />
<br />
This tutorial will show how to add UnWatchedEpisodes (UWE) count to TV Show posters. Default only shows "Watched / Total" (W/T). This will change the TV posters on the Home page (In Progress and Unwatched) and the TV Show views Poster, InfoWall and Wall.<br />
<br />
This is achieved by editing ''View_54_InfoWall.xml'' (...\Kodi\addons\skin.estuary\xml\).<br />
<br />
== Add UnWatchedEpisodes ==<br />
<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
Change <br />
<syntaxhighlight lang="xml"<br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
</syntaxhighlight><br />
to<br />
<syntaxhighlight lang="xml"<br />
<label>$INFO[ListItem.Property(WatchedEpisodes)] $INFO[ListItem.Property(TotalEpisodes), / ,] | $INFO[ListItem.Property(UnWatchedEpisodes)]</label><br />
</syntaxhighlight><br />
<br />
This changes poster text from "W/T EYE" to "W/T (UWE) EYE".<br />
<br />
== Show Watched/Total | UnWatchedEpisodes when W!=0 ==<br />
Add this in control section above<br />
<syntaxhighlight lang="xml">!String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</syntaxhighlight><br />
<br />
== Show Watched/Total when W=0 ==<br />
Find this in ''View_54_InfoWall.xml''<br />
<syntaxhighlight lang="xml"><br />
<control type="group"><br />
<visible>String.IsEqual(ListItem.DBtype,tvshow)<br />
</syntaxhighlight><br />
<br />
Add this control section in the group<br />
<syntaxhighlight lang="xml"><br />
<control type="label"><br />
<visible>String.IsEqual(ListItem.Property(WatchedEpisodes),"0")</visible> <br />
<left>0</left><br />
<top>20</top><br />
<width>244</width><br />
<label>$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</label><br />
<font>font20_title</font><br />
<shadowcolor>text_shadow</shadowcolor><br />
<align>right</align><br />
</control><br />
</syntaxhighlight><br />
<br />
== Hide the eye image when all episodes are watched ==<br />
In the above control ''group'' find this<br />
<syntaxhighlight lang="xml"><br />
<control type="image"><br />
<left>254</left><br />
<top>23</top><br />
<width>24</width><br />
<height>24</height><br />
<texture>lists/played-total.png</texture><br />
</control><br />
</syntaxhighlight><br />
<br />
add this code in the control section to hide the eye:<br />
<syntaxhighlight lang="xml"><visible>!String.IsEqual(ListItem.Property(UnWatchedEpisodes),"0")</visible></syntaxhighlight></div>Uixtung