• 1
  • 4
  • 5
  • 6(current)
  • 7
  • 8
  • 84
Release plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners
#76
Hi @jurialmunkey 

Getting failed to parse error addon.xml when installing latest version

Could you have a look

Thanks

Edit: I manually extracted the folder and it installed fine.

Also what is the property for where a cast member is born?

Whats the best way to get the tmdb_id to show the list of images of an actor when highlighted. Seems can only use tmdb_id when searching for images
code:
Images of the Person 
Code:
plugin://plugin.video.themoviedb.helper/?info=images&type=image
Types: image
Accepts: tmdb_id=

Could you implement searching for images using the actor name as query also?

Thanks again
Reply
#77
(2019-08-09, 13:59)bsoriano Wrote:
(2019-08-09, 01:13)jurialmunkey Wrote:
(2019-08-09, 00:31)bsoriano Wrote: @jurialmunkey, thanks! Would you consider adding Director as a single property/infolabel? That way it would be a lot easier to present this info in the video info dialog.  Thanks.

Regards,

Bart

Added.
ListItem.Director - added to if crew member job is "director"
ListItem.Writer - added to if crew member department is "writing"

@jurialmunkey, thank you, I almost have everything for the video info dialog when pressing i from a widget from your plugin. If is not too much to ask, could you add the tmdb id for each cast member? That way I could call your plugin to search for the person by tmdb id as the onclick for each. Thanks.

Regards,

Bart

I can add it, but the detailed item plugin path provides any easier way:

Getting the Folder Path from the Detailed Item
The detailed item plugin path provides a series of items in the following order (these are now always ordered this way).
0. Detailed Item,
1. Cast,
2. Recommended,
3. Similar,
4. Crew,
5. Keywords,
6. Reviews

You can access these in content paths by using the folder path for that item.
For instance, if your detailed item hidden list control is ID="10051"

You can create a cast list like so:
<content>$INFO[Container(10051).ListItemAbsolute(1).FolderPath]</content>

You can do that for any of the above lists. Just change the number in ListItemAbsolute().
You can get the name of the list too:
<label>$INFO[Container(10051).ListItemAbsolute(1).Label]</label>
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#78
(2019-08-09, 14:36)the_bo Wrote: Hi @jurialmunkey 

Getting failed to parse error addon.xml when installing latest version

Could you have a look

Thanks

Edit: I manually extracted the folder and it installed fine.

Also what is the property for where a cast member is born?

Whats the best way to get the tmdb_id to show the list of images of an actor when highlighted. Seems can only use tmdb_id when searching for images
code:
Images of the Person 
Code:
plugin://plugin.video.themoviedb.helper/?info=images&amp;type=image
Types: image
Accepts: tmdb_id=

Could you implement searching for images using the actor name as query also?

Thanks again

ListItem.Property(born)

Sorry, need to update the docs. You just need to specify the type as person:
plugin://plugin.video.themoviedb.helper/?info=images&type=person&query=$INFO[ListItem.Label]
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#79
(2019-08-09, 23:37)jurialmunkey Wrote:
(2019-08-09, 13:59)bsoriano Wrote:
(2019-08-09, 01:13)jurialmunkey Wrote: Added.
ListItem.Director - added to if crew member job is "director"
ListItem.Writer - added to if crew member department is "writing"

@jurialmunkey, thank you, I almost have everything for the video info dialog when pressing i from a widget from your plugin. If is not too much to ask, could you add the tmdb id for each cast member? That way I could call your plugin to search for the person by tmdb id as the onclick for each. Thanks.

Regards,

Bart  

I can add it, but the detailed item plugin path provides any easier way:

Getting the Folder Path from the Detailed Item
The detailed item plugin path provides a series of items in the following order (these are now always ordered this way).
0. Detailed Item,
1. Cast,
2. Recommended,
3. Similar,
4. Crew,
5. Keywords,
6. Reviews

