Jump to content

Tvheadend plugin for Emby - Beta 1


Tolotos

Recommended Posts

Gerrit507

No it needs image/png, image/jpeg, etc. We don't try and detect what kind of image it is.

How did it work before then? :huh:

 

btw: Do you have any news on the recording issue? Are those two bugs probably related?

Edited by Gerrit507
Link to comment
Share on other sites

A while ago Tolotos was using .net graphics api's to examine the images, but those api's are no longer available in .net core. i advised against it anyway. just force the supplier to tell you what kind of image it is and it will perform much better.

Link to comment
Share on other sites

Gerrit507

A while ago Tolotos was using .net graphics api's to examine the images, but those api's are no longer available in .net core. i advised against it anyway. just force the supplier to tell you what kind of image it is and it will perform much better.

 

I'm having a lot of fun with .net core, too :D :D :D

 

Did you read my other questions?

Link to comment
Share on other sites

Gerrit507

I don't know. I haven't seen a log file related to the recordings yet.

Ok here you go.

What I did:

1) I stopped emby

2) Made a short recording in tvheadend

3) started emby

4) accessed emby webinterface

5) emby crashes

server-63655274236.txt

Edited by Gerrit507
Link to comment
Share on other sites

Well I'm sure the crash is in the plugin. I don't really know how i can help with that part of things. does tvheadend really not have a plain http api?

Link to comment
Share on other sites

Gerrit507

Well I'm sure the crash is in the plugin. I don't really know how i can help with that part of things. does tvheadend really not have a plain http api?

 

It has a json api... but I've found nothing about a http api.

 

What you could do is add more logging to the plugin so that we can see how far it gets.

 

I'll give it a try.

Link to comment
Share on other sites

Gerrit507

I've found out that buildDvrInfos is working fine. I'm logging upcoming recordings with it and it's not crashing. My next try would be the RecordingsChannel class but it hasn't got any logger. It's getting called directly from the server right? I would bet it is something in there causing the issue...

Link to comment
Share on other sites

I've found out that buildDvrInfos is working fine. I'm logging upcoming recordings with it and it's not crashing. My next try would be the RecordingsChannel class but it hasn't got any logger. It's getting called directly from the server right? I would bet it is something in there causing the issue...

 

If there were an error there it would get logged into the core server log. The fact that there's nothing in the log is probably an indication that an exception is being thrown on another thread that doesn't have any try/catch.

Link to comment
Share on other sites

Gerrit507

If there were an error there it would get logged into the core server log. The fact that there's nothing in the log is probably an indication that an exception is being thrown on another thread that doesn't have any try/catch.

 

Ok, I see. This what I got with my logging in buildDvrInfos

server-log.txt

Edited by Gerrit507
Link to comment
Share on other sites

Gerrit507

I've put logging and try catch blocks now in every method of DvrDataHelper, nothing suspicious there. Which other methods are related to recordings? I've found out that not only finished recordings are causing a crash, also currently running ones. Only upcoming recordings are fine.

Link to comment
Share on other sites

Gerrit507

you can go ahead and put some in recordings channel if you want. that way we can see the whole flow.

But it doesn't have a logger field. It must get the logger instance from the server, right?

Link to comment
Share on other sites

Gerrit507

I've put try catch blocks in the methods of RecordingChannels. Seems like nothing happening there.

 

I'm starting to believe that it's somewhere in the server. Why else would it work with version up to 2.7.6.0 and stopped working with 2.7.18.0 upwards... Something in the new way of getting/showing the recordings is incompatible with the plugin. Maybe it's causing issues with other plugins too... Then on the other hand, why is there absolutely nothing in the logs...

Edited by Gerrit507
Link to comment
Share on other sites

Well these same changes have gone into the other plugins (most of them), and they are able to show recordings.

Link to comment
Share on other sites

bobwinters

What issue are you having?

Same as Gerrit507 apart from the crashing. No recordings showing and no channel logos. Apart from that, it's fine.

Link to comment
Share on other sites

Gerrit507

Yes, but just like others have said. When you click on TVHeadend recordings it has 'Others', then nothing inside of that. 

 

https://i.imgur.com/dIseAYR.jpg

Which OS do you have? Maybe we can find something in your logs, when your server isn't crashing. Could you please upload a server log? :)

Link to comment
Share on other sites

Gerrit507

@@Luke

I got the idea to run emby in vs to find the bug and it payed off

