Solved Need help speeding up Dynamic List + Smart Playlist
#1
I have a giant library, consisting of 7000+ movies and 600+ shows..

I mod Ace for my main home menu, for each submenu there are 2 playlists,
1. Recent items for that path;
2. Recommended items (>6 rating), both using smart playlist

here's the vid :



As you can see it's pretty laggy.. especially when i change focus to another menu..


Here's the log file, i don't see any error that's related to dynamic list.. just looongg load times

http://pastebin.com/7zkpGZRj

And here's the code


IncludeMenuplaylist.xml

Code:
<include name="mf_contentvpl1">
        <control type="group">
            <posx>0</posx>
            <posy>60</posy>
            <control type="panel" id="510">
                <!--- Recent Video -->
                <include>panel_video_v</include>
                <include>panel_videolayout</include>        
                <visible>Container(9000).HasFocus(31) + SubString(skin.string(mfvpl1_list),latest)</visible>
                <content target="video" limit="12">$INFO[Container(9000).ListItem.Property(widgetPlaylist)]</content>
            </control>
            <control type="panel" id="510">
                <!--- Recomemended Video -->
                <include>panel_video_v</include>
                <include>panel_videolayout</include>
                <visible>Container(9000).HasFocus(31) + SubString(skin.string(mfvpl1_list),random)</visible>
                <content target="video" limit="12">$INFO[Container(9000).ListItem.Property(widgetPlaylist2)]</content>
            </control>
        </control>
    </include>

IncludeVIPMenu.xml

Code:
        <item id="31">
            <!-- Vpl 1 -->
            <label fallback="31072">$INFO[skin.string(vpl1.label)]</label>
            <label2>West Movie</label2>
            <icon fallback="special://skin/backgrounds/vplaylist.jpg">$VAR[value_mainmenubg_vpl1]</icon>
            <onclick>Skin.SetBool(playlists)</onclick>
            <onclick>Skin.SetString(playlist,v1)</onclick>
            <onclick condition="Container(9000).HasFocus(31) + SubString(skin.string(mfvpl1_list),latest)">ActivateWindow(videolibrary,$INFO[skin.string(vpl1.path)],return)</onclick>    
            <onclick condition="Container(9000).HasFocus(31) + SubString(skin.string(mfvpl1_list),random)">ActivateWindow(videolibrary,$INFO[skin.string(vpl1a.path)],return)</onclick>
            <property name="dropdown">not_empty</property>            
            <property name="widget">Playlist</property>
            <property name="widget2">Playlist2</property>            
            <property name="widgetPlaylist">C:/Users/Downloader/AppData/Roaming/Kodi/userdata/playlists/video/Barat.xsp</property>
            <property name="widgetPlaylist2">C:/Users/Downloader/AppData/Roaming/Kodi/userdata/playlists/video/Recommended_Barat.xsp</property>
            <visible>!IsEmpty(skin.string(vpl1))</visible>
        </item>

IncludeVariables.xml

Code:
    
    <variable name="Widget_Title">
        <value condition="!IsEmpty(Container(510).ListItem.Title)">$INFO[Container(510).ListItem.Title]</value>
     </variable>
         
    <variable name="Widget_Subtitle">
        <value condition="!IsEmpty(Container(510).ListItem.TagLine)">$INFO[Container(510).ListItem.TagLine]</value>
     </variable>
    
    <variable name="Widget_Fanart">
        <value condition="!IsEmpty(Container(510).ListItem.Art(fanart))">$INFO[Container(510).ListItem.Art(fanart)]</value>
   </variable>
    
    <variable name="Widget_Plot">
        <value condition="!IsEmpty(Container(510).ListItem.Plot)">$INFO[Container(510).ListItem.Plot]</value>
    </variable>
    
    <variable name="Widget_TVShowTitle">
        <value condition="!IsEmpty(Container(510).ListItem.TVShowTitle)">$INFO[Container(510).ListItem.TVShowTitle]</value>
    </variable>
    
    <variable name="Widget_Genre">
        <value condition="!IsEmpty(Container(510).ListItem.Genre)">$INFO[Container(510).ListItem.Genre]</value>
   </variable>
    
    <variable name="Widget_Rating">
        <value condition="!IsEmpty(Container(510).ListItem.Rating)">$INFO[Container(510).ListItem.Rating]</value>
   </variable>
... Some issues that i can't figure out..
1. I noticed in debug log Kodi is caching panel thumbs from my local thumbnails userdata...

I'd assume thumbs took longest to load because all other infos (plot, rating, title, etc) are already loaded before thumbs
Is there anyway i could force it to direct listing or any other methods to generate thumbs from my library?

I have generated all posters and fanart for each of my item in library using filebot..It seems to be faster for my case...

2. Code-wise is there anything that can be optimized to reduce the lag?
I haven't completely understood dynamic listing so there might be something i missed..

Almost forgot, the client is win 7 and my nas is Ubuntu 12.02..
I'm planning to use diskless scheme, not mysql, so I can't use texture cache either..( I have discussed it in texture cache thread)


