PreRoll PostRoll
#16
(2024-06-08, 10:16)MoojMidge Wrote:
(2024-06-07, 21:08)Lunatixz Wrote: The major factor for your slow channel building is your youtube plugin channels and the need to parse it's missing duration meta.

Is there a reason this is needed? The plugin includes the duration for listitems as part of the video infotag, for both the resume point duration and the actual duration, and also includes the duration for the associated video stream info. Is there somewhere else that PseudoTV Live is trying to get this information?

Perhaps you could write up a brief list of minimum details you need for the plugin to work properly? Also the general method you are using to traverse directory listings from other plugins?

One issue I can see that may contribute to this issue is that the YouTube channels do not have a flat directory structure, and have different nested folders and subfolders for different playlists.
PseudoTV already parses all available listitem meta.. However, this users setup is heavily built on YouTube channels... It would only take a handful of missing duration values per channel to start bogging things down due to URL call latency.

Ideally if the YouTube plugin could use the existing Kodi property `xbmcgui.Window(10000).getProperty("PseudoTVRunning")` to avoid nesting content it would streamline parsing. PseudoTV can handle excessive data dumps with its internal pagination functions.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#17
(2024-06-08, 19:44)Lunatixz Wrote: PseudoTV already parses all available listitem meta.. However, this users setup is heavily built on YouTube channels... It would only take a handful of missing duration values per channel to start bogging things down due to URL call latency.

Does it only try to get duration data for listitems that are missing this information, or all items?

The YouTube plugin can fetch and populate details for up to 50 items at a time. Depending on network speeds and device capabilities this can take from ~0.5s to 5s on first try, then ~0.3s to 1s on subsequent attempts that get cached data. Using youtube-dl/yt-dlp for the same thing can be up to 100x times slower for the same amount of items.

The only items that would not include durations are currently live streams (barring the scenario of some kind of error that prevented the duration information from being fetched correctly) or streams that have not yet started. If the intent is to replicate live TV using VOD content, then I would suggest that non-VOD content would need to be handled seperately.

Given that a currently live stream does not have a set duration, and this appears to be necessary to build the pseudo channels, probably the best thing to do is to simply skip this content, rather than trying to get the duration through another, much slower, method that will also not provide a duration, or at best provide a duration that is only valid at the time that the pseudo channel is built, but not when the content actually plays.
 
(2024-06-08, 19:44)Lunatixz Wrote: Ideally if the YouTube plugin could use the existing Kodi property `xbmcgui.Window(10000).getProperty("PseudoTVRunning")` to avoid nesting content it would streamline parsing.

I don't know that this is a good idea. Does the property get set all the time when PseudoTV is running (I'm assuming it is running all the time as a service?), or only when the pseuod channels are being built? Regardless, if it is taking hours to build a channel, restricting another plugin from displaying properly for that entire period doesn't seem like the right solution.

What the user should be doing is to add whatever YouTube plugin urls they are using with
Code:
&hide_folders=true
 in the plugin url query parameters.
Reply
#18
(2024-06-10, 03:19)MoojMidge Wrote:
(2024-06-08, 19:44)Lunatixz Wrote: Ideally if the YouTube plugin could use the existing Kodi property `xbmcgui.Window(10000).getProperty("PseudoTVRunning")` to avoid nesting content it would streamline parsing.

I don't know that this is a good idea. Does the property get set all the time when PseudoTV is running (I'm assuming it is running all the time as a service?), or only when the pseuod channels are being built? Regardless, if it is taking hours to build a channel, restricting another plugin from displaying properly for that entire period doesn't seem like the right solution.

What the user should be doing is to add whatever YouTube plugin urls they are using with
Code:
&hide_folders=true
 in the plugin url query parameters.

The 'PseudoTVRunning' property is a legacy state going back over a decade and is part of many plugins both unofficial and in the Kodi repository. 

In its current iteration, it returns "True" on two occasions.
  • 1: When a user starts playback via a proxy call to the PseudoTV Live service,
  • 2: When PseudoTV Live parses Kodi for channel content. 
For our use case, #2 is what we are interested in. If a third-party plugin needs to supply extra code to aid PseudoTV Live; this state is used.

To be frank PseudoTV Live supports everything that works with Kodi and typically does not require special attention from content plugins.

