Jump to content

VirtualTV plugin


pünktchen

Recommended Posts

Got ya and sorry if I took away from the flow.  I got mixed up with Spaceboy's comment about being able to bring up the guide and recordinging.  My bad.

Yes what you said would be cool and a nice feature all around!

Link to comment
Share on other sites

PuffyToesToo

pünktchen

Is there any possibility you would consider including 'resolution' as a parameter of channel creation (possibly in the ? That would eliminate the stretching or squishing of shows when one is say, 480 and another 720.  Yes, I could probably achieve this with the use of tagging, but I would have a whole lot of content to go through to manage that. Thanks for reading.

Link to comment
Share on other sites

pünktchen

Sorry, no. The stretching/squishing happens because of two reasons with the same root cause: Roku.
That the Roku app doesn't work with the Playlist Mode and you have to use Continous Playback is the primary reason, the second is that the Roku player obviously cannot handle resolution changes in a stream. I will not create another channel rule just because of such a bad app/playback device.

Link to comment
Share on other sites

9 minutes ago, pünktchen said:

Sorry, no. The stretching/squishing happens because of two reasons with the same root cause: Roku.
That the Roku app doesn't work with the Playlist Mode and you have to use Continous Playback is the primary reason, the second is that the Roku player obviously cannot handle resolution changes in a stream. I will not create another channel rule just because of such a bad app/playback device.

I plan on circle back to this soon. I want to get your plugin to play nice with the Roku and figure out where it is confused and help it. That is what is occur is the logic does not understand what it changes. The fallback occurs on it and that ruins everything. I can dig deeper into this soon as it is important and users are coming up with issues on Roku directly related to this plugin.

My thinking is if the plugin works on other platforms the Roku is the problem not the plugin. Don't do anything special just to try to please this creature. Let me see why the thing fails to consume what it is fed first, before you change any recipe to the meal. I will keep at this.

Edited by speechles
  • Like 1
Link to comment
Share on other sites

djtman

Hello all, Thanks again so much for this plug in.  I think this may have been asked before, but I was wondering how difficult it would be to have a selectable number of bumpers to play instead of the hard 3.  Additionally, is there some way to select say only play 2 bumpers after every 3 shows/items.  For instance I have set up a old mtv style channel with music videos, but it gets a bit annoying to have 3 bumpers play after every video.  I was thinking more like a radio station format, say 3 or 4 songs (music videos), then insert one bumper, etc.  Not sure if this is possible but thought it couldn't hurt to ask.   Thanks again for all the hard work on this and please know it doesn't go unappreciated.

  • Like 2
Link to comment
Share on other sites

PuffyToesToo
21 minutes ago, djtman said:

Hello all, Thanks again so much for this plug in.  I think this may have been asked before, but I was wondering how difficult it would be to have a selectable number of bumpers to play instead of the hard 3.  Additionally, is there some way to select say only play 2 bumpers after every 3 shows/items.  For instance I have set up a old mtv style channel with music videos, but it gets a bit annoying to have 3 bumpers play after every video.  I was thinking more like a radio station format, say 3 or 4 songs (music videos), then insert one bumper, etc.  Not sure if this is possible but thought it couldn't hurt to ask.   Thanks again for all the hard work on this and please know it doesn't go unappreciated.

+1 for this. 

Link to comment
Share on other sites

imatroublemaker

This plugin just gets better and better, so major hats off to you @pünktchen!

My issue is more of a top down thing, and nothing that needs to be addressed quickly, just curious of your thoughts on it. Basically, right now if a channel runs out of a shows, it becomes an empty space on the guide as the other channels solider on. This isn't an issue at all when you are doing random playback, because you can just refresh the guide. However, with series order playback, this becomes a problem because then you're always starting these series over before they complete. 

Obviously, the Live TV functionality doesn't allow for individual channel refreshing, which would be the simplest solution. However, here are the two ideas I have, that I have no idea how to accomplish and are both flawed in different ways.  

1) Faking refreshing of one channel by duplicating the rest of previous guide data. As in, a check box on the VirtualTV Channel Builder, similar to "Enable this Channel" that reads as "Refresh this Channel." This would be enabled by default, but if disabled it simply duplicates the channel guide from the last run for that channel. The issue here is, I am not sure how you would get it to pick up the guide where it left off. It seems doable to just copy and paste the previous config, but I don't know how you would be able to pick it up not at the start of the last guide, but at the point in which you refreshed.