You can access these in content paths by using the folder path for that item.
For instance, if your detailed item hidden list control is ID="10051"

You can create a cast list like so:
<content>$INFO[Container(10051).ListItemAbsolute(1).FolderPath]</content>

You can do that for any of the above lists. Just change the number in ListItemAbsolute().
You can get the name of the list too:
<label>$INFO[Container(10051).ListItemAbsolute(1).Label]</label>  
@jurialmunkey, even better, thank you! Big Grin

So that's an easy way for me to display the cast, but what would happen when I click on any cast item? Since it is not the standard cast list (id 50), I need to provide a custom onclick.  How do I then access the detailed info for that person from a custom person dialog? Sorry if these are basic questions and I am overlooking the obvious.  Thank you for your help.

Regards,

Bart
Reply
#80
(2019-08-09, 23:54)bsoriano Wrote:
(2019-08-09, 23:37)jurialmunkey Wrote:
(2019-08-09, 13:59)bsoriano Wrote: @jurialmunkey, thank you, I almost have everything for the video info dialog when pressing i from a widget from your plugin. If is not too much to ask, could you add the tmdb id for each cast member? That way I could call your plugin to search for the person by tmdb id as the onclick for each. Thanks.

Regards,

Bart  

I can add it, but the detailed item plugin path provides any easier way:

Getting the Folder Path from the Detailed Item
The detailed item plugin path provides a series of items in the following order (these are now always ordered this way).
0. Detailed Item,
1. Cast,
2. Recommended,
3. Similar,
4. Crew,
5. Keywords,
6. Reviews

You can access these in content paths by using the folder path for that item.
For instance, if your detailed item hidden list control is ID="10051"

You can create a cast list like so:
<content>$INFO[Container(10051).ListItemAbsolute(1).FolderPath]</content>

You can do that for any of the above lists. Just change the number in ListItemAbsolute().
You can get the name of the list too:
<label>$INFO[Container(10051).ListItemAbsolute(1).Label]</label>  
@jurialmunkey, even better, thank you! Big Grin

So that's an easy way for me to display the cast, but what would happen when I click on any cast item? Since it is not the standard cast list (id 50), I need to provide a custom onclick.  How do I then access the detailed info for that person from a custom person dialog? Sorry if these are basic questions and I am overlooking the obvious.  Thank you for your help.

Regards,

Bart

Yes, you would need to provide a custom onclick.
Every list that's not itself a detailed list provides the detailed item path as ListItem.FolderPath

So if your cast list was ID=5000 then you could get the detailed info for the currently focused person with
<content>$INFO[Container(5000).ListItem.FolderPath]</content>

That list in turn will produce the detailed item for the person and any associated lists.
The person lists are:
0. Detailed Item
1. Cast in Movies
2. Cast in Tv Shows
3. Crew in Movies
4. Crew in Tv Shows
5. Images


Every item will also put its tmdb_id in ListItem.Property(tmdb_id) so you can do some creative stacking of lists using plugin paths
e.g. You could have a series of lists all based off the focused item in the list above it:
1. Cast
2. Movies starring focused person in list(1)
3. Recommendations based on movies focused in list(2)
4. Similar movies to the recommendation focused in list(3)
5. Cast of the similar movie focused in list(4)
And so on...


In terms of calling info for a person, kodi doesn't provide an info dialog for actors, so you would need to create a custom window and pass the path to it via a window property. The main problem you will encounter is that there won't be a history of the windows called.

I am working on a way where the plugin will store it's history in window properties. In the meantime, if you want something like extendedinfo, then sualfred's script.embuary.info is the way to go. It follows a similar principle to my plugin in that the video window provides a list ID=10051 that you then reference for all the info e.g. Container(10051).ListItem.Plot etc.

