Difference between revisions of "Extended Properties"
(67 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
|- | |- | ||
! Property !! Value !! Example !! Dynamic !! Since Version !! class="unsortable" | Description | ! Property !! Value !! Example !! Dynamic !! Since Version !! class="unsortable" | Description | ||
− | |- | + | |-v |
| <code>button:{BUTTON_ID}:action</code> || <code>{ACTION}</code> || | | <code>button:{BUTTON_ID}:action</code> || <code>{ACTION}</code> || | ||
<code>"button:content:action": "info:Custom content action executed."</code><br/> | <code>"button:content:action": "info:Custom content action executed."</code><br/> | ||
Line 19: | Line 19: | ||
<code>"button:speed:action": "info:Custom speed action executed."</code><br/> | <code>"button:speed:action": "info:Custom speed action executed."</code><br/> | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up a custom player button action (all buttons except the eject button are supported). By default, the following actions are executed. | + | Sets up a custom player button action (all buttons except the eject button are supported). Please see [[Internal Actions]] for possible values. By default, the following actions are executed. |
* <code>content</code>: <code>player:content</code> | * <code>content</code>: <code>player:content</code> | ||
Line 66: | Line 66: | ||
<code>"button:speed:focus": "true"</code><br/> | <code>"button:speed:focus": "true"</code><br/> | ||
<code>"button:eject:focus": "true"</code><br/> | <code>"button:eject:focus": "true"</code><br/> | ||
+ | <code>"button:none:focus": "true"</code><br/> | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
− | Focuses a player button (if player is loaded). | + | Focuses a player button (if the player is loaded). If the button <code>none</code> is used, no button is focused (i.e. the last selected button is retained) if the player is loaded via an execution event. |
+ | |||
+ | '''Note: By default, the button <code>play_pause</code> is focused if the player is loaded via an execution event (e.g. if the OK key is pressed while the video/audio is in foreground).''' | ||
|- | |- | ||
| <code>button:{BUTTON_ID}:icon</code> || <code>{ICON}</code> || | | <code>button:{BUTTON_ID}:icon</code> || <code>{ICON}</code> || | ||
Line 79: | Line 82: | ||
<code>"button:speed:icon": "slow-motion-video"</code><br/> | <code>"button:speed:icon": "slow-motion-video"</code><br/> | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up a custom player button icon (all buttons except the eject button are supported). By default, the following icons are used. | + | Sets up a custom player button icon (all buttons except the eject button are supported). Please see [[Icons]] for possible values. By default, the following icons are used. |
* <code>content</code>: <code>pageview</code> <big>{{icon|pageview}}</big> | * <code>content</code>: <code>pageview</code> <big>{{icon|pageview}}</big> | ||
Line 102: | Line 105: | ||
<code>"button:speed:key": "8"</code><br/> | <code>"button:speed:key": "8"</code><br/> | ||
<code>"button:eject:key": "9"</code><br/> | <code>"button:eject:key": "9"</code><br/> | ||
− | || | + | || '''Yes''' || data-sort-value=132|'''0.1.132''' || |
− | Sets up a player button shortcut key. | + | Sets up a player button shortcut key. Please see [[Key Property]] for possible values. |
|- | |- | ||
| <code>control:action</code> || <code>{ACTION}</code> || | | <code>control:action</code> || <code>{ACTION}</code> || | ||
<code>"control:action": "info:Custom player control action executed."</code><br/> | <code>"control:action": "info:Custom player control action executed."</code><br/> | ||
− | || | + | || '''Yes''' || data-sort-value=140|'''0.1.140''' || |
− | Sets up a custom player control action (replacement for the action that is executed if the OK key is pressed while the video/audio is in foreground). By default, the action <code>player: | + | Sets up a custom player control action (replacement for the action that is executed if the OK key is pressed while the video/audio is in foreground). Please see [[Internal Actions]] for possible values. By default, the action <code>player:default</code> is executed. |
'''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
+ | |- | ||
+ | | <code>control:dim</code> || <code>{BOOLEAN_VALUE}</code> || | ||
+ | <code>"control:dim": "true"</code><br/> | ||
+ | <code>"control:dim": "false"</code><br/> | ||
+ | || No || data-sort-value=148|'''0.1.148''' || | ||
+ | Indicates if the application background should be dimmed when this video is playing. By default, the application background is dimmed to provide a better user experince for videos on devices that do not have a 16:9 screen ratio (by setting the gray background to black). However, if this video is a plugin that displays images or renders objects, this property can be set to <code>"false"</code> to keep the gray background. | ||
+ | |||
+ | '''Note: This property only affects mobile and desktop devices, because all current TV devices have a 16:9 screen ratio. Please also note that this property only has an effect if zoom or scale settings are used.''' | ||
|- | |- | ||
| <code>control:load</code> || <code>{LOAD_MODE}</code> || | | <code>control:load</code> || <code>{LOAD_MODE}</code> || | ||
Line 116: | Line 127: | ||
<code>"control:load": "silent"</code><br/> | <code>"control:load": "silent"</code><br/> | ||
|| No || data-sort-value=111|'''0.1.111''' || | || No || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up the player control load mode. If the mode is set to <code>"silent"</code>, the player is not shown if the video/audio | + | Sets up the player control load mode. If the mode is set to <code>"silent"</code>, the player is not shown if the video/audio is loaded in auto mode (e.g. if the action <code>player:auto:next</code> is executed). |
+ | |- | ||
+ | | <code>control:retune</code> || <code>{RETUNE_MODE}</code> || | ||
+ | <code>"control:retune": "default"</code><br/> | ||
+ | <code>"control:retune": "retain"</code><br/> | ||
+ | <code>"control:retune": "play"</code><br/> | ||
+ | <code>"control:retune": "restart"</code><br/> | ||
+ | || No || data-sort-value=145|'''0.1.145''' || | ||
+ | Sets up the player control retune mode. If the mode is set to <code>"retain"</code>, <code>"play"</code>, or <code>"restart"</code> and the (resolved) video/audio URL matches the active one, the active video/audio URL is reused. In case of <code>"retain"</code>, the active video/audio play/pause state is retained. In case of <code>"play"</code>, the active video/audio is played again (if it was paused). In case of <code>"restart"</code>, the active video/audio is restarted. By default, the active video/audio URL is never reused and the new URL is retuned. If the active video/audio has already been ended, this property is ignored. | ||
+ | |||
+ | '''Note: Please note that if the active video/audio URL is reused (in contrast to the <code>control:reuse</code> property), all extended properties of the video/audio data (e.g. <code>"control:type"</code>, <code>"progress:type"</code>, <code>"trigger:{TRIGGER_KEY}"</code>, etc.) are applied. Additionally, all properties that were set at runtime are cleared.''' | ||
|- | |- | ||
| <code>control:return</code> || <code>{RETURN_MODE}</code> || | | <code>control:return</code> || <code>{RETURN_MODE}</code> || | ||
Line 130: | Line 151: | ||
<code>"control:reuse": "restart"</code><br/> | <code>"control:reuse": "restart"</code><br/> | ||
|| No || data-sort-value=142|'''0.1.142''' || | || No || data-sort-value=142|'''0.1.142''' || | ||
− | Sets up the player control reuse mode. If the mode is set to <code>"retain"</code>, <code>"play"</code>, or <code>"restart"</code> and the video/audio base data matches the active one (i.e. <code>id</code>, <code>index</code>, <code>number</code>, <code>type</code>, <code>url</code>, <code>label</code>, <code>background</code> etc. are the same), the active video/audio data is reused. In case of <code>"retain"</code>, the active video/audio play/pause state is retained. In case of <code>"play"</code>, the active video/audio is played again (if it was paused). In case of <code>"restart"</code>, the active video/audio is restarted. By default, the active video/audio data is never reused and the new data is applied and the video/audio is retuned. | + | Sets up the player control reuse mode. If the mode is set to <code>"retain"</code>, <code>"play"</code>, or <code>"restart"</code> and the video/audio base data matches the active one (i.e. <code>id</code>, <code>index</code>, <code>number</code>, <code>type</code>, <code>url</code>, <code>label</code>, <code>background</code> etc. are the same), the active video/audio data is reused. In case of <code>"retain"</code>, the active video/audio play/pause state is retained. In case of <code>"play"</code>, the active video/audio is played again (if it was paused). In case of <code>"restart"</code>, the active video/audio is restarted. By default, the active video/audio data is never reused and the new data is applied and the video/audio is retuned. If the active video/audio has already been ended, this property is ignored. |
− | '''Note: Please note that if the active video/audio data is reused, all extended properties of the new data (e.g. <code>"control:type"</code>, <code>"progress:type"</code>, <code>"trigger:{TRIGGER_KEY}"</code>, etc.) are ignored, because the active ones are reused. Additionally, all properties that were set at runtime are retained.''' | + | '''Note: Please note that if the active video/audio data is reused (in contrast to the <code>control:retune</code> property), all extended properties of the new data (e.g. <code>"control:type"</code>, <code>"progress:type"</code>, <code>"trigger:{TRIGGER_KEY}"</code>, etc.) are ignored, because the active ones are reused. Additionally, all properties that were set at runtime are retained.''' |
|- | |- | ||
| <code>control:transparent</code> || <code>{BOOLEAN_VALUE}</code> || | | <code>control:transparent</code> || <code>{BOOLEAN_VALUE}</code> || | ||
Line 146: | Line 167: | ||
<code>"control:type": "extended"</code><br/> | <code>"control:type": "extended"</code><br/> | ||
|| No || data-sort-value=130|'''0.1.130''' || | || No || data-sort-value=130|'''0.1.130''' || | ||
− | Sets up the player control type. If the type is set to <code>"extended"</code>, the player is displayed in fullscreen mode, it will not disappear in pause mode, and it is possible to use the <code>info:text</code> | + | Sets up the player control type. If the type is set to <code>"extended"</code>, the player is displayed in fullscreen mode, it will not disappear in pause mode, and it is possible to use the <code>info:headline</code>, <code>info:text</code>, <code>info:image</code>, and <code>progress:display</code> properties. |
|- | |- | ||
| <code>image:action</code> || <code>{ACTION}</code> || | | <code>image:action</code> || <code>{ACTION}</code> || | ||
<code>"image:action": "info:Custom image action executed."</code><br/> | <code>"image:action": "info:Custom image action executed."</code><br/> | ||
− | || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
− | Sets up a custom slideshow image action (replacement for the default slideshow image action). By default, the action <code>slider: | + | Sets up a custom slideshow image action (replacement for the default slideshow image action). Please see [[Internal Actions]] for possible values. By default, the action <code>slider:default</code> is executed. |
'''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
Line 157: | Line 178: | ||
| <code>image:extension</code> || <code>{LABEL}</code> || | | <code>image:extension</code> || <code>{LABEL}</code> || | ||
<code>"image:extension": "Custom image extension label"</code><br/> | <code>"image:extension": "Custom image extension label"</code><br/> | ||
− | || | + | || '''Yes''' || data-sort-value=111|'''0.1.111''' || |
Sets up an additional slideshow image extension label (displayed in the slideshow labels). | Sets up an additional slideshow image extension label (displayed in the slideshow labels). | ||
This property supports [[Inline Expressions]]. | This property supports [[Inline Expressions]]. | ||
Line 163: | Line 184: | ||
| <code>image:icon</code> || <code>{ICON}</code> || | | <code>image:icon</code> || <code>{ICON}</code> || | ||
<code>"image:icon": "info"</code><br/> | <code>"image:icon": "info"</code><br/> | ||
− | || | + | || '''Yes''' || data-sort-value=145|'''0.1.145''' || |
− | Sets up a custom slideshow image icon (displayed in the slideshow labels on the left side). This icon should be used to give a hint of the custom slideshow image action. If this property is set to <code>"slider:options"</code>, the icon of the selected image options item is used (unless the default item is selected). | + | Sets up a custom slideshow image icon (displayed in the slideshow labels on the left side). Please see [[Icons]] for possible values. This icon should be used to give a hint of the custom slideshow image action. If this property is set to <code>"slider:options"</code>, the icon of the selected image options item is used (unless the default item is selected). |
'''Note: To use this property, the <code>image:action</code> property must also be set, otherwise this property is ignored.''' | '''Note: To use this property, the <code>image:action</code> property must also be set, otherwise this property is ignored.''' | ||
Line 173: | Line 194: | ||
|| No || data-sort-value=145|'''0.1.145''' || | || No || data-sort-value=145|'''0.1.145''' || | ||
Activates/Deactives slideshow image options (e.g. to rotate the current slideshow image). The availability of image options for the current image is indicated in the slideshow labels on the right side. By default, slideshow image options are deactivated. | Activates/Deactives slideshow image options (e.g. to rotate the current slideshow image). The availability of image options for the current image is indicated in the slideshow labels on the right side. By default, slideshow image options are deactivated. | ||
+ | |||
+ | '''Note: If slideshow image options are activated, you can also use the remote control buttons <code>REWIND</code> and <code>FORWARD</code> to rotate the image to left and right.''' | ||
|- | |- | ||
| <code>image:rotation:trigger</code> || <code>{ACTION}</code> || | | <code>image:rotation:trigger</code> || <code>{ACTION}</code> || | ||
<code>"image:rotation:trigger": "info:Image has been rotated."</code><br/> | <code>"image:rotation:trigger": "info:Image has been rotated."</code><br/> | ||
|| No || data-sort-value=145|'''0.1.145''' || | || No || data-sort-value=145|'''0.1.145''' || | ||
− | Sets up a slideshow image rotation trigger. | + | Sets up a slideshow image rotation trigger. Please see [[Internal Actions]] for possible values. |
'''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
Line 192: | Line 215: | ||
Sets up a slideshow image rotation value in degrees. | Sets up a slideshow image rotation value in degrees. | ||
− | '''Note: The rotation value must be divisible by 90, otherwise <code>"0"</code> is used | + | '''Note: The rotation value must be divisible by 90, otherwise <code>"0"</code> is used.''' |
|- | |- | ||
| <code>image:trigger</code> || <code>{ACTION}</code> || | | <code>image:trigger</code> || <code>{ACTION}</code> || | ||
<code>"image:trigger": "info:Image is visible."</code><br/> | <code>"image:trigger": "info:Image is visible."</code><br/> | ||
|| No || data-sort-value=111|'''0.1.111''' || | || No || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up a slideshow image trigger. | + | Sets up a slideshow image trigger. Please see [[Internal Actions]] for possible values. |
'''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
+ | |- | ||
+ | | <code>info:headline</code> || <code>{HEADLINE}</code> || | ||
+ | <code>"info:headline": "Additional video/audio information headline"</code><br/> | ||
+ | <code>"info:headline": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=154|'''0.1.154''' || | ||
+ | Sets up a player info headline. | ||
+ | This property supports [[Inline Expressions]]. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
|- | |- | ||
| <code>info:image</code> || <code>{URL}</code> || | | <code>info:image</code> || <code>{URL}</code> || | ||
Line 205: | Line 237: | ||
<code>"info:image": "default"</code><br/> | <code>"info:image": "default"</code><br/> | ||
|| '''Yes''' || data-sort-value=130|'''0.1.130''' || | || '''Yes''' || data-sort-value=130|'''0.1.130''' || | ||
− | Sets up a player info image. The area of the image is 128x416 (WxH) pixels at layout resolution 720p (192x624 at 1080p). The image is sized to fill the entire width (by keeping the ratio) and is positioned at the top. | + | Sets up a player info image. Please see property <code>"info:size"</code> for the size of the area. |
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
+ | |- | ||
+ | | <code>info:overlay</code> || <code>{OVERLAY}</code> || | ||
+ | <code>"info:overlay": "full"</code><br/> | ||
+ | <code>"info:overlay": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=146|'''0.1.146''' || | ||
+ | Sets up the player info overlay. By default, only the top and bottom edges have an overlay. If you want to show a lot of text (i.e. by using the <code>info:text</code> property), it is recommended to use the <code>"full"</code> overlay. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
+ | |- | ||
+ | | <code>info:round</code> || <code>{BOOLEAN_VALUE}</code> || | ||
+ | <code>"image:round": "true"</code><br/> | ||
+ | <code>"image:round": "false"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=156|'''0.1.156''' || | ||
+ | Enables/Disables rounded corners of the info image if the rounded style is used. By default, the info image corners are rounded for this style. Disabling rounded corners can be useful when using transparent logos that use some corners. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
+ | |- | ||
+ | | <code>info:size</code> || <code>{SIZE}</code> || | ||
+ | <code>"info:size": "small"</code><br/> | ||
+ | <code>"info:size": "medium"</code><br/> | ||
+ | <code>"info:size": "large"</code><br/> | ||
+ | <code>"info:size": "extra-large"</code><br/> | ||
+ | <code>"info:size": "default"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=146|'''0.1.146''' || | ||
+ | Sets up the size of the player info image area. By default, the size is set to <code>"medium"</code>. | ||
+ | |||
+ | * <code>"small"</code>: The area of the image is 64x416 (WxH) pixels at layout resolution 720p (96x624 at 1080p). | ||
+ | * <code>"medium"</code>: The area of the image is 128x416 (WxH) pixels at layout resolution 720p (192x624 at 1080p). | ||
+ | * <code>"large"</code>: The area of the image is 256x416 (WxH) pixels at layout resolution 720p (384x624 at 1080p). | ||
+ | * <code>"extra-large"</code>: The area of the image is 512x416 (WxH) pixels at layout resolution 720p (768x624 at 1080p). | ||
+ | |||
+ | The image is sized to fill the entire width (by keeping the ratio) and is positioned at the top. | ||
'''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
|- | |- | ||
| <code>info:text</code> || <code>{TEXT}</code> || | | <code>info:text</code> || <code>{TEXT}</code> || | ||
− | <code>"info:text": "Additional video/audio information."</code><br/> | + | <code>"info:text": "Additional video/audio information text."</code><br/> |
<code>"info:text": "default"</code><br/> | <code>"info:text": "default"</code><br/> | ||
|| '''Yes''' || data-sort-value=130|'''0.1.130''' || | || '''Yes''' || data-sort-value=130|'''0.1.130''' || | ||
Line 253: | Line 319: | ||
<code>"progress:color": "default"</code><br/> | <code>"progress:color": "default"</code><br/> | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up the player progress color. | + | Sets up the player progress color. Please see [[Colors]] for possible values. |
+ | |- | ||
+ | | <code>progress:display</code> || <code>{BOOLEAN_VALUE}</code> || | ||
+ | <code>"progress:display": "true"</code><br/> | ||
+ | <code>"progress:display": "false"</code><br/> | ||
+ | || No || data-sort-value=161|'''0.1.161''' || | ||
+ | Shows/Hides the player progress bar. By default, the progress bar is always visible. Hiding the progress bar can be useful for very special plugins that do not display any video or audio, but instead display an animated canvas, for example. | ||
+ | |||
+ | '''Note: To use this property, the <code>conrtol:type</code> property must be set to <code>"extended"</code>, otherwise this property is ignored.''' | ||
+ | |- | ||
+ | | <code>progress:duration</code> || <code>{PROGRESS_DURATION}</code> || | ||
+ | <code>"progress:duration:": "60"</code><br/> | ||
+ | <code>"progress:duration:": "-1"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=146|'''0.1.146''' || | ||
+ | Sets up the player progress duration in seconds (overrides the default duration value of the video/audio player with a custom value). The duration <code>-1</code> is default and uses the value of the video/audio player. | ||
+ | |||
+ | '''Note: Please note that this duration is only used in the player controls (it is not used for trigger and resume functions, nor for live playback objects).''' | ||
|- | |- | ||
| <code>progress:marker:enable</code> || <code>{BOOLEAN_VALUE}</code> || | | <code>progress:marker:enable</code> || <code>{BOOLEAN_VALUE}</code> || | ||
Line 260: | Line 342: | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
Enables/Disables the player progress marker. | Enables/Disables the player progress marker. | ||
+ | |||
+ | '''Note: If the <code>conrtol:type</code> property is set to <code>"extended"</code> and the <code>progress:display</code> property is set to <code>"false"</code>, this property is ignored.''' | ||
+ | |- | ||
+ | | <code>progress:position</code> || <code>{PROGRESS_POSITION}</code> || | ||
+ | <code>"progress:position:": "0"</code><br/> | ||
+ | <code>"progress:position:": "-1"</code><br/> | ||
+ | || '''Yes''' || data-sort-value=146|'''0.1.146''' || | ||
+ | Sets up the player progress position (overrides the default position value of the video/audio player with a custom value). The position <code>-1</code> is default and uses the value of the video/audio player. | ||
+ | |||
+ | '''Note: Please note that this position is only used in the player controls (it is not used for trigger and resume functions, nor for live playback objects).''' | ||
|- | |- | ||
| <code>progress:type</code> || <code>{PROGRESS_TYPE}</code> || | | <code>progress:type</code> || <code>{PROGRESS_TYPE}</code> || | ||
Line 287: | Line 379: | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
Sets up the player progress type (<code>"default"</code> is like <code>"time:hh:mm:ss"</code>). For the type that starts with (or contains) <code>position:</code>, the <code>{POSITION}</code> part is automatically replaced with the corresponding position value. For the type that starts with (or contains) <code>number:</code>, the <code>{NUMBER}</code> part is automatically replaced with the corresponding number value (which is the incremented position value). | Sets up the player progress type (<code>"default"</code> is like <code>"time:hh:mm:ss"</code>). For the type that starts with (or contains) <code>position:</code>, the <code>{POSITION}</code> part is automatically replaced with the corresponding position value. For the type that starts with (or contains) <code>number:</code>, the <code>{NUMBER}</code> part is automatically replaced with the corresponding number value (which is the incremented position value). | ||
+ | |- | ||
+ | | <code>resume:context</code> || <code>{RESUME_CONTEXT}</code> || | ||
+ | <code>"resume:context": "custom_resume_context"</code><br/> | ||
+ | || No || data-sort-value=153|'''0.1.153''' || | ||
+ | Sets up a resume context for the corresponding resume key. The context can be used to clear multiple resume keys at once (e.g. for a specific service or series). | ||
+ | |||
+ | '''Note: To use this property, the <code>resume:key</code> property must also be set, otherwise this property is ignored. The context is stored as hash code on the local device to the corresponding resume key.''' | ||
|- | |- | ||
| <code>resume:key</code> || <code>{RESUME_KEY}</code> || | | <code>resume:key</code> || <code>{RESUME_KEY}</code> || | ||
Line 300: | Line 399: | ||
<code>"resume:position": "10"</code><br/> | <code>"resume:position": "10"</code><br/> | ||
<code>"resume:position": "10%"</code><br/> | <code>"resume:position": "10%"</code><br/> | ||
+ | <code>"resume:position": "none"</code><br/> | ||
|| '''Yes''' || data-sort-value=111|'''0.1.111''' || | || '''Yes''' || data-sort-value=111|'''0.1.111''' || | ||
− | Sets up a fix resume position in seconds or percentage to start the content from there. | + | Sets up a fix resume position in seconds or percentage to start the content from there. If the resume position is set to <code>"none"</code>, no resuming is performed. |
|- | |- | ||
| <code>trigger:{TRIGGER_KEY}</code> || <code>{ACTION}</code> || | | <code>trigger:{TRIGGER_KEY}</code> || <code>{ACTION}</code> || | ||
Line 307: | Line 407: | ||
<code>"trigger:ready": "info:Video ready."</code><br/> | <code>"trigger:ready": "info:Video ready."</code><br/> | ||
<code>"trigger:start": "info:Video started."</code><br/> | <code>"trigger:start": "info:Video started."</code><br/> | ||
+ | <code>"trigger:ending": "info:Video is ending (video is playing and 10 seconds or less are remaining)."</code><br/> | ||
<code>"trigger:end": "info:Video ended."</code><br/> | <code>"trigger:end": "info:Video ended."</code><br/> | ||
<code>"trigger:complete": "info:Video completed."</code><br/> | <code>"trigger:complete": "info:Video completed."</code><br/> | ||
Line 312: | Line 413: | ||
<code>"trigger:10%": "info:10% of video passed."</code><br/> | <code>"trigger:10%": "info:10% of video passed."</code><br/> | ||
<code>"trigger:10t": "info:10 ticks of video passed."</code><br/> | <code>"trigger:10t": "info:10 ticks of video passed."</code><br/> | ||
+ | <code>"trigger:-10": "info:Last 10 seconds of video passed."</code><br/> | ||
<code>"trigger:20": "shot:info:20 seconds of video passed (shot)."</code><br/> | <code>"trigger:20": "shot:info:20 seconds of video passed (shot)."</code><br/> | ||
<code>"trigger:20%": "shot:info:20% of video passed (shot)."</code><br/> | <code>"trigger:20%": "shot:info:20% of video passed (shot)."</code><br/> | ||
<code>"trigger:20t": "shot:info:20 ticks of video passed (shot)."</code><br/> | <code>"trigger:20t": "shot:info:20 ticks of video passed (shot)."</code><br/> | ||
+ | <code>"trigger:-20": "shot:info:Last 20 seconds of video passed (shot)".</code><br/> | ||
<code>"trigger:quartile1": "info:First quartile of video entered."</code><br/> | <code>"trigger:quartile1": "info:First quartile of video entered."</code><br/> | ||
<code>"trigger:quartile2": "info:Second quartile of video entered."</code><br/> | <code>"trigger:quartile2": "info:Second quartile of video entered."</code><br/> | ||
Line 332: | Line 435: | ||
<code>"trigger:back" ":info:Video back executed."</code><br/> | <code>"trigger:back" ":info:Video back executed."</code><br/> | ||
|| '''Yes''' || data-sort-value=58|'''0.1.58''' || | || '''Yes''' || data-sort-value=58|'''0.1.58''' || | ||
− | Sets up a video/audio trigger. | + | Sets up a video/audio trigger. Please see [[Internal Actions]] for possible values. |
'''Note: For trigger key <code>complete</code>, the action <code>player:auto:next</code> is automatically set (please use trigger key <code>end</code> if you want to keep the default complete action). For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | '''Note: For trigger key <code>complete</code>, the action <code>player:auto:next</code> is automatically set (please use trigger key <code>end</code> if you want to keep the default complete action). For property actions, it is not possible to provide an action-related <code>data</code> property. If you want to execute a property data action, please use the <code>execute:fetch:{URL}</code> action, alternatively.''' | ||
Line 339: | Line 442: | ||
<code>"video:duration:": "60"</code><br/> | <code>"video:duration:": "60"</code><br/> | ||
|| '''Yes''' || data-sort-value=128|'''0.1.128''' || | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
− | Sets up a custom video duration in seconds. If a custom duration is set, only that duration is displayed during playback. It can be used for live data or ads to disable/override the progress feature. The duration <code>-1</code> is default and enables the display feature. | + | Sets up a custom video duration in seconds. If a custom duration is set, only that duration is displayed (and used for trigger and resume functions, as well as live playback objects) during playback. It can be used for live data or ads to disable/override the progress feature. The duration <code>-1</code> is default and enables the display feature. |
|- | |- | ||
| <code>video:position</code> || <code>{VIDEO_POSITION}</code> || | | <code>video:position</code> || <code>{VIDEO_POSITION}</code> || | ||
<code>"video:position:": "0"</code><br/> | <code>"video:position:": "0"</code><br/> | ||
|| '''Yes''' || data-sort-value=128|'''0.1.128''' || | || '''Yes''' || data-sort-value=128|'''0.1.128''' || | ||
− | Sets up a custom video position in seconds. If a custom position is set, only that position is displayed during playback and it is not possible to seek to another position (instead a <code>custom:video:seek</code> event is triggered). It can be used for live data or ads to disable/override the progress feature. The position <code>-1</code> is default and enables the display and seek feature. The position <code>-2</code> only enables the display feature (it is not possible to seek to another position). | + | Sets up a custom video position in seconds. If a custom position is set, only that position is displayed (and used for trigger and resume functions, as well as live playback objects) during playback and it is not possible to seek to another position (instead a <code>custom:video:seek</code> event is triggered). It can be used for live data or ads to disable/override the progress feature. The position <code>-1</code> is default and enables the display and seek feature. The position <code>-2</code> only enables the display feature (it is not possible to seek to another position). |
|- | |- | ||
| <code>video:speed</code> || <code>{VIDEO_SPEED}</code> || | | <code>video:speed</code> || <code>{VIDEO_SPEED}</code> || | ||
Line 373: | Line 476: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
− | "type": " | + | "type": "list", |
"headline": "Extended Properties Test", | "headline": "Extended Properties Test", | ||
"template": { | "template": { | ||
Line 480: | Line 583: | ||
"button:play_pause:action": "[player:play_pause|player:hide_play]", | "button:play_pause:action": "[player:play_pause|player:hide_play]", | ||
"info:text": "This video shows a quick play/pause function.{br}{ico:msx-white:play-arrow} If you press {txt:msx-white:OK} while the video is in foreground, it is paused.{br}{ico:msx-white:play-arrow} If you return to foreground, it is resumed.{br}" | "info:text": "This video shows a quick play/pause function.{br}{ico:msx-white:play-arrow} If you press {txt:msx-white:OK} while the video is in foreground, it is paused.{br}{ico:msx-white:play-arrow} If you return to foreground, it is resumed.{br}" | ||
+ | } | ||
+ | }, { | ||
+ | "badge": "Extended", | ||
+ | "title": "Video 7", | ||
+ | "titleFooter": "0.1.146+", | ||
+ | "playerLabel": "Video 7", | ||
+ | "action": "video:http://msx.benzac.de/media/video7.mp4", | ||
+ | "properties": { | ||
+ | "control:type": "extended", | ||
+ | "info:image": "http://msx.benzac.de/media/thumbs/video7.jpg", | ||
+ | "info:size": "large", | ||
+ | "info:overlay": "full", | ||
+ | "info:text": "This video shows a next video selection when the video is ending (i.e. the video is playing and 10 seconds or less are remaining).", | ||
+ | "trigger:ending": "content:http://msx.benzac.de/info/xp/data/next_video_test.json", | ||
+ | "trigger:complete": "[]" | ||
} | } | ||
}] | }] | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | === Demo === | ||
+ | * Launch via App: https://msx.benzac.de/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json | ||
+ | * Launch via Demo Page: https://msx.benzac.de/info/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json | ||
== Related Hidden Features == | == Related Hidden Features == | ||
+ | * [[Key Property]] | ||
* [[Option Shortcut]] | * [[Option Shortcut]] | ||
* [[Image Options]] | * [[Image Options]] | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 19:09, 19 November 2024
These properties can be used for special use cases and are only valid for version 0.1.58+. Each property is a key-value pair of type string
and can be set in the properties
property of a Content Item Object. The dynamic properties can also be set via an action at runtime. For more information, please see Internal Actions.
Note: It is also possible to set values of type boolean
or number
as non-string
values (e.g. "true"
→ true
or "123"
→ 123
).
Syntax[edit]
Property | Value | Example | Dynamic | Since Version | Description |
---|---|---|---|---|---|
button:{BUTTON_ID}:action |
{ACTION} |
|
Yes | 0.1.111 |
Sets up a custom player button action (all buttons except the eject button are supported). Please see Internal Actions for possible values. By default, the following actions are executed.
Note: To use this property, the corresponding |
button:{BUTTON_ID}:display |
{BOOLEAN_VALUE} |
|
No | 0.1.130 |
Shows/Hides a player button (all buttons except the eject button are supported). |
button:{BUTTON_ID}:enable |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Enables/Disables a player button (all buttons except the eject button are supported). |
button:{BUTTON_ID}:focus |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Focuses a player button (if the player is loaded). If the button Note: By default, the button |
button:{BUTTON_ID}:icon |
{ICON} |
|
Yes | 0.1.111 |
Sets up a custom player button icon (all buttons except the eject button are supported). Please see Icons for possible values. By default, the following icons are used.
Note: To use this property, the corresponding |
button:{BUTTON_ID}:key |
{KEY} |
|
Yes | 0.1.132 |
Sets up a player button shortcut key. Please see Key Property for possible values. |
control:action |
{ACTION} |
|
Yes | 0.1.140 |
Sets up a custom player control action (replacement for the action that is executed if the OK key is pressed while the video/audio is in foreground). Please see Internal Actions for possible values. By default, the action Note: For property actions, it is not possible to provide an action-related |
control:dim |
{BOOLEAN_VALUE} |
|
No | 0.1.148 |
Indicates if the application background should be dimmed when this video is playing. By default, the application background is dimmed to provide a better user experince for videos on devices that do not have a 16:9 screen ratio (by setting the gray background to black). However, if this video is a plugin that displays images or renders objects, this property can be set to Note: This property only affects mobile and desktop devices, because all current TV devices have a 16:9 screen ratio. Please also note that this property only has an effect if zoom or scale settings are used. |
control:load |
{LOAD_MODE} |
|
No | 0.1.111 |
Sets up the player control load mode. If the mode is set to |
control:retune |
{RETUNE_MODE} |
|
No | 0.1.145 |
Sets up the player control retune mode. If the mode is set to Note: Please note that if the active video/audio URL is reused (in contrast to the |
control:return |
{RETURN_MODE} |
|
No | 0.1.140 |
Sets up the player control return mode. If the mode is set to |
control:reuse |
{REUSE_MODE} |
|
No | 0.1.142 |
Sets up the player control reuse mode. If the mode is set to Note: Please note that if the active video/audio data is reused (in contrast to the |
control:transparent |
{BOOLEAN_VALUE} |
|
No | 0.1.142 |
Indicates if a corresponding content background can be transparent when this video/audio is active. By default, the content background is set to a semi-transparent gray to darken the underlying video/audio and make the content more visible. If this video/audio is suitable for transparent mode (e.g. dark atmospheric background videos), this property can be set to Note: To use this property, the |
control:type |
{CONTROL_TYPE} |
|
No | 0.1.130 |
Sets up the player control type. If the type is set to |
image:action |
{ACTION} |
|
Yes | 0.1.111 |
Sets up a custom slideshow image action (replacement for the default slideshow image action). Please see Internal Actions for possible values. By default, the action Note: For property actions, it is not possible to provide an action-related |
image:extension |
{LABEL} |
|
Yes | 0.1.111 |
Sets up an additional slideshow image extension label (displayed in the slideshow labels). This property supports Inline Expressions. |
image:icon |
{ICON} |
|
Yes | 0.1.145 |
Sets up a custom slideshow image icon (displayed in the slideshow labels on the left side). Please see Icons for possible values. This icon should be used to give a hint of the custom slideshow image action. If this property is set to Note: To use this property, the |
image:options |
{BOOLEAN_VALUE} |
|
No | 0.1.145 |
Activates/Deactives slideshow image options (e.g. to rotate the current slideshow image). The availability of image options for the current image is indicated in the slideshow labels on the right side. By default, slideshow image options are deactivated. Note: If slideshow image options are activated, you can also use the remote control buttons |
image:rotation:trigger |
{ACTION} |
|
No | 0.1.145 |
Sets up a slideshow image rotation trigger. Please see Internal Actions for possible values. Note: For property actions, it is not possible to provide an action-related |
image:rotation:value |
{ROTATION_VALUE} |
|
Yes | 0.1.145 |
Sets up a slideshow image rotation value in degrees. Note: The rotation value must be divisible by 90, otherwise |
image:trigger |
{ACTION} |
|
No | 0.1.111 |
Sets up a slideshow image trigger. Please see Internal Actions for possible values. Note: For property actions, it is not possible to provide an action-related |
info:headline |
{HEADLINE} |
|
Yes | 0.1.154 |
Sets up a player info headline. This property supports Inline Expressions. Note: To use this property, the |
info:image |
{URL} |
|
Yes | 0.1.130 |
Sets up a player info image. Please see property Note: To use this property, the |
info:overlay |
{OVERLAY} |
|
Yes | 0.1.146 |
Sets up the player info overlay. By default, only the top and bottom edges have an overlay. If you want to show a lot of text (i.e. by using the Note: To use this property, the |
info:round |
{BOOLEAN_VALUE} |
|
Yes | 0.1.156 |
Enables/Disables rounded corners of the info image if the rounded style is used. By default, the info image corners are rounded for this style. Disabling rounded corners can be useful when using transparent logos that use some corners. Note: To use this property, the |
info:size |
{SIZE} |
|
Yes | 0.1.146 |
Sets up the size of the player info image area. By default, the size is set to
The image is sized to fill the entire width (by keeping the ratio) and is positioned at the top. Note: To use this property, the |
info:text |
{TEXT} |
|
Yes | 0.1.130 |
Sets up a player info text. This property supports Inline Expressions. Note: To use this property, the |
label:duration |
{LABEL} |
|
Yes | 0.1.111 |
Sets up the player duration label (overrides the default duration value of the video/audio player with a custom value). If the custom value contains the |
label:extension |
{LABEL} |
|
Yes | 0.1.111 |
Sets up an additional player extension label. This property supports Inline Expressions and Live Inline Expressions. |
label:position |
{LABEL} |
|
Yes | 0.1.111 |
Sets up the player position label (overrides the default position value of the video/audio player with a custom value). If the custom value contains the |
label:speed |
{LABEL} |
|
Yes | 0.1.130 |
Sets up the player speed label (overrides the default speed value of the video/audio player with a custom value). If the custom value contains the |
progress:color |
{COLOR} |
|
Yes | 0.1.111 |
Sets up the player progress color. Please see Colors for possible values. |
progress:display |
{BOOLEAN_VALUE} |
|
No | 0.1.161 |
Shows/Hides the player progress bar. By default, the progress bar is always visible. Hiding the progress bar can be useful for very special plugins that do not display any video or audio, but instead display an animated canvas, for example. Note: To use this property, the |
progress:duration |
{PROGRESS_DURATION} |
|
Yes | 0.1.146 |
Sets up the player progress duration in seconds (overrides the default duration value of the video/audio player with a custom value). The duration Note: Please note that this duration is only used in the player controls (it is not used for trigger and resume functions, nor for live playback objects). |
progress:marker:enable |
{BOOLEAN_VALUE} |
|
Yes | 0.1.111 |
Enables/Disables the player progress marker. Note: If the |
progress:position |
{PROGRESS_POSITION} |
|
Yes | 0.1.146 |
Sets up the player progress position (overrides the default position value of the video/audio player with a custom value). The position Note: Please note that this position is only used in the player controls (it is not used for trigger and resume functions, nor for live playback objects). |
progress:type |
{PROGRESS_TYPE} |
|
Yes | 0.1.111 |
Sets up the player progress type ( |
resume:context |
{RESUME_CONTEXT} |
|
No | 0.1.153 |
Sets up a resume context for the corresponding resume key. The context can be used to clear multiple resume keys at once (e.g. for a specific service or series). Note: To use this property, the |
resume:key |
{RESUME_KEY} |
|
No | 0.1.111 |
Sets up a resume key to store/restore the content position. If the key is set to Note: The key is stored as hash code on the local device. Stored keys can be cleared with the |
resume:position |
{RESUME_POSITION} |
|
Yes | 0.1.111 |
Sets up a fix resume position in seconds or percentage to start the content from there. If the resume position is set to |
trigger:{TRIGGER_KEY} |
{ACTION} |
|
Yes | 0.1.58 |
Sets up a video/audio trigger. Please see Internal Actions for possible values. Note: For trigger key |
video:duration |
{VIDEO_DURATION} |
|
Yes | 0.1.128 |
Sets up a custom video duration in seconds. If a custom duration is set, only that duration is displayed (and used for trigger and resume functions, as well as live playback objects) during playback. It can be used for live data or ads to disable/override the progress feature. The duration |
video:position |
{VIDEO_POSITION} |
|
Yes | 0.1.128 |
Sets up a custom video position in seconds. If a custom position is set, only that position is displayed (and used for trigger and resume functions, as well as live playback objects) during playback and it is not possible to seek to another position (instead a |
video:speed |
{VIDEO_SPEED} |
|
Yes | 0.1.128 |
Sets up a custom video speed. If a custom speed is set, only that speed is displayed during playback and it is not possible to change it (instead a Note: The actual video speed is not changed. For example, if the custom video speed is set to x0.5, the actual video may still be playing at normal speed. |
video:state |
{VIDEO_STATE} |
|
Yes | 0.1.128 |
Sets up a custom video state. If a custom state is set, only that state is displayed during playback and it is not possible to change it (instead a
Note: The actual video state is not changed. For example, if the custom video state is paused, the actual video may still be in the playing state. |
Example[edit]
Screenshot[edit]
Code[edit]
{
"type": "list",
"headline": "Extended Properties Test",
"template": {
"type": "separate",
"layout": "0,0,2,4",
"icon": "msx-white-soft:movie",
"color": "msx-glass"
},
"items": [{
"title": "Video 1",
"playerLabel": "Video 1",
"action": "video:http://msx.benzac.de/media/video1.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Live info executed.",
"label:duration": "Live",
"label:extension": "{ico:msx-red:live-tv}",
"progress:color": "msx-red",
"progress:type": "reverse:time:[H:]M:ss"
}
}, {
"title": "Video 2",
"playerLabel": "Video 2",
"action": "video:http://msx.benzac.de/media/video2.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Ad info executed.",
"button:forward:enable": "false",
"button:rewind:enable": "false",
"button:restart:enable": "false",
"button:speed:enable": "false",
"label:extension": "{txt:msx-yellow:Ad}",
"progress:color": "msx-yellow",
"progress:type": "text:s",
"progress:marker:enable": "false"
}
}, {
"title": "Video 3",
"playerLabel": "Video 3",
"action": "video:http://msx.benzac.de/media/video4.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Video info executed.",
"label:extension": "{ico:msx-blue:local-play}",
"progress:color": "msx-blue",
"progress:type": "percentage",
"trigger:midpoint": "info:Midpoint of video reached.",
"trigger:third_quartile": "dialog:none"
}
}, {
"badge": "Extended",
"title": "Video 4",
"titleFooter": "0.1.130+",
"playerLabel": "Video 4",
"action": "video:http://msx.benzac.de/media/video5.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "info:Video info executed.",
"button:rewind:icon": "thumb-down",
"button:rewind:action": "info:Thumb down executed.",
"button:forward:icon": "thumb-up",
"button:forward:action": "info:Thumb up executed.",
"button:restart:display": "false",
"button:speed:display": "false",
"label:extension": "{ico:msx-white:ondemand-video} Extended",
"progress:type": "time:[H:]M:ss",
"control:type": "extended",
"info:image": "http://msx.benzac.de/img/icon.png",
"info:text": "Placeholder for additional video information."
}
}, {
"badge": "Extended",
"title": "Video 5",
"titleFooter": "0.1.130+",
"playerLabel": "Video 5",
"action": "video:http://msx.benzac.de/media/video3.mp4",
"properties": {
"button:content:icon": "info",
"button:content:action": "panel:request:interaction:program@http://msx.benzac.de/interaction/live.html",
"button:restart:display": "false",
"button:rewind:display": "false",
"button:play_pause:display": "false",
"button:forward:display": "false",
"button:speed:display": "false",
"label:extension": "{ico:msx-white:access-time} {now:time:hh:mm:ss}",
"label:position": "...",
"label:duration": "...",
"control:type": "extended",
"trigger:load": "interaction:load:http://msx.benzac.de/interaction/live.html",
"trigger:complete": "player:auto:restart",
"info:text": "This video is controlled by an interaction plugin to simulate a live stream.",
"live:channel": "0",
"live:program": "-1"
}
}, {
"badge": "Extended",
"title": "Video 6",
"titleFooter": "0.1.140+",
"playerLabel": "Video 6",
"action": "video:http://msx.benzac.de/media/video6.mp4",
"properties": {
"control:type": "extended",
"control:action": "[player:show:execute|player:pause]",
"trigger:foreground": "player:auto:play",
"button:play_pause:icon": "default",
"button:play_pause:action": "[player:play_pause|player:hide_play]",
"info:text": "This video shows a quick play/pause function.{br}{ico:msx-white:play-arrow} If you press {txt:msx-white:OK} while the video is in foreground, it is paused.{br}{ico:msx-white:play-arrow} If you return to foreground, it is resumed.{br}"
}
}, {
"badge": "Extended",
"title": "Video 7",
"titleFooter": "0.1.146+",
"playerLabel": "Video 7",
"action": "video:http://msx.benzac.de/media/video7.mp4",
"properties": {
"control:type": "extended",
"info:image": "http://msx.benzac.de/media/thumbs/video7.jpg",
"info:size": "large",
"info:overlay": "full",
"info:text": "This video shows a next video selection when the video is ending (i.e. the video is playing and 10 seconds or less are remaining).",
"trigger:ending": "content:http://msx.benzac.de/info/xp/data/next_video_test.json",
"trigger:complete": "[]"
}
}]
}
Demo[edit]
- Launch via App: https://msx.benzac.de/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json
- Launch via Demo Page: https://msx.benzac.de/info/?start=content:https://msx.benzac.de/info/xp/data/properties_test.json