Incorrect conclusions are being made and to clear things up, normal channels do not take hours to build! That doesn't mean a user can't configure settings and end up with some crazy outcomes, which is where we are now. I've advised this user on the correct courses of action.

If you have specific examples for improvement I'll be happy to hear them.  Smile

BTW The min. listitem meta requires to build a channel is 'Label' or 'Title', 'Path' and 'Runtime' or 'Duration

If you are interested in aiding this project a simple solution maybe to add. if xbmcgui.Window(10000).getProperty("PseudoTVRunning") == 'True': append '&hide_folders=true' to url calls.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#19
Hello to you both, and thank you for looking into this, just to clear things up,

"Incorrect conclusions are being made and to clear things up, normal channels do not take hours to build! That doesn't mean a user can't configure settings and end up with some crazy outcomes, which is where we are now. I've advised this user on the correct courses of action."
 
Yep, I have played around with settings alot trying to get this working just right. However, as I told you, before I update my Main Kodi Build, I do an install on a clean, straight out of the box Kodi Build as it were, just to make sure there is nothing to interfere with anything.

Today I see we have version 0.5.0 which I have just installed and it did a 106 channel build in about 5 minutes, Beautiful. As soon as it is finished it starts updating again, pretty much straight away, and that's where things slow down, the Updating procedure. But at that point the user can be watching programs while this runs in the background.
 The other problem then is after Kodi is switched off for the night, and Powered up the next day, PTVL starts updating, and deleting half the channels with a "No Content Availalbe" warning. 

As for downloading YouTube content and playing local, that is really not an option for so much content, there are obviously alot of channels I like to keep up with, which is where Kodi and PTVL Shine. I have gone so far as to make Compilation Playlists on YouTube so that there is updated content that I can add as channels to PTVL, to keep content up to date, and in a watchable order. I would love to work out how to add STRMs to a Kodi Smart Playlist, and have tried to do so many many times, but I can't figure it out and the Kodi wiki basically says make a strm and play it which is no help.

I am sorry for the continuing posts as I can see it annoys you, but I am not doing it for the good of my health, As said before, I love PTVL and think it is a great thing for Kodi and I use it daily. If I see something not working right, I tell you, so that it can be addressed as I'm sure the developer of software would want. I also try to fix things myself which Is why I also have 5 different builds of Kodi for operation and testing and changing etc. I am only trying to help here.

Once again, I thank you for your work, and I look forward to trying out the new build today.
Reply
#20
So far so good. Full Channel build is really quick, then an initial update that happens straight away takes about 40 mins.

Playback has a fault, as well as channel stopping after each episode while rebuilding or updating, now it will not play from the guide at all while rebuilding.

Switch to Channel or selecting item from guide does nothing, Right click and try Play from Here, gives an error.

https://www.ozdrdj.com/kodi.log

Went back to github and noticed version 0.4.9q which doesn't seem to have the Not Playing Problem. Go Figure.
Reply
#21
(2024-06-10, 21:24)Lunatixz Wrote: If you have specific examples for improvement I'll be happy to hear them.  Smile

I won't presume to be able to offer anything meaningful, the codebase is too extensive and the intent too ambitious to properly understand with a 5 minute skim read.

The only thing I can suggest is what I mentioned before - don't try to parse the duration of videos from the YouTube plugin that don't already have durations, skip them instead. Parsing externally is not going to provide any useful information, and will just slow things down unnecessarily.
 
(2024-06-10, 21:24)Lunatixz Wrote: If you are interested in aiding this project a simple solution maybe to add. if xbmcgui.Window(10000).getProperty("PseudoTVRunning") == 'True': append '&hide_folders=true' to url calls.

The YouTube plugin currently already operates a little differently if certain functions are accessed through the Kodi GUI or via some other method (JSON-RPC).

It does this by checking if Container.FolderPath is a YouTube plugin url. Could use this in combination with the PseudoTV window property to detect when it is being called by PseudoTV, but I am not keen on disabling folders if someone is just playing something via PseudoTV, as quite a few people access the YouTube plugin via browser extensions or phone apps (although the crossover in the user groups may be very small).