You can use my plugin in tandem with sualfred's script to provide additional lists and/or info that his script doesn't.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#81
(2019-08-10, 00:50)jurialmunkey Wrote:
(2019-08-09, 23:54)bsoriano Wrote:
(2019-08-09, 23:37)jurialmunkey Wrote: I can add it, but the detailed item plugin path provides any easier way:

Getting the Folder Path from the Detailed Item
The detailed item plugin path provides a series of items in the following order (these are now always ordered this way).
0. Detailed Item,
1. Cast,
2. Recommended,
3. Similar,
4. Crew,
5. Keywords,
6. Reviews

You can access these in content paths by using the folder path for that item.
For instance, if your detailed item hidden list control is ID="10051"

You can create a cast list like so:
<content>$INFO[Container(10051).ListItemAbsolute(1).FolderPath]</content>

You can do that for any of the above lists. Just change the number in ListItemAbsolute().
You can get the name of the list too:
<label>$INFO[Container(10051).ListItemAbsolute(1).Label]</label>  
@jurialmunkey, even better, thank you! Big Grin

So that's an easy way for me to display the cast, but what would happen when I click on any cast item? Since it is not the standard cast list (id 50), I need to provide a custom onclick.  How do I then access the detailed info for that person from a custom person dialog? Sorry if these are basic questions and I am overlooking the obvious.  Thank you for your help.

Regards,

Bart

Yes, you would need to provide a custom onclick.
Every list that's not itself a detailed list provides the detailed item path as ListItem.FolderPath

So if your cast list was ID=5000 then you could get the detailed info for the currently focused person with
<content>$INFO[Container(5000).ListItem.FolderPath]</content>

That list in turn will produce the detailed item for the person and any associated lists.
The person lists are:
0. Detailed Item
1. Cast in Movies
2. Cast in Tv Shows
3. Crew in Movies
4. Crew in Tv Shows
5. Images


Every item will also put its tmdb_id in ListItem.Property(tmdb_id) so you can do some creative stacking of lists using plugin paths
e.g. You could have a series of lists all based off the focused item in the list above it:
1. Cast
2. Movies starring focused person in list(1)
3. Recommendations based on movies focused in list(2)
4. Similar movies to the recommendation focused in list(3)
5. Cast of the similar movie focused in list(4)
And so on...


In terms of calling info for a person, kodi doesn't provide an info dialog for actors, so you would need to create a custom window and pass the path to it via a window property. The main problem you will encounter is that there won't be a history of the windows called.

I am working on a way where the plugin will store it's history in window properties. In the meantime, if you want something like extendedinfo, then sualfred's script.embuary.info is the way to go. It follows a similar principle to my plugin in that the video window provides a list ID=10051 that you then reference for all the info e.g. Container(10051).ListItem.Plot etc.

You can use my plugin in tandem with sualfred's script to provide additional lists and/or info that his script doesn't.

@jurialmunkey, thank you! I think that the easiest route for me then will be to call embuary.info on the onclick for the cast item. I was planning on using the plugin anyway and skin the person dialog and the video dialog that come with the plugin.

I am loving being able to provide info for movies that are not in my library with your plugin, and I am so glad to be able to have again all of the tmdb widgets without a performance hit! Thank you so much for your wonderful work.

Regards,

Bart
Reply
#82
@bsoriano
I've just added a few script functions that assist managing windows and plugin paths when overriding <onclick> actions.

Adding a Path to the History
Code:
<onclick>RunScript(plugin.video.themoviedb.helper,add_path=$INFO[ListItem.FolderPath],call_id=1134)</onclick>

This command will add the path to a window property:
Code:
$INFO[Window(Home).Property(TMDbHelper.Path.Current)]

Then it will open the call_id window:
Code:
ActivateWindow(1134)

This will allow you to create a custom window with ID=1140 to act as a custom info dialog.
In the window, add a hidden list to be the detailed item:
Code:
<content>$INFO[Window(Home).Property(TMDbHelper.Path.Current)]</content>

