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&type=movie&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
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&type=person&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&type=movie&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
|