Thanks before
Reply
#2
Anyone? Or is my library too big and this is the maximum capabilities of Kodi?
Reply
#3
Have you also limited the amount of items in the actual playlists?
Reply
#4
(2015-09-24, 12:32)Hitcher Wrote: Have you also limited the amount of items in the actual playlists?

Hmm.. never thought about it..

I tested it, i limit all of them to 12,
but the thumbs still showing up late.. just like in the vid

other info labels showing up quicker..
Maybe i'm not listing the thumbs correctly in the code?

Is it possible to do something like :

Code:
<content target="video">panel thumbs</content>

Can't find any skins that use this.. I think the wiki could use some samples..
Reply
#5
Kinda figured out the thumbs part.. It's listitem.Art(poster) and listitem.Art(tvshow.poster)
So i made a new variable..

Code:
<variable name="Widget_Poster">
        <value condition="!IsEmpty(ListItem.Art(poster))">$INFO[ListItem.Art(poster)]</value>
        <value condition="!IsEmpty(ListItem.Art(tvshow.poster))">$INFO[ListItem.Art(tvshow.poster)]</value>
     </variable>

But it still doesn't cure the lag... Is my code structure already optimized for listing?

Could it be i have too many playlists in the home menu?
There are 32 playlists in total,
17 playlists for recently added based on library path
15 playlists for recommended items with ratings >6

But judging from Container.IsUpdating animation i think they are listing the playlist one at a time, so it shouldn't be this laggy.. am i correct?

Was gonna add music playlists based on genre as well.. but if it's already this laggy i guess that's not a good idea Sad
Reply
#6
Denywinarto,

Have you tried Milhouse's artwork caching utility. I noticed from your video that things seem to speed up towards the end of the video, so it looks like you might see a benefit from making sure everything is cached before you try to display the icons.

Wyrm (AppTV)
If required a FULL debug log can now be submitted from the skin in settings->skin settings->support. Or follow instructions here if you can't access skin settings.

FAQ's located at :- http://kodi.wiki/view/Add-on:AppTV
Reply
#7
(2015-09-25, 04:05)wyrm Wrote: Denywinarto,

Have you tried Milhouse's artwork caching utility. I noticed from your video that things seem to speed up towards the end of the video, so it looks like you might see a benefit from making sure everything is cached before you try to display the icons.

Wyrm (AppTV)

At first i thought the script is sctrictly for MySQL usage,
I'm using diskless,
not mysql so i thought it's useless for me..

but after reading the docs further i noticed it can also be used for local usage..
testing it now but i'm stuck at the part where it's asking for webserver..
I'll see if i can figure it out
Reply
#8
(2015-09-25, 03:30)denywinarto Wrote: Kinda figured out the thumbs part.. It's listitem.Art(poster) and listitem.Art(tvshow.poster)
So i made a new variable..

Code:
<variable name="Widget_Poster">
        <value condition="!IsEmpty(ListItem.Art(poster))">$INFO[ListItem.Art(poster)]</value>
        <value condition="!IsEmpty(ListItem.Art(tvshow.poster))">$INFO[ListItem.Art(tvshow.poster)]</value>
     </variable>

But it still doesn't cure the lag... Is my code structure already optimized for listing?

Could it be i have too many playlists in the home menu?
There are 32 playlists in total,
17 playlists for recently added based on library path
15 playlists for recommended items with ratings >6

But judging from Container.IsUpdating animation i think they are listing the playlist one at a time, so it shouldn't be this laggy.. am i correct?

Was gonna add music playlists based on genre as well.. but if it's already this laggy i guess that's not a good idea Sad
It's probably the amount if playlists but to be sure try removing the code for all but 1 or 2 of them and see if that makes a difference.
Reply
#9
(2015-09-25, 10:54)Hitcher Wrote:
(2015-09-25, 03:30)denywinarto Wrote: Kinda figured out the thumbs part.. It's listitem.Art(poster) and listitem.Art(tvshow.poster)
So i made a new variable..

Code:
<variable name="Widget_Poster">
        <value condition="!IsEmpty(ListItem.Art(poster))">$INFO[ListItem.Art(poster)]</value>
        <value condition="!IsEmpty(ListItem.Art(tvshow.poster))">$INFO[ListItem.Art(tvshow.poster)]</value>
     </variable>

But it still doesn't cure the lag... Is my code structure already optimized for listing?

Could it be i have too many playlists in the home menu?
There are 32 playlists in total,
17 playlists for recently added based on library path
15 playlists for recommended items with ratings >6

But judging from Container.IsUpdating animation i think they are listing the playlist one at a time, so it shouldn't be this laggy.. am i correct?

Was gonna add music playlists based on genre as well.. but if it's already this laggy i guess that's not a good idea Sad
It's probably the amount if playlists but to be sure try removing the code for all but 1 or 2 of them and see if that makes a difference.

Nah, won't need it, Wyrm was right i need texture caching, it's now alot faster than before Big Grin
Well there's still small lag but the speed now it's acceptable
I was under impression the script is for MySql usage only, that's why i never tried it.
I'll mark it as solved. Thanks guys Big Grin
Reply

Logout Mark Read Team Forum Stats Members Help
Need help speeding up Dynamic List + Smart Playlist0