The important part is that the add_path command stores each path in a breadcrumb history which can then be walked back through.

Returning to a previous path
To return to a previous path, you use the "del_path" command to delete the current path and replace it with the previously added path
Code:
RunScript(plugin.video.themoviedb.helper,del_path)

Now TMDbHelper.Path.Current will be the path added before the last one.
Each del_path command will step one back into the path history.

You can use this in the <onunload> of your custom window so that hitting back will set the path back to the previous one.
Code:
<onunload>RunScript(plugin.video.themoviedb.helper,del_path)</onunload>


Preventing the path from being deleted
However, there is a problem: if you just added a path, then a new window will activate and the current window unloading will delete the path you just added. To prevent this from happening, you can add "prevent_del" to the "add_path" command:
Code:
<onclick>RunScript(plugin.video.themoviedb.helper,prevent_del,add_path=$INFO[ListItem.FolderPath],call_id=1140)</onclick>

This command will add a "lock" to the added path.
If the lock is on, then the next del_path command will delete the lock rather than the path.

This means that when you add the path, the onunload command is effectively prevented from deleting the path (it only deletes the lock).
However, if you press "Back" then the onunload command will instead delete the path allowing you to go back to the previous one.


Resetting the paths
Code:
RunScript(plugin.video.themoviedb.helper,reset_path)
This command will delete all the history.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#83
(2019-08-10, 06:20)jurialmunkey Wrote: @bsoriano
I've just added a few script functions that assist managing windows and plugin paths when overriding <onclick> actions.

Adding a Path to the History
Code:
<onclick>RunScript(plugin.video.themoviedb.helper,add_path=$INFO[ListItem.FolderPath],call_id=1134)</onclick>

This command will add the path to a window property:
Code:
$INFO[Window(Home).Property(TMDbHelper.Path.Current)]

Then it will open the call_id window:
Code:
ActivateWindow(1134)

This will allow you to create a custom window with ID=1140 to act as a custom info dialog.
In the window, add a hidden list to be the detailed item:
Code:
<content>$INFO[Window(Home).Property(TMDbHelper.Path.Current)]</content>

The important part is that the add_path command stores each path in a breadcrumb history which can then be walked back through.

Returning to a previous path
To return to a previous path, you use the "del_path" command to delete the current path and replace it with the previously added path
Code:
RunScript(plugin.video.themoviedb.helper,del_path)

Now TMDbHelper.Path.Current will be the path added before the last one.
Each del_path command will step one back into the path history.

You can use this in the <onunload> of your custom window so that hitting back will set the path back to the previous one.
Code:
<onunload>RunScript(plugin.video.themoviedb.helper,del_path)</onunload>


Preventing the path from being deleted
However, there is a problem: if you just added a path, then a new window will activate and the current window unloading will delete the path you just added. To prevent this from happening, you can add "prevent_del" to the "add_path" command:
Code:
<onclick>RunScript(plugin.video.themoviedb.helper,prevent_del,add_path=$INFO[ListItem.FolderPath],call_id=1140)</onclick>

This command will add a "lock" to the added path.
If the lock is on, then the next del_path command will delete the lock rather than the path.

This means that when you add the path, the onunload command is effectively prevented from deleting the path (it only deletes the lock).
However, if you press "Back" then the onunload command will instead delete the path allowing you to go back to the previous one.


Resetting the paths
Code:
RunScript(plugin.video.themoviedb.helper,reset_path)
This command will delete all the history.

@jurialmunkey, this is great, thank you! I will try these new functions! Now I can do everything within your plugin. Thanks again.

Regards,

Bart
Reply
#84
Have a look at latest version of AZ2 for how to integrate the plugin into a skin using the history management commands.
Specifically, look at how windows 1136/1137 link with the videoinfo dialog.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#85
(2019-08-10, 16:13)jurialmunkey Wrote: Have a look at latest version of AZ2 for how to integrate the plugin into a skin using the history management commands.
Specifically, look at how windows 1136/1137 link with the videoinfo dialog.