>	TVHeadEnd!TVHeadEnd.RecordingsChannel.ConvertToChannelItem(TVHeadEnd.MyRecordingInfo item = {unbekannt})	C#	Nichtbenutzercode
 	System.Core.dll!WhereSelectListIterator`2.MoveNext()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Collections.Generic.List`1.InsertRange(int index = {unbekannt}, System.Collections.Generic.IEnumerable collection = {unbekannt})	C#	Nichtbenutzercode
 	TVHeadEnd!<GetChannelItems>d__24.MoveNext()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext = {unbekannt}, System.Threading.ContextCallback callback = {unbekannt}, object state = {unbekannt}, bool preserveSyncCtx = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext = {unbekannt}, System.Threading.ContextCallback callback = {unbekannt}, object state = {unbekannt}, bool preserveSyncCtx = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!MoveNextRunner.Run()	C#	Nichtbenutzercode
 	mscorlib.dll!<>c__DisplayClass4_0.AnonymousMethod()	C#	Nichtbenutzercode
 	mscorlib.dll!<>c__DisplayClass11_0.AnonymousMethod()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action = {unbekannt}, bool allowInlining = {unbekannt}, ref System.Threading.Tasks.Task currentTask = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task`1.TrySetResult(TResult result = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(TResult result = {unbekannt})	C#	Nichtbenutzercode
 	TVHeadEnd!<GetAllRecordingsAsync>d__34.MoveNext()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext = {unbekannt}, System.Threading.ContextCallback callback = {unbekannt}, object state = {unbekannt}, bool preserveSyncCtx = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext = {unbekannt}, System.Threading.ContextCallback callback = {unbekannt}, object state = {unbekannt}, bool preserveSyncCtx = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!MoveNextRunner.Run()	C#	Nichtbenutzercode
 	mscorlib.dll!<>c__DisplayClass4_0.AnonymousMethod()	C#	Nichtbenutzercode
 	mscorlib.dll!<>c__DisplayClass11_0.AnonymousMethod()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action = {unbekannt}, bool allowInlining = {unbekannt}, ref System.Threading.Tasks.Task currentTask = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task.Finish(bool bUserDelegateExecuted = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.Tasks.Task.ExecuteEntry(bool bPreventDoubleExecution = {unbekannt})	C#	Nichtbenutzercode
 	mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()	C#	Nichtbenutzercode

+		Ausnahme	Ausgelöste Ausnahme: "System.NullReferenceException" in TVHeadEnd ("Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.")	System.NullReferenceException

ConvertToChannelItem is throwing a null reference exception...

 

Sorry for the german ouput. I hope you can translate it.

 

edit:

Some more info

-		item	{TVHeadEnd.MyRecordingInfo}	TVHeadEnd.MyRecordingInfo
		Audio	null	MediaBrowser.Model.LiveTv.ProgramAudio?
		ChannelId	"1687266589"	string
		ChannelType	TV	MediaBrowser.Model.LiveTv.ChannelType
		CommunityRating	null	float?
+		DateLastUpdated	{01.01.0001 00:00:00}	System.DateTime
+		EndDate	{28.02.2018 02:15:00}	System.DateTime
		EpisodeTitle	null	string
+		Genres	Count = 0	System.Collections.Generic.List<string>
		HasImage	false	bool?
		Id	"1023472816"	string
		ImagePath	null	string
		ImageUrl	null	string
		IsHD	null	bool?
		IsKids	false	bool
		IsLive	false	bool
		IsMovie	false	bool
		IsNews	false	bool
		IsPremiere	false	bool
		IsRepeat	false	bool
		IsSeries	false	bool
		IsSports	false	bool
		Name	"Tagesschau"	string
		OfficialRating	null	string
		OriginalAirDate	null	System.DateTime?
		Overview	"Die Nachrichten der ARD\nProduziert in HD"	string
		Path	null	string
		ProgramId	null	string
		SeriesTimerId	null	string
		ShowId	null	string
+		StartDate	{28.02.2018 02:13:00}	System.DateTime
		Status	Completed	MediaBrowser.Model.LiveTv.RecordingStatus
		TimerId	null	string
		Url	null	string
		item.Path	null	string
		item.Url	null	string

Path and Url are both null...

Edited by Gerrit507
Link to comment
Share on other sites

Gerrit507

Fixed it! :D

 

https://github.com/MediaBrowser/Tvheadend/pull/4

 

Still a bad news though: I've just published it to my server and I can't play the recordings. Obviously the path can't be reached because it is just a relative path inside the recordings folder of tvheadend.

 

I have an idea. Will code it later...

post-191225-0-80292800-1519787069_thumb.jpg

post-191225-0-37429700-1519787074_thumb.jpg

Edited by Gerrit507
  • Like 1
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...