This option would also be good for adding new channels, because you wouldn't lose your place on your current channels when doing the refresh on Live TV. 

2) Use the channel with the longest runtime as the limit for the other channels. This one is far messier, but maybe...easier? Basically, when the guide is generating the data, it generates values based on date/time, and thus you should be able to calculate on the fly what channel will be on the longest. Then, all the other channels have to generate enough content to fill that same amount of time, so once a channel runs out of original shows, it goes into reruns to fill up that time. This way all the channels will "run out" of content at the same time. The issue here is dynamically shuffling with no repeats, and then doing that again to fill up the guide. 

Neither of these solutions is perfect and maybe neither is even possible. I just didn't want to suggest features without at least trying to help with solutions. VirtualTV is a dream come true, so keep up the amazing work man, and as I've offered in the past...you really should have a donate button. 

Link to comment
Share on other sites

pünktchen

@imatroublemaker instead of "Auto" for the days of guide data under the live tv settings, set it to a number and the program will be repeated when a channel gets out of shows. Combined with the plugin setting to pause guide refresh, you can even refresh the guide daily for regular live tv without touching VirtualTV.

My plan for a future version of the plugin is that with ordered episodes the channel will always play the first unwatched episodes. That means the guide wont show the episode description and numbers anymore, but only the tv show description.

Link to comment
Share on other sites

Spaceboy

My VTV channels don't seem to show up anymore in latest beta, .45. there is a lot of work ongoing on channel management, has this had an impact or is it just me?

Link to comment
Share on other sites

imatroublemaker
14 hours ago, pünktchen said:

@imatroublemaker instead of "Auto" for the days of guide data under the live tv settings, set it to a number and the program will be repeated when a channel gets out of shows. Combined with the plugin setting to pause guide refresh, you can even refresh the guide daily for regular live tv without touching VirtualTV.

My plan for a future version of the plugin is that with ordered episodes the channel will always play the first unwatched episodes. That means the guide wont show the episode description and numbers anymore, but only the tv show description.

The issue there is it maxes out at 14 days. My channels go way longer than that currently, so I'd still end up with a lot of stuff that never plays cause most of the channels are Ordered Playback, and the refresh would start them over at episode 1. Obviously, in an ideal world we would do individual channel refresh, but like you, I cant think of a way to do it in the current system. Maybe each channel has its own guide xml, and you import them all rather than one big one? That would break so much tho. 

And I like that ordered episode idea, because then the guide refresh isn't as big of a deal. You would have to manually mark and unmark series as watched when you get to the end, but thats doable. Good idea! 

Link to comment
Share on other sites

pünktchen
3 hours ago, Spaceboy said:

My VTV channels don't seem to show up anymore in latest beta, .45. there is a lot of work ongoing on channel management, has this had an impact or is it just me?

In the web app they don't show up under Live TV -> Channels anymore, but they are still available in the Guide.

@Luke This happens with Live TV plugins:

2021-05-13 02:25:02.439 Info Server: http/1.1 GET http://localhost:8097/emby/Users/123/Items?SortBy=Number&SortOrder=Ascending&IncludeItemTypes=TvChannel&Recursive=true&Fields=BasicSyncInfo,CanDelete,PrimaryImageAspectRatio&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb&StartIndex=0&Limit=50&X-Emby-Client=Emby Web&X-Emby-Device-Name=Firefox&X-Emby-Device-Id=abc&X-Emby-Client-Version=4.6.0.45. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
2021-05-13 02:25:02.446 Error Server: Error processing request
	*** Error Report ***
	Version: 4.6.0.45
	Command line: D:\emby.windows.beta\system\EmbyServer.dll -noautorunwebapp
	Operating system: Microsoft Windows 10.0.18363
	Framework: .NET Core 3.1.13
	OS/Process: x64/x64
	Runtime: D:/emby.windows.beta/system/System.Private.CoreLib.dll
	Processor count: 8
	Data path: D:\emby.windows.beta
	Application path: D:\emby.windows.beta\system
	SQLitePCL.pretty.SQLiteException: Error: no such column: Number - select A.Id,A.Name,A.Path,A.RunTimeTicks,A.guid,A.ParentId,A.Images,A.ExternalId,A.ChannelNumber,UserDatas.IsFavorite,UserDatas.Played,UserDatas.PlayCount,UserDatas.PlaybackPositionTicks,UserDatas.LastPlayedDateInt,UserDatas.AudioStreamIndex,UserDatas.SubtitleStreamIndex from MediaItems A left join UserDatas on A.UserDataKeyId=UserDatas.UserDataKeyId And (UserDatas.UserId=@UserId) where type=@type ORDER BY Number ASC LIMIT 50
	SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
	   at SQLitePCL.pretty.SQLiteDatabaseConnection.PrepareStatement(String sql, String& tail)
	   at SQLitePCL.pretty.DatabaseConnection.PrepareStatement(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.PrepareStatement(IDatabaseConnection connection, String sql)
	   at Emby.Server.Implementations.Data.SqliteItemRepository.QueryItemsInTransaction[T](InternalItemsQuery query, IDatabaseConnection db, String[] columnsToSelect, Func`5 rowReaderFn, Boolean singleResult, String methodName)
	   at Emby.Server.Implementations.Data.SqliteItemRepository.GetItems(InternalItemsQuery query)
	   at Emby.Server.Implementations.Library.LibraryManager.GetItemsResult(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.QueryRecursive(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.GetItemsInternal(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.UserRootFolder.GetItemsInternal(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.GetItems(InternalItemsQuery query)
	   at MediaBrowser.Api.UserLibrary.ItemsService.GetQueryResult(GetItems request, DtoOptions dtoOptions, User user)
	   at MediaBrowser.Api.UserLibrary.ItemsService.GetItems(GetItems request)
	   at MediaBrowser.Api.UserLibrary.ItemsService.Get(GetItems request)
	   at Emby.Server.Implementations.Services.ServiceController.Execute(HttpListenerHost appHost, Object requestDto, IRequest req)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken)
	Source: SQLitePCL.pretty
	TargetSite: SQLitePCL.pretty.IStatement PrepareStatement(System.String, System.String ByRef)

 

  • Like 1
Link to comment
Share on other sites

1 hour ago, pünktchen said:

In the web app they don't show up under Live TV -> Channels anymore, but they are still available in the Guide.

@Luke This happens with Live TV plugins:


2021-05-13 02:25:02.439 Info Server: http/1.1 GET http://localhost:8097/emby/Users/123/Items?SortBy=Number&SortOrder=Ascending&IncludeItemTypes=TvChannel&Recursive=true&Fields=BasicSyncInfo,CanDelete,PrimaryImageAspectRatio&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb&StartIndex=0&Limit=50&X-Emby-Client=Emby Web&X-Emby-Device-Name=Firefox&X-Emby-Device-Id=abc&X-Emby-Client-Version=4.6.0.45. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
2021-05-13 02:25:02.446 Error Server: Error processing request
	*** Error Report ***
	Version: 4.6.0.45
	Command line: D:\emby.windows.beta\system\EmbyServer.dll -noautorunwebapp
	Operating system: Microsoft Windows 10.0.18363
	Framework: .NET Core 3.1.13
	OS/Process: x64/x64
	Runtime: D:/emby.windows.beta/system/System.Private.CoreLib.dll
	Processor count: 8
	Data path: D:\emby.windows.beta
	Application path: D:\emby.windows.beta\system
	SQLitePCL.pretty.SQLiteException: Error: no such column: Number - select A.Id,A.Name,A.Path,A.RunTimeTicks,A.guid,A.ParentId,A.Images,A.ExternalId,A.ChannelNumber,UserDatas.IsFavorite,UserDatas.Played,UserDatas.PlayCount,UserDatas.PlaybackPositionTicks,UserDatas.LastPlayedDateInt,UserDatas.AudioStreamIndex,UserDatas.SubtitleStreamIndex from MediaItems A left join UserDatas on A.UserDataKeyId=UserDatas.UserDataKeyId And (UserDatas.UserId=@UserId) where type=@type ORDER BY Number ASC LIMIT 50
	SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
	   at SQLitePCL.pretty.SQLiteDatabaseConnection.PrepareStatement(String sql, String& tail)
	   at SQLitePCL.pretty.DatabaseConnection.PrepareStatement(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.PrepareStatement(IDatabaseConnection connection, String sql)
	   at Emby.Server.Implementations.Data.SqliteItemRepository.QueryItemsInTransaction[T](InternalItemsQuery query, IDatabaseConnection db, String[] columnsToSelect, Func`5 rowReaderFn, Boolean singleResult, String methodName)
	   at Emby.Server.Implementations.Data.SqliteItemRepository.GetItems(InternalItemsQuery query)
	   at Emby.Server.Implementations.Library.LibraryManager.GetItemsResult(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.QueryRecursive(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.GetItemsInternal(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.UserRootFolder.GetItemsInternal(InternalItemsQuery query)
	   at MediaBrowser.Controller.Entities.Folder.GetItems(InternalItemsQuery query)
	   at MediaBrowser.Api.UserLibrary.ItemsService.GetQueryResult(GetItems request, DtoOptions dtoOptions, User user)
	   at MediaBrowser.Api.UserLibrary.ItemsService.GetItems(GetItems request)
	   at MediaBrowser.Api.UserLibrary.ItemsService.Get(GetItems request)
	   at Emby.Server.Implementations.Services.ServiceController.Execute(HttpListenerHost appHost, Object requestDto, IRequest req)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken)
	Source: SQLitePCL.pretty
	TargetSite: SQLitePCL.pretty.IStatement PrepareStatement(System.String, System.String ByRef)

 

What does the tab show as the selected sort order? What happens if you try changing it?

Link to comment
Share on other sites

pünktchen
11 hours ago, Luke said:

What does the tab show as the selected sort order? What happens if you try changing it?

There was no sort order active at all! But all available options do work and also survive a restart.

Link to comment
Share on other sites

40 minutes ago, pünktchen said:

There was no sort order active at all! But all available options do work and also survive a restart.

So setting a sort order resolves it?

Link to comment
Share on other sites

pünktchen
2 minutes ago, Luke said:

So setting a sort order resolves it?

For me, yes. Lets wait for feedback from @Spaceboy

  • Thanks 1
Link to comment
Share on other sites

PuffyToesToo

Since the server upgrade, I can't seem to get this plugin to work. I have tried both desktop and TV, and also my bf's server via web (and he tried his TV). Can I help in any way to pass on any information? All it says is "There was an error reading the file, please try again".


Thank you.

Link to comment
Share on other sites

pünktchen

Did you run the refresh guide task after the server upgrade?

Edit: After the initial library scan has finished.

Edited by pünktchen
Link to comment
Share on other sites

PuffyToesToo

Yes, I refreshed the guide, I tried a new API key, I tried redoing the channels, I did a library scan and guide refresh, I restarted the server several times after trying different things. 

Link to comment
Share on other sites

pünktchen

Oh when you were on Emby stable before, you now have to use the plugin version that was meant for beta releases. So just replace the dll with the correct one from the start post.

 

 

 

Link to comment
Share on other sites

pünktchen
7 minutes ago, PuffyToesToo said:

Yes, I have done this already.

Then enable logging in the plugin, run the guide refresh once more and send me the Emby log file.

Link to comment
Share on other sites

STR8

I seem to be having the same issue. The channels show a full line up of shows and movies but when i click play on one the green indicator bar turns grey snd then blank screen.

I have refreshed the guide a couple of times and ran a restart but my scan is not a 100% complete ss it is stuck on 98.1% so i will wait for this to finish then refresh and report my progress.

 

Also i was wondering on the guide refresh schedule task could or would it be possible to add 48, 72 hour intervals instead of just the daily or weekly?

 

Thanks again for the great work really wouldn't know what to do without this plug my family uses it every day all day. 👍👍👍

Link to comment
Share on other sites

PuffyToesToo
55 minutes ago, pünktchen said:

Then enable logging in the plugin, run the guide refresh once more and send me the Emby log file.

Sent, thank you.

Link to comment
Share on other sites

pünktchen
53 minutes ago, STR8 said:

Also i was wondering on the guide refresh schedule task could or would it be possible to add 48, 72 hour intervals instead of just the daily or weekly?

Although a plugin developer could modify the task to some degree, it's not something i'd like to do. The Guide Refresh and it's available triggers and intervals is a core feature that should be handled by the Emby devs. But you can create your own interval with the Emby API link at the bottom of the dashboard:

1. GET /ScheduledTasks under ScheduledTaskService
2. Search for "Refresh Guide" in the response body and take notice of the "Id"
3. POST /ScheduledTasks/{Id}/Triggers to create your custom interval
    Id is the one from the Refresh Guide task and as Request body you can use this
    

[
  {
    "Type": "IntervalTrigger",
    "IntervalTicks": 1728000000000,
  }
]

   48 Hours is: 1728000000000
   72 Hours is: 2592000000000

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...