@jurialmunkey , thank you so much for providing a reference implementation! I took a look and I am not quite sure why window 1137 is required? Pardon me if this is obvious and I am just not skilled enough to understand it right away.

Regards,

Bart
Reply
#86
(2019-08-11, 17:31)bsoriano Wrote:
(2019-08-10, 16:13)jurialmunkey Wrote: Have a look at latest version of AZ2 for how to integrate the plugin into a skin using the history management commands.
Specifically, look at how windows 1136/1137 link with the videoinfo dialog.

@jurialmunkey , thank you so much for providing a reference implementation! I took a look and I am not quite sure why window 1137 is required? Pardon me if this is obvious and I am just not skilled enough to understand it right away.

Regards,

Bart

It's to force window 1136 to reload when changing the plugin path.

If you activatewindow(1136) from 1136, Kodi doesn't reload the window as you're already there. As a result, you don't get any windowclose/open animations. Also, what happens is the videoinfo dialog closes, the plugin path in hidden list id="9999" changes, but DialogVideoInfo never reopens because 9999 doesn't get focus (I think it is because it already had focus before DialogVideoInfo was triggered).

If you look at id="9999" in 1136, you will see a trick I do where I wait from the plugin path to load before calling the info dialog. Basically when the list is focused, the condition checks if it's finished updating and has an item - if yes it does Action(Info) and opens DialogVideoInfo, if no it sets a 1 second alarmclock to set focus back on the list and retrigger the checks. It keeps repeating this loop until the item loads and the info dialog opens (it also has an additional check for if the plugin path is for a person and sets focus to the "fake" info dialog which is the code below the list).

To get the above trick to trigger, you need to setfocus(9999). However, you can't do it from inside DialogVideoInfo as Kodi thinks you want to focus a control in the dialog. You can set a delay with an alarmclock, but you have to hope that the delay correctly syncs with your DialogVideoInfo closing animation - most of the time it is fine, but occasionally you get a delay with Kodi closing a window and then the setfocus won't work correctly.

Instead what I do is activatewindow(1137) and then once that window loads, I immediately do a replacewindow(1136) [replacewindow means that the current window is not added to the window history]. This way I can completely clear window 1136 and then reload it with the new item - it makes it act like I'm opening it for the first time every time and so the plugin path is empty and focus gets set to 9999 correctly. It also ensures that I get nice dialog opening and closing animations.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#87
(2019-08-11, 23:45)jurialmunkey Wrote:
(2019-08-11, 17:31)bsoriano Wrote:
(2019-08-10, 16:13)jurialmunkey Wrote: Have a look at latest version of AZ2 for how to integrate the plugin into a skin using the history management commands.
Specifically, look at how windows 1136/1137 link with the videoinfo dialog.

@jurialmunkey , thank you so much for providing a reference implementation! I took a look and I am not quite sure why window 1137 is required? Pardon me if this is obvious and I am just not skilled enough to understand it right away.

Regards,

Bart

It's to force window 1136 to reload when changing the plugin path.

If you activatewindow(1136) from 1136, Kodi doesn't reload the window as you're already there. As a result, you don't get any windowclose/open animations. Also, what happens is the videoinfo dialog closes, the plugin path in hidden list id="9999" changes, but DialogVideoInfo never reopens because 9999 doesn't get focus (I think it is because it already had focus before DialogVideoInfo was triggered).

If you look at id="9999" in 1136, you will see a trick I do where I wait from the plugin path to load before calling the info dialog. Basically when the list is focused, the condition checks if it's finished updating and has an item - if yes it does Action(Info) and opens DialogVideoInfo, if no it sets a 1 second alarmclock to set focus back on the list and retrigger the checks. It keeps repeating this loop until the item loads and the info dialog opens (it also has an additional check for if the plugin path is for a person and sets focus to the "fake" info dialog which is the code below the list).

