Kodi Community Forum
Release plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Skinning (https://forum.kodi.tv/forumdisplay.php?fid=12)
+---- Forum: Skin helper addons (https://forum.kodi.tv/forumdisplay.php?fid=300)
+---- Thread: Release plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners (/showthread.php?tid=345847)



RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-12

(2019-08-12, 01:55)jurialmunkey Wrote:
(2019-08-12, 01:31)bsoriano Wrote:
(2019-08-11, 23:45)jurialmunkey Wrote: 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. 
@jurialmunkey thank you once more! I did look at the onclick actions and it's a very elegant way to have both online and local content.

Regards,

Bart


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - the_bo - 2019-08-12

(2019-08-12, 16:38)Hitcher Wrote: No need for the $INFO[...] tags -

xml:
String.IsEmpty(Container(12345).ListItem.Property(deathday))

cheers that did the trick


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-13

@jurialmunkey, I am seeing some strange behavior that I cannot explain.  

In my dialogvideoinfo, I have a hidden list that has the plugin's details call as content:

xml:
<include condition="String.IsEqual(ListItem.DBType,movie) + System.HasAddon(plugin.video.themoviedb.helper)">TMDbMovieDetails</include>

And that list in includes.xml is:

xml:

<include name="TMDbMovieDetails">
        <control type="list" id="5100">
            <left>-100</left>
            <top>-100</top>
            <width>100</width>
            <height>100</height>
            <itemlayout height="100" width="100" />
            <focusedlayout height="100" width="100" />
            <content>plugin://plugin.video.themoviedb.helper/?info=details&amp;type=movie&amp;tmdb_id=$INFO[ListItem.Property(tmdb_id)]</content>
        </control>
    </include>

I do this so that when I press i on a widget item from one of the plugin's widgets (say Upcoming Movies, for example), I can get as much information as possible to display in the info dialog (genre, director, writer, etc.)

This works well.  My issue is with the cast.  When I press i the first time on a widget item, my custom cast list does not display.  If I press back in the info dialog, and then press i again on the same widget item, the custom cast list does display.  The same thing happens even if it's not a widget, and I press i on any movie while browsing the library.

For completeness' sake, this is how I have coded my custom cast list:

xml:

<include name="TMDBCastItem">
        <param name="CastListItemID" />
        <definition>
            <item>
                <label>$INFO[Container(5100).ListItemAbsolute(1).Property(Cast.$PARAM[CastListItemID].Name)]</label>
                <label2>$INFO[Container(5100).ListItemAbsolute(1).Property(Cast.$PARAM[CastListItemID].Role)]</label2>
                <icon>$INFO[Container(5100).ListItemAbsolute(1).Property(Cast.$PARAM[CastListItemID].Thumb)]</icon>
                <visible>!String.IsEmpty(Container(5100).ListItemAbsolute(1).Property(Cast.$PARAM[CastListItemID].Name))</visible>
            </item>
        </definition>
    </include>

    <include name="TMDBCastListContent">
        <include content="TMDBCastItem">
            <param name="CastListItemID">1</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">2</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">3</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">4</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">5</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">6</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">7</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">8</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">9</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">10</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">11</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">12</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">13</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">14</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">15</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">16</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">17</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">18</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">19</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">20</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">21</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">22</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">23</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">24</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">25</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">26</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">27</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">28</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">29</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">30</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">31</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">32</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">33</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">34</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">35</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">36</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">37</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">38</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">39</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">40</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">41</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">42</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">43</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">44</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">45</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">46</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">47</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">48</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">49</param>
        </include>
        <include content="TMDBCastItem">
            <param name="CastListItemID">50</param>
        </include>        
    </include>

    <include name="TMDBCast">
        <control type="list" id="951001">
            <width>1180</width>
            <height>410</height>
            <onleft>951001</onleft>
            <onright>951001</onright>
            <onup>9000</onup>
            <scrolltime>200</scrolltime>            
            <orientation>horizontal</orientation>
            <include content="ActorLayout">
                <param name="viewid">951001</param>
            </include>
            <content>
                <include>TMDBCastListContent</include>
            </content>
        </control>
    </include>

And in dialogvideoinfo I have:

xml:

<control type="group">
            <posx>700</posx>
            <posy>640</posy>
            <width>1180</width>
            <height>410</height>
            <onup>9000</onup>
            <ondown>noop</ondown>
            <visible>!Control.HasFocus(10)</visible>
            <include condition="[!Skin.hasSetting(Enable.ExtendedInfo) | ListItem.IsCollection] + String.IsEmpty(Container(5100).ListitemAbsolute(0).Property(tmdb_id))">DefaultCast</include>
            <include condition="Skin.hasSetting(Enable.ExtendedInfo) + !String.IsEqual(ListItem.DBType,set) + String.IsEmpty(Container(5100).ListitemAbsolute(0).Property(tmdb_id))">CustomCast</include>
            <include condition="!String.IsEmpty(Container(5100).ListItemAbsolute(0).Property(tmdb_id))">TMDBCast</include>
        </control>


If I comment out the include for the hidden list from dialogvideoinfo.xml, the cast when browsing my library and pressing i on an item shows up instantly and on the first try.  Obviously, if I press i on a widget item from the plugin, none of the additional info is shown and neither is the custom cast list.

Any ideas why this could be happening? Thank you for your help.

Regards,

Bart


plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - jurialmunkey - 2019-08-13

Include conditions are only evaluated when the window/dialog opens. In your case the tmdb_id in the detailed item doesn't exist when the dialog opens because the plugin hasn't loaded yet, so the associated includes are not "included" as the conditions are false. The second time around the plugin path has already loaded so the code is then included because the condition is true.

You would need to use visible conditions instead if you want something that is evaluated after the dialog opens.

Alternatively you could include based upon ListItem.Property(tmdb_id) of the actual widget because that will already be set from the widget item if its a widget from my plugin.


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-13

(2019-08-13, 00:47)jurialmunkey Wrote: Include conditions are only evaluated when the window/dialog opens. In your case the tmdb_id in the detailed item doesn't exist when the dialog opens because the plugin hasn't loaded yet, so the associated includes are not "included" as the conditions are false. The second time around the plugin path has already loaded so the code is then included because the condition is true.

You would need to use visible conditions instead if you want something that is evaluated after the dialog opens.

Alternatively you could include based upon ListItem.Property(tmdb_id) of the actual widget because that will already be set from the widget item if its a widget from my plugin.
@jurialmunkey, thanks again! I changed the includes to be based on listitem.property(tmdb_id) like you suggested, and now it works Smile

Is there a performance difference in having the custom cast list be based on listitemabsolute(1).folderpath vs the individual items (listitemabsolute(1).property(cast.x.name), etc.)?

Again, thanks a lot for your help.

Regards,

Bart


plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - jurialmunkey - 2019-08-13

If the items are already cached, then not really. If they aren't, then your way is quicker (but more inconvenient) because it only uses the one request whereas having an additional path involves a second request.


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-13

(2019-08-13, 01:52)jurialmunkey Wrote: If the items are already cached, then not really. If they aren't, then your way is quicker (but more inconvenient) because it only uses the one request whereas having an additional path involves a second request.

Ok, thanks!

Regards,

Bart


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - the_bo - 2019-08-13

Getting errors all of a sudden when fetching cast details. Seems to only happen to some actors. Rest work fine.

I can reproduce the error with the actress charlie spradling and John Travolta

Looking at the log seems it can't find the tmdb_id. Have checked spelling on tmdb site and it's correct.

https://www.themoviedb.org/person/147396-charlie-spradling?language=en-US
https://www.themoviedb.org/person/8891-john-travolta?language=en-US


Any idea @jurialmunkey 

Also if possible could you add a property called Movie_Age that lists the actors age when the movie was made. Could use the movie release year and current age and subtract difference.

Many thanks

code:

2019-08-13 13:18:29.705 T:953131744  NOTICE: [plugin.video.themoviedb.helper]
                                            Unable to find TMDb ID!
                                            info=images&type=person&query=Charlie Spradling
2019-08-13 13:18:29.732 T:953131744   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.KeyError'>
                                            Error Contents: 'profiles'
                                            Traceback (most recent call last):
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 514, in <module>
                                                Plugin()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 343, in __init__
                                                self.router()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 506, in router
                                                self.list_items()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 423, in list_items
                                                list_container.request_list()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 332, in request_list
                                                self.listitems = self.listitems[self.request_key]
                                            KeyError: 'profiles'
                                            -->End of Python script error report<--
2019-08-13 13:18:30.112 T:1331671776   ERROR: GetDirectory - Error getting plugin://plugin.video.themoviedb.helper/?info=images&type=person&query=Charlie Spradling

2019-08-13 13:32:16.071 T:1049621216  NOTICE: [plugin.video.themoviedb.helper]
                                            Unable to find TMDb ID!
                                            info=details&type=person&query=John Travolta
2019-08-13 13:32:22.017 T:1184092896  NOTICE: [plugin.video.themoviedb.helper]
                                            Unable to find TMDb ID!
                                            info=images&type=person&query=John Travolta
2019-08-13 13:32:22.038 T:1184092896   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.KeyError'>
                                            Error Contents: 'profiles'
                                            Traceback (most recent call last):
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 514, in <module>
                                                Plugin()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 343, in __init__
                                                self.router()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 506, in router
                                                self.list_items()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 423, in list_items
                                                list_container.request_list()
                                              File "/home/osmc/.kodi/addons/plugin.video.themoviedb.helper/main.py", line 332, in request_list
                                                self.listitems = self.listitems[self.request_key]
                                            KeyError: 'profiles'
                                            -->End of Python script error report<--
2019-08-13 13:32:22.400 T:1606415072   ERROR: GetDirectory - Error getting plugin://plugin.video.themoviedb.helper/?info=images&type=person&query=John Travolta




RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-14

@jurialmunkey , I am also getting errors while trying to show cast details.  It happens with every person.  The error appears to be a JSON error (or a service unavailable error).  An excerpt of the log:

Code:

2019-08-14 16:22:57.697 T:18446744073709551614  NOTICE: [plugin.video.themoviedb.helper]
                                            Requesting... https://api.themoviedb.org/3/search/person?api_key=5e54cbb01927216a9583925bec1bf265&language=en-US&include_image_language=en,null&query=Dwayne Johnson
2019-08-14 16:22:57.906 T:18446744073709551614   ERROR: XFILE::CDirectory::GetDirectory - Error getting
2019-08-14 16:22:58.201 T:18446744073709551614  NOTICE: [plugin.video.themoviedb.helper]
                                            Requesting... https://api.themoviedb.org/3/search/person?api_key=5e54cbb01927216a9583925bec1bf265&language=en-US&include_image_language=en,null&query=Dwayne Johnson
2019-08-14 16:22:58.408 T:18446744073709551614   ERROR: XFILE::CDirectory::GetDirectory - Error getting
2019-08-14 16:22:58.523 T:18446744073709551614  NOTICE: [plugin.video.themoviedb.helper]
                                            HTTP Error Code: 503
2019-08-14 16:22:58.526 T:18446744073709551614  NOTICE: Previous line repeats 1 times.
2019-08-14 16:22:58.526 T:18446744073709551614   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.ValueError'>
                                            Error Contents: No JSON object could be decoded
                                            Traceback (most recent call last):
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\plugin.py", line 12, in <module>
                                                Plugin()
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\plugin.py", line 16, in __init__
                                                self.router()
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\plugin.py", line 185, in router
                                                self.check_tmdb_id()
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\plugin.py", line 151, in check_tmdb_id
                                                item = apis.tmdb_api_request_longcache(request_path, **request_kwparams)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 80, in decorated
                                                my_objects = func(*args, **kwargs)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 128, in tmdb_api_request_longcache
                                                return tmdb_api_request(*args, **kwargs)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 80, in decorated
                                                my_objects = func(*args, **kwargs)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 118, in tmdb_api_request
                                                request = make_request(request, True)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 58, in decorated
                                                return func(*args, **kwargs)
                                              File "C:\Program Files\Kodi\addons\plugin.video.themoviedb.helper\resources\lib\apis.py", line 100, in make_request
                                                request = request.json()  # Make the request nice
                                              File "C:\Program Files\Kodi\addons\script.module.requests\lib\requests\models.py", line 897, in json
                                                return complexjson.loads(self.text, **kwargs)
                                              File "C:\Program Files\Kodi\system\python\Lib\json\__init__.py", line 339, in loads
                                                return _default_decoder.decode(s)
                                              File "C:\Program Files\Kodi\system\python\Lib\json\decoder.py", line 364, in decode
                                                obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                                              File "C:\Program Files\Kodi\system\python\Lib\json\decoder.py", line 382, in raw_decode
                                                raise ValueError("No JSON object could be decoded")
                                            ValueError: No JSON object could be decoded
                                            -->End of Python script error report<--
2019-08-14 16:22:58.578 T:18446744073709551614   ERROR: Previous line repeats 1 times.
2019-08-14 16:22:58.578 T:18446744073709551614   ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.video.themoviedb.helper/?info=details&type=person&query=Dwayne Johnson

The onclick for my custom cast list looks like this:

xml:

<onclick>RunScript(plugin.video.themoviedb.helper,add_path=plugin://plugin.video.themoviedb.helper/?info=details&amp;type=person&amp;query=$INFO[Container(5100).ListItemAbsolute(1).Property(Cast.$PARAM[CastListItemID].Name)],call_id=1129,prevent_del,delay=0.35)</onclick>

Any ideas? TMDB issues? It was working fine yesterday.  Thank you for your help.

Also, would you consider dropping the "Rated" string from the MPAA property that the plugin returns? That way I can (and other skinners I suppose) more easily match against certification flags.

Regards,

Bart


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - Hitcher - 2019-08-14

(2019-08-14, 22:31)bsoriano Wrote: @jurialmunkey , I am also getting errors while trying to show cast details.  It happens with every person.  The error appears to be a JSON error (or a service unavailable error).  An excerpt of the log:

Any ideas? TMDB issues? It was working fine yesterday.  Thank you for your help.

Quote:We are currently experiencing an outage with one of our backend services. I will post an update when we have a better understanding of the issue.
https://twitter.com/themoviedb/status/1161090808520425473
(2019-08-14, 22:31)bsoriano Wrote: Also, would you consider dropping the "Rated" string from the MPAA property that the plugin returns? That way I can (and other skinners I suppose) more easily match against certification flags.
Are you sure that's not because you haven't changed that setting in the scraper?


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - bsoriano - 2019-08-14

(2019-08-14, 22:56)Hitcher Wrote:
(2019-08-14, 22:31)bsoriano Wrote: @jurialmunkey , I am also getting errors while trying to show cast details.  It happens with every person.  The error appears to be a JSON error (or a service unavailable error).  An excerpt of the log:

Any ideas? TMDB issues? It was working fine yesterday.  Thank you for your help.
Quote:We are currently experiencing an outage with one of our backend services. I will post an update when we have a better understanding of the issue.
https://twitter.com/themoviedb/status/1161090808520425473
(2019-08-14, 22:31)bsoriano Wrote: Also, would you consider dropping the "Rated" string from the MPAA property that the plugin returns? That way I can (and other skinners I suppose) more easily match against certification flags.
Are you sure that's not because you haven't changed that setting in the scraper? 
@Hitcher , thanks for the info! 

In regards to MPAA, this is for what is being returned directly by the plugin (I am pressing i in a widget item from a plugin widget), so no scraper involved.  Also, in my case, I do not do scraping online via Kodi, all of my local content MPAA come from NFOs.

Regards,

Bart


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - the_bo - 2019-08-15

Anyone kindly point out what code for showing rotten tomatoe ratings. Read through readme but not sure how call LisItem.Property(property) correctly.

Thanks

xml:

<control type="label">
                    <left>285</left>
                    <top>185</top>
                    <height>217.5</height>
                    <width>285</width>
                    <aspectratio>keep</aspectratio>
                    <font>Font_26A</font>
                    <textcolor>gold</textcolor>
                    <shadowcolor>black</shadowcolor>
                    <label fallback="19055">$INFO[Window(Home).Property(TMDbHelper.ListItem.RottenTomatoes_Rating)]%</label>
                    <animation effect="slide" start="-100,0" end="0,0" time="1000" delay="4000" easing="out" tween="cubic" reversible="false">Visible</animation>
                    <animation effect="slide" start="-100,0" end="0,0" time="1000" delay="4000" easing="out" tween="cubic" reversible="false">WindowOpen</animation>
                </control>



RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - jurialmunkey - 2019-08-15

(2019-08-14, 23:30)bsoriano Wrote:
(2019-08-14, 22:56)Hitcher Wrote:
(2019-08-14, 22:31)bsoriano Wrote: @jurialmunkey , I am also getting errors while trying to show cast details.  It happens with every person.  The error appears to be a JSON error (or a service unavailable error).  An excerpt of the log:

Any ideas? TMDB issues? It was working fine yesterday.  Thank you for your help.
Quote:We are currently experiencing an outage with one of our backend services. I will post an update when we have a better understanding of the issue.
https://twitter.com/themoviedb/status/1161090808520425473
(2019-08-14, 22:31)bsoriano Wrote: Also, would you consider dropping the "Rated" string from the MPAA property that the plugin returns? That way I can (and other skinners I suppose) more easily match against certification flags.
Are you sure that's not because you haven't changed that setting in the scraper? 
@Hitcher , thanks for the info! 

In regards to MPAA, this is for what is being returned directly by the plugin (I am pressing i in a widget item from a plugin widget), so no scraper involved.  Also, in my case, I do not do scraping online via Kodi, all of my local content MPAA come from NFOs.

Regards,

Bart

I've added an option in the settings to choose the MPAA prefix.
However, you will have to deal with this anyway in skins as scrapers allow the user to set the prefix for MPAA rating.

I've also added some fixes in case the api is down so that an error isn't thrown. The plugin will still log the http request error code, but shouldn't throw an exception.


RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - jurialmunkey - 2019-08-15

(2019-08-15, 00:14)the_bo Wrote: Anyone kindly point out what code for showing rotten tomatoe ratings. Read through readme but not sure how call LisItem.Property(property) correctly.

Thanks

xml:

<control type="label">
                    <left>285</left>
                    <top>185</top>
                    <height>217.5</height>
                    <width>285</width>
                    <aspectratio>keep</aspectratio>
                    <font>Font_26A</font>
                    <textcolor>gold</textcolor>
                    <shadowcolor>black</shadowcolor>
                    <label fallback="19055">$INFO[Window(Home).Property(TMDbHelper.ListItem.RottenTomatoes_Rating)]%</label>
                    <animation effect="slide" start="-100,0" end="0,0" time="1000" delay="4000" easing="out" tween="cubic" reversible="false">Visible</animation>
                    <animation effect="slide" start="-100,0" end="0,0" time="1000" delay="4000" easing="out" tween="cubic" reversible="false">WindowOpen</animation>
                </control>



You need to reference the container where the detailed item is held.
For instance if you have this:
xml:

<control type="list" id="50051">
<itemlayout/>
<focusedlayout/>
<content>plugin://plugin.video.themoviedb.helper/?info=details&amp;type=movie&amp;query=$INFO[ListItem.Title]</content>
</control>

Then in a label control:
xml:
<label>$INFO[Container(50051).ListItemAbsolute(0).Property(rottentomatoes_rating)]</label>



RE: plugin.video.themoviedb.helper - Access to TheMovieDb API for Skinners - the_bo - 2019-08-15

@jurialmunkey 

Thanks very much