Is it possible to additionally set a different window property when PseudoTV is parsing content, so that other plugins can differentiate between the states, without impacting on previous usage of the window property? i.e.
  1. When a user starts playback via a proxy call to the PseudoTV Live service - Set PseudoTVRunning
  2. When PseudoTV Live parses Kodi for channel content - Set PseudoTVRunning and set PseudoTVParsing
 
(2024-06-11, 03:42)OzDrDj Wrote: As for downloading YouTube content and playing local, that is really not an option for so much content, there are obviously alot of channels I like to keep up with, which is where Kodi and PTVL Shine. I have gone so far as to make Compilation Playlists on YouTube so that there is updated content that I can add as channels to PTVL, to keep content up to date, and in a watchable order. I would love to work out how to add STRMs to a Kodi Smart Playlist, and have tried to do so many many times, but I can't figure it out and the Kodi wiki basically says make a strm and play it which is no help.

This really seems like a classic XY problem. I don't know why you are seemingly trying to archive YouTube channels locally and I don't know why you are having so much difficulty in understanding what to do with a STRM file, but I also don't know why you are trying to use them in the first place if you can't figure them out. Also have no idea why you would want to add a STRM file to another playlist.

Back in December 2023 you asked about adding random YouTube videos to a playlist and I told you it wasn't possible, but you could load an entire playlist and shuffle it instead. So it seems like you are now looking to load one playlist into another playlist, then into another playlist, and then into PseudoTV? It just doesn't make sense. Why not just use the playlist directly?
Reply
#22
Howdy MoojMidge,
The thing I am trying to work out, Fix, change, whatever is this. 
Lets say I want to watch for example "Fail Army" from you tube. So, I grab the playlist url and drop it into Pseudo TV Live. This will go and grab about 20 Videos and drop them into the TV Guide. But then the next Day, If I go to watch it again, It is always the same 20 videos out of their playlist of hundreds of Videos. Now from looking at a Kodi Smart Playlist, when It grabs local content, I see quite a long list of titles although I haven't checked exactly how many it does, but it is alot more than say 20. Now in the options of a Kodi Smart Playlist their is the option to Randomize these titles. This would mean, each day, when I start Pseudo TV Live, and it does a channel update, there would always be fresh content in the Guide.
At the moment to get around this problem, I have created on YouTube, 80 or so playlists, where I add new content from each channel daily to the top of the playlist, so as PTVL rebuilds its channel list, there is somewhat new content. It's not an elegant solution by far, but it sort of works.
I have been trying to accomplish this for a long time now, but I just can't seem to work it out.
As far as I can see a STRM file, is just a Text file with a YouTube Url for a playlist in there, Or I guess it could be a list of YouTube Urls. So If I were to set up a STRM which I still can't work out how to add to PTVL anyway, If I add a single playlist to a STRM, Well I can do that anyway in PTVL, If I am to make a list of urls in a STRM, to do this, I would have to add individual urls to a a list, which again I could do in PTVL, but then this is still going to be a static list. I hope you see where I'm going here. It's funny that something that sounds so simple to do, seems to be so hard to accomplish.
There is a website out there called YouTube Playlist Coppier ( https://www.labnol.org/youtube/playlists/ ), this site can drag down 100 video urls from a playlist and add them to another playlist, So i guess it is possible to pull a good list of urls out of you tube. Unfortunatley Im not smart enough to program anymore so I don;t know how to do such things.
Anyway, Thats what im up to in a nutshell, and Every few weeks or months go by, I have another look at it, and start asking questions. Unfortunatley, I seem to anger people when I ask these questions, which obviously is not my intention. I'm just an Avid user of Kodi/Psuedo TV Live/You Tube.
Thanks for listening,
Oz
Reply
#23
Code:
plugin://plugin.video.youtube/play/?action=list&order=shuffle&playlist_id=UUPDis9pjXuqyI7RYLJ-TTSA

Done. Takes ~10 seconds on first try, ~3 seconds afterwards to fetch all 500 odd items.

This was achievable back in December when you asked the first time. Asking questions is not the problem.

Edit: Lol, well it was achievable, I've gone and broken it sometime in the last 6 months for the currently available release.
Reply
#24
(2024-06-11, 09:43)MoojMidge Wrote: I won't presume to be able to offer anything meaningful, the codebase is too extensive and the intent too ambitious to properly understand with a 5 minute skim read.

The only thing I can suggest is what I mentioned before - don't try to parse the duration of videos from the YouTube plugin that don't already have durations, skip them instead. Parsing externally is not going to provide any useful information, and will just slow things down unnecessarily.

I appreciate the suggestion; However, PseudoTV live already by default ignores media with unknown durations; and can be configured to not parse for "accurate" runtime meta. The project readme states exactly what happens if you enable accurate durations in pseudos settings.
xml:
Media files are parsed individually for real runtimes. Pros: Accurate EPG guide times, Cons: Slower background channel building.

Parsing hundreds of YouTube videos in chunks of 25ish entries per call will always take a long time and is not an optimal solution for pseudo users seeking to grab a lot of channel content, this is no fault of the plugin or project. Just a fact I wish users would understand when configuring PseudoTV Live to use plugins as a media source.
(2024-06-11, 09:43)MoojMidge Wrote: Is it possible to additionally set a different window property when PseudoTV is parsing content, so that other plugins can differentiate between the states, without impacting on previous usage of the window property? i.e.

I don't see how a different property label solves the concerns you've raised. Regardless of what we name the property, it will still flag true when pseudotv is background parsing. From my experience there is a very remote possibility a user would browse the YouTube plugin at the exact same time pseudos background service is running; which by the way for most configurations only takes a few minutes at best.
(2024-06-11, 09:43)MoojMidge Wrote:
(2024-06-11, 03:42)OzDrDj Wrote: As for downloading YouTube content and playing local, that is really not an option for so much content, there are obviously alot of channels I like to keep up with, which is where Kodi and PTVL Shine. I have gone so far as to make Compilation Playlists on YouTube so that there is updated content that I can add as channels to PTVL, to keep content up to date, and in a watchable order. I would love to work out how to add STRMs to a Kodi Smart Playlist, and have tried to do so many many times, but I can't figure it out and the Kodi wiki basically says make a strm and play it which is no help.

This really seems like a classic XY problem. I don't know why you are seemingly trying to archive YouTube channels locally and I don't know why you are having so much difficulty in understanding what to do with a STRM file, but I also don't know why you are trying to use them in the first place if you can't figure them out. Also have no idea why you would want to add a STRM file to another playlist.

Back in December 2023 you asked about adding random YouTube videos to a playlist and I told you it wasn't possible, but you could load an entire playlist and shuffle it instead. So it seems like you are now looking to load one playlist into another playlist, then into another playlist, and then into PseudoTV? It just doesn't make sense. Why not just use the playlist directly?

PseudoTV Live is highly customizable, however there is a learning curve. The first step to fully understanding PseudoTV Live is to understand Kodi, its playlists, nodes and plugins. In @OzDrDj case PseudoTV Live when configured to parse a plugin (Youtube) is limited to what the plugin can output! You can not get "random" results from a plugin that paginates content 25 entries at a time. You can't expect to parse an entire Youtube channel, 25 entries at a time and expect timely builds. As I've said many, many times if you move your YouTube content to local videos or strms PseudoTV Live would build channels exactly as you'd like them and quickly at that.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#25
Hi @Lunatixz,

I don't know why I ask, as I probably wouldn't understand the answer anyway, but When PTVL starts up, with the PTVL Cache Directory empty, it goes off and builds the Channels. This only takes a couple of minutes. So as soon as this task completes, it goes back and updates the Channels, like a minute after building. This process takes much much longer. If we add Pre and Post rolls to this, it takes a really long time. I am guessing that the initial channel build is just to get PTVL started and running so it is watchable, then it goes back and fills out the channels? 
This is great but PTVL still is not playing a channel continuously while it is building, stopping after each episode. Fine for a movie Channel, but not for say, Inside edition shorts at 2 to 3 mins an episode.

Cheers
Oz
Reply
#26
Hi @MoojMidge

plugin://plugin.video.youtube/play/?action=list&order=shuffle&playlist_id=UUPDis9pjXuqyI7RYLJ-TTSA

Woohoo, I have a piece of code, now, where do I put it, lol. This is what I have done in the past, someone gives me an idea, and off I go and try to work it out. So for this particular line of code, could that be put into a STRM? Or a Kodi Playlist? Or an M3U for that matter? Then of course how do I get that into PTVL, You see, now I am lost. 
30 years ago I would have written the whole thing In Basic and been happy (If basic handled video, lol), but I am no longer a programmer, I wish I would have learned Python, but, wish in one hand, poo in the other, see what fills up first. lol

Perhaps I should try Chat GPT and tell it to make me a program that goes and gets 50 playlists from youtube, shuffles them all about and makes them into kodi playlists. AI seems to be able to do so many things now, but I bet that would stump it.
 
I guess for the moment I'll just have to be happy with what I've got. Really appreciate everyone's input on this though. Maybe Tomorrow, Tomorrow, I'll make it tomorrow, It's just a day away. lol

Cheers
Oz
Reply
#27
@Lunatixz
Nothing on the current faults?
No Continuous Play While Updating?
Selection Location Jumping around in the Guide While Updating?
Random 50% Of Channels With No Content Found While Updating?
Surely I can't be the only one facing these Issues. Especially on a clean build and a new computer, It's not possible.
Reply
#28
(2024-06-11, 23:53)Lunatixz Wrote: I don't see how a different property label solves the concerns you've raised. Regardless of what we name the property, it will still flag true when pseudotv is background parsing.

The point of a new window property is that you have two boolean states, which means that you have 2^2 possible combinations of these states, and you can't represent the 2 out of 4 combinations that identifies when PsuedoTV is parsing content, as opposed to only playing content, with just one single boolean variable that is set when either of the boolean states are active.

You can do it if a new window property is used, in combination with the original, that is set only when PseudoTV is parsing. This way there will be no change to any existing uses of the original window property, which would still be set when PseudoTV is both parsing and playing, while the new window property is only set when parsing.

However I am not sure that even this won't have unintended consequences. How does a user select plugin content to use with PseudoTV? If the YouTube plugin arbitrarily stops displaying sub-folders of channel content whenever a listing is requested by PseudoTV, then a user won't even be able to navigate to the folder of playlists to choose one or more of them.

Note that I am just trying to accommodate a request to improve interoperability as best I can, without a lot of information to go on, hence the comments and questions. I really think the best option is for the user to add this url query parameter themselves once they have selected the content they want, or for PseudoTV to add this for them. Ideally there should also be some documentation identifying what PseodoTV needs from other plugins to avoid these types of issues, if that is the cause of the problem. If other plugins provide the means to simplify integration based on this documentation, these methods should then be used from within PseudoTV, rather than the other way around.
 
(2024-06-11, 23:53)Lunatixz Wrote: In @OzDrDj case PseudoTV Live when configured to parse a plugin (Youtube) is limited to what the plugin can output! You can not get "random" results from a plugin that paginates content 25 entries at a time. You can't expect to parse an entire Youtube channel, 25 entries at a time and expect timely builds. As I've said many, many times if you move your YouTube content to local videos or strms PseudoTV Live would build channels exactly as you'd like them and quickly at that.

This particular user asked for this random functionality to be implemented, which was already explained as not being possible. An alternative, where the entire playlist is shuffled, was implemented instead, but they just never bothered to try it.

I have now added it back to the Youtube plugin, which can spit out the entire playlist in question with 500+ items in ~10s when not cached, and ~3s when it has been cached. Note that each YouTube request takes around 300ms and there are a minimum of 10 requests that need to be made, so there is not much more that can be done to improve this from the YouTube plugin side at this stage.

That being said, even if PseudoTV is fetching content from the plugin one page at a time, it should not take significantly more time to do so. Other plugins do the same by importing the YouTube plugin as a module, and do so without similar issues. The individual JSON-RPC calls should not add that much of an overhead in comparison. If things are still taking an excessively long time to process and if it is not caused by the external duration parsing (which as previously advised serves no purpose for the YouTube plugin, and should be a noop even if enabled as an option in PseudoTV for other content in general) or nested folders, then there must be some other problem, just can't figure out what it may be as I am not a user of this plugin.

Assuming that there are no other obvious causes for the excessive time taken to parse plugin data, and that it takes 40 minutes to build a channel from YouTube playlists then that means that around 120,000 videos are being freshly fetched. If it is further assumed that every single one of those videos is only 1 minute long, it means that we are talking about 83 days of non-stop video. Perhaps there needs to be some kind of limit on how much data PseudoTV is trying to retrieve from a source based on the EPG refresh duration?

Recommending that a user, who does not even understand what a strm file is, should try to locally archive YouTube content because of these excessive delays is really not a great suggestion.
(2024-06-12, 03:39)OzDrDj Wrote: So for this particular line of code, could that be put into a STRM? Or a Kodi Playlist? Or an M3U for that matter? Then of course how do I get that into PTVL, You see, now I am lost. 

I don't use this plugin so you will need to figure that out for yourself. My only further advice to you is that rather than trying to jump through hoops to perform a whole series of complicated steps that you don't know how to do, and are of no real relevance to your issue in any case, just stick to the basics.
Reply
#29
(2024-06-15, 01:47)MoojMidge Wrote:
(2024-06-11, 23:53)Lunatixz Wrote: I don't see how a different property label solves the concerns you've raised. Regardless of what we name the property, it will still flag true when pseudotv is background parsing.

The point of a new window property is that you have two boolean states, which means that you have 2^2 possible combinations of these states, and you can't represent the 2 out of 4 combinations that identifies when PsuedoTV is parsing content, as opposed to only playing content, with just one single boolean variable that is set when either of the boolean states are active.

Again, thank you for your suggestion, however you're making a lot of assumptions and not really going by the code written in this project.

PseudoTV Live only flags the state "True" when background tasks are running and while a proxy call for playback is made. It is not always "True" while playing.
(2024-06-15, 01:47)MoojMidge Wrote: I really think the best option is for the user to add this url query parameter themselves once they have selected the content they want, or for PseudoTV to add this for them. Ideally there should also be some documentation identifying what PseodoTV needs from other plugins to avoid these types of issues, if that is the cause of the problem. If other plugins provide the means to simplify integration based on this documentation, these methods should then be used from within PseudoTV, rather than the other way around.

PseudoTV works with all Kodi plugins and does not require specific support (generally). PseudoTV Live is a content parser; support must be added on the content plugins end. I will add a note in my readme recommending developers disable pagination when PseudoTV Live is parsing content.
 
(2024-06-15, 01:47)MoojMidge Wrote: That being said, even if PseudoTV is fetching content from the plugin one page at a time, it should not take significantly more time to do so. Other plugins do the same by importing the YouTube plugin as a module, and do so without similar issues. The individual JSON-RPC calls should not add that much of an overhead in comparison. If things are still taking an excessively long time to process and if it is not caused by the external duration parsing (which as previously advised serves no purpose for the YouTube plugin, and should be a noop even if enabled as an option in PseudoTV for other content in general) or nested folders, then there must be some other problem, just can't figure out what it may be as I am not a user of this plugin.

Assuming that there are no other obvious causes for the excessive time taken to parse plugin data, and that it takes 40 minutes to build a channel from YouTube playlists then that means that around 120,000 videos are being freshly fetched. If it is further assumed that every single one of those videos is only 1 minute long, it means that we are talking about 83 days of non-stop video. Perhaps there needs to be some kind of limit on how much data PseudoTV is trying to retrieve from a source based on the EPG refresh duration?

Recommending that a user, who does not even understand what a strm file is, should try to locally archive YouTube content because of these excessive delays is really not a great suggestion.

LOL... what? again... thank you for sharing your opinions on the project.  I won't require your assistance any further, if you'd like to disable pagination while the property is true that would be great.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#30
(2024-06-14, 06:37)OzDrDj Wrote: @Lunatixz
No Continuous Play While Updating?
Selection Location Jumping around in the Guide While Updating?
Random 50% Of Channels With No Content Found While Updating?
Surely I can't be the only one facing these Issues. Especially on a clean build and a new computer, It's not possible.
I can confirm there is a threading issue causing a delay during content change while the background service is running. 

Kodi supplies the EPG guide, not PseudoTV...

Show me a log where 50% of channels have no content, please post your channels.json and list which channels take hours to build and which show no content.

I tested several YouTube channels and playlist configurations and could not duplicate PseudoTV taking hours let alone more than 5mins to build a few dozen channels. Set at 50 page limit like your log states you're using.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply

Logout Mark Read Team Forum Stats Members Help
PreRoll PostRoll0
This forum uses Lukasz Tkacz MyBB addons.