To get the above trick to trigger, you need to setfocus(9999). However, you can't do it from inside DialogVideoInfo as Kodi thinks you want to focus a control in the dialog. You can set a delay with an alarmclock, but you have to hope that the delay correctly syncs with your DialogVideoInfo closing animation - most of the time it is fine, but occasionally you get a delay with Kodi closing a window and then the setfocus won't work correctly.

Instead what I do is activatewindow(1137) and then once that window loads, I immediately do a replacewindow(1136) [replacewindow means that the current window is not added to the window history]. This way I can completely clear window 1136 and then reload it with the new item - it makes it act like I'm opening it for the first time every time and so the plugin path is empty and focus gets set to 9999 correctly. It also ensures that I get nice dialog opening and closing animations.

@jurialmunkey, thank you so much! This is truly advanced skinning! Are you OK with me adapting your code for Amber? Please let me know. Thanks.

Regards,

Bart
Reply
#88
(2019-08-12, 01:31)bsoriano Wrote:
(2019-08-11, 23:45)jurialmunkey Wrote:
(2019-08-11, 17:31)bsoriano Wrote: @jurialmunkey , thank you so much for providing a reference implementation! I took a look and I am not quite sure why window 1137 is required? Pardon me if this is obvious and I am just not skilled enough to understand it right away.

Regards,

Bart

It's to force window 1136 to reload when changing the plugin path.

If you activatewindow(1136) from 1136, Kodi doesn't reload the window as you're already there. As a result, you don't get any windowclose/open animations. Also, what happens is the videoinfo dialog closes, the plugin path in hidden list id="9999" changes, but DialogVideoInfo never reopens because 9999 doesn't get focus (I think it is because it already had focus before DialogVideoInfo was triggered).

If you look at id="9999" in 1136, you will see a trick I do where I wait from the plugin path to load before calling the info dialog. Basically when the list is focused, the condition checks if it's finished updating and has an item - if yes it does Action(Info) and opens DialogVideoInfo, if no it sets a 1 second alarmclock to set focus back on the list and retrigger the checks. It keeps repeating this loop until the item loads and the info dialog opens (it also has an additional check for if the plugin path is for a person and sets focus to the "fake" info dialog which is the code below the list).

To get the above trick to trigger, you need to setfocus(9999). However, you can't do it from inside DialogVideoInfo as Kodi thinks you want to focus a control in the dialog. You can set a delay with an alarmclock, but you have to hope that the delay correctly syncs with your DialogVideoInfo closing animation - most of the time it is fine, but occasionally you get a delay with Kodi closing a window and then the setfocus won't work correctly.

Instead what I do is activatewindow(1137) and then once that window loads, I immediately do a replacewindow(1136) [replacewindow means that the current window is not added to the window history]. This way I can completely clear window 1136 and then reload it with the new item - it makes it act like I'm opening it for the first time every time and so the plugin path is empty and focus gets set to 9999 correctly. It also ensures that I get nice dialog opening and closing animations.

@jurialmunkey, thank you so much! This is truly advanced skinning! Are you OK with me adapting your code for Amber? Please let me know. Thanks.

Regards,

Bart
Yeah go for it!

The main advantage of doing things this way versus using sualfreds script is that you can mix local and online content using only the native info dialog (sualfreds script is certainly much easier to setup though!). You also get much more control over how windows are managed

If you look at the onclick actions for my lists you will see I have a different path for items with a dbid. This is a local library path filtered by the title of the item (basically smart playlist rules as a folder path). That way you get the local content with the native info dialog.
Arctic Fuse - Alpha now available. Support me on Ko-fi.
Reply
#89
@jurialmunkey 

I'm trying to hide certain actor info based on whether person has deceased or not using string.isempty. Seems getting booleans errors in log have checked syntax is correct.

This is code

xml:
<control type="list" id="12345">
                            <width>1</width>
                            <height>1</height>
                            <itemlayout />
                            <focusedlayout />
                            <content>plugin://plugin.video.themoviedb.helper/?info=details&amp;type=person&amp;query=$INFO[Container(7000).ListItem.Label]</content>
                        </control>
                   
                       
                   
                         <control type="label">
                            <left>-100</left>
                            <top>825</top>
                            <align>center</align>
                            <font>Font_trailer</font>
                            <label>$INFO[Container(7000).ListItem.Label]</label>
                        </control>
                        <control type="label">
                            <left>970</left>
                            <top>0</top>
                            <font>Font_bio30</font>
                            <label>Born: $INFO[Container(12345).ListItem.Property(born)]</label>
                            <visible>!Container(12345).IsUpdating</visible>
                        </control>
                         <control type="label">
                            <left>970</left>
                            <top>100</top>
                            <font>Font_bio30</font>
                            <label>Birthday: $INFO[Container(12345).ListItem.Property(birthday)]      Died Aged: $INFO[Container(12345).ListItem.Property(age)]    Death: $INFO[Container(12345).ListItem.Property(deathday)]</label>
                            <visible>!Container(12345).IsUpdating + !String.IsEmpty($INFO[Container(12345).ListItem.Property(deathday)])</visible>
                        </control>
                         <control type="label">
                            <left>970</left>
                            <top>100</top>
                            <font>Font_bio30</font>
                            <label>Birthday: $INFO[Container(12345).ListItem.Property(birthday)]      Age: $INFO[Container(12345).ListItem.Property(age)]</label>
                            <visible>!Container(12345).IsUpdating + String.IsEmpty($INFO[Container(12345).ListItem.Property(deathday)])</visible>
                        </control>
                       
                         <control type="textbox">
                            <left>970</left>
                            <top>200</top>
                            <width>810</width>
                            <height>360</height>
                            <font>font_plot</font>
                            <label>$INFO[Container(12345).ListItem.Property(biography)]</label>
                            <autoscroll delay="10000" time="3000" repeat="10000">!Skin.HasSetting(noallowscroll)</autoscroll>
                            <visible>!Container(12345).IsUpdating</visible>
                        </control>
                        <control type="textbox">
                            <left>970</left>
                            <top>200</top>
                            <width>810</width>
                            <height>360</height>
                            <font>font_plot</font>
                            <label>No Bio Available</label>
                            <autoscroll delay="10000" time="3000" repeat="10000">!Skin.HasSetting(noallowscroll)</autoscroll>
                            <visible>String.IsEmpty($INFO[Container(12345).ListItem.Property(biography)])</visible>
                        </control>

Log errors

code:
WARNING: Trying to add unsupported control type 1
2019-08-12 14:24:53.786 T:1915156016   ERROR: Misplaced [
2019-08-12 14:24:53.786 T:1915156016   ERROR: Error parsing boolean expression !container(12345).isupdating + !string.isempty($info[container(12345).listitem.property(deathday)])
2019-08-12 14:24:53.787 T:1915156016   ERROR: Misplaced [
2019-08-12 14:24:53.787 T:1915156016   ERROR: Error parsing boolean expression !container(12345).isupdating + string.isempty($info[container(12345).listitem.property(deathday)])
2019-08-12 14:24:53.789 T:1915156016   ERROR: Misplaced [
2019-08-12 14:24:53.789 T:1915156016   ERROR: Error parsing boolean expression string.isempty($info[container(12345).listitem.property(biography)])

Any help where i'm going wrong?

Thanks
Reply
#90
No need for the $INFO[...] tags -

xml:
String.IsEmpty(Container(12345).ListItem.Property(deathday))
Reply
  • 1
  • 4
  • 5
  • 6(current)
  • 7
  • 8
  • 84

Logout Mark Read Team Forum Stats Members Help
plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners2