Jump to content

3.6 api breaking changes


Luke

Recommended Posts

Angelblue05

It's json. The u is just python unicode string indicator. Has no effect on the code.

 

The webapp calls this

$embyServerUrl + "/emby/users/" + $User.User.Id + "/items?Recursive=true&IncludeItemTypes=Movie" + "&api_key=" + $User.AccessToken

 

That's returns Movies and Boxsets, but boxsets are type Movie with* isFolder is False.

 

If you call 

$embyServerUrl + "/emby/users/" + $User.User.Id + "/items?Recursive=true&IncludeItemTypes=Movie,Boxset" + "&api_key=" + $User.AccessToken

 

No issues. I posted a screenshot in my post, that's not what you see in the webapp?

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

PenkethBoy

ar - was running it with both

 

just movie does bring back collections as well as type movie

 

so same now - which is a change in since .38 of beta - as i tested this the other day

  • Like 1
Link to comment
Share on other sites

PenkethBoy

@@Luke

 

with .42

 

Running a query with  &IncludeItemTypes=Movie - still brings back Boxset as well as Movies - although now Boxsets have IsFolder is true and Type is now Boxset

 

Can we have it so it JUST brings back Movies please as it used to

 

Thanks

Link to comment
Share on other sites

it's because without specifying it goes by the user settings. What we need to do is only group them when you ask for it. It's on my to do list. 

  • Like 1
Link to comment
Share on other sites

Angelblue05
20:46:10.763 T:4744  NOTICE: EMBY.entrypoint.service -> [ LibraryChanged ] {u'FoldersAddedTo': [u'46435'], u'CollectionFolders': [u'0c41907140d802bb58430fed7e2cd79e', u'7e64e319657a9516ec78490da03edccb', u'bce6ab2f862d8111846735d20a46b29a', u'4514ec850e5ad0c47b58444e17b6346c', u'9713ca41539b6bcc9215a8bbed2b1b32', u'f137a2dd21bbc1b99aa5c0f6bf02a805', u'165db2549e77c71dacef0e83a95cc5de', u'a329cda1727467c08a8f1493195d32d3', u'f1ffda17fff72a19997ec7e667bb8d3c', u'122ca211c46006b344d85950f9ed4368', u'485ba1a1719b13876716412eb1915bb0', u'6b1bca533a3fc6ea9955ffe3d16d7d07', u'52f1cc5cfe5ba8c9452cebe7bca9e026', u'6309155661afe2b1a2750be5d21f4fdf', u'2c2260660d232253be35f46fcf43b95b', u'9d7ad6afe9afa2dab1a2f6e00ad28fa6', u'48af3bb0f5988d3cd867a245b7ef32d1', u'1071671e7bffa0532e930debee501d2e'], u'ItemsRemoved': [u'46444'], u'ItemsUpdated': [u'46435', u'46440', u'46444', u'46442', u'46443'], u'FoldersRemovedFrom': [u'46435'], u'ItemsAdded': [u'46442', u'46443', u'46444'], u'IsEmpty': False}
20:46:11.101 T:7656  NOTICE: EMBY.library -> Could not find media 46444 in the emby database.
20:46:11.116 T:4308  NOTICE: Emby.emby.core.http -> ERROR:: 500 Server Error: Internal Server Error for url: http://{emby-server}/emby/Users/d4000909883845059aadef13b7110375/Items/46444
20:46:11.116 T:4308  NOTICE: Emby.emby.core.http -> ERROR:: --[ 500 response ] 500 Server Error: Internal Server Error for url: http://{emby-server}/emby/Users/d4000909883845059aadef13b7110375/Items/46444

Server returns some id of a folder 46444 as item added. The server returns error 500 when trying to query that id.

2018-09-15 20:46:15.210 Error HttpServer: Error processing request
	*** Error Report ***
	Version: 3.6.0.42
	Command line: C:\Users\Corruption\AppData\Roaming\Emby-Server\system\EmbyServer.dll -noautorunwebapp
	Operating system: Microsoft Windows NT 6.2.9200.0
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Processor count: 4
	Program data path: C:\Users\Corruption\AppData\Roaming\Emby-Server
	Application directory: C:\Users\Corruption\AppData\Roaming\Emby-Server\system
	System.NullReferenceException: Object reference not set to an instance of an object.
	Source: Emby.Server.Implementations
	TargetSite: MediaBrowser.Model.Dto.BaseItemDto GetBaseItemDtoInternal(MediaBrowser.Controller.Entities.BaseItem, MediaBrowser.Controller.Dto.DtoOptions, MediaBrowser.Controller.Entities.User, MediaBrowser.Controller.Entities.BaseItem)
	   at Emby.Server.Implementations.Dto.DtoService.GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user, BaseItem owner)
	   at Emby.Server.Implementations.Dto.DtoService.GetBaseItemDto(BaseItem item, DtoOptions options, User user, BaseItem owner)
	   at MediaBrowser.Api.UserLibrary.UserLibraryService.Get(GetItem request)
	   at Emby.Server.Implementations.Services.ServiceExecGeneral.GetTaskResult(Task task)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, ILogger logger, String operationName, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IHttpRequest httpReq, String urlString, String host, String localPath, CancellationToken cancellationToken)
Link to comment
Share on other sites

quickmic

@@Luke

 

Can you please a look at this issue please.

 

The problem appears when I try to authenticate me via kodi in a special way.

Do you need more information, or is the log self explanatory?

2018-09-15 09:35:01.796 Info HttpServer: HTTP POST http://multimedia.rms-systems.net:8096/emby/Users/AuthenticateByName. UserAgent: Emby-Kodi/3.1.15a
2018-09-15 09:35:01.797 Info UserManager: Authentication request for quickmic has succeeded.
2018-09-15 09:35:01.797 Info SessionManager: Creating new access token for user 4
2018-09-15 09:35:01.798 Error HttpServer: Error processing request
    *** Error Report ***
    Version: 3.6.0.41
    Command line: /opt/emby/EmbyServer.dll -noautorunwebapp
    Operating system: Unix 4.15.17.3
    64-Bit OS: True
    64-Bit Process: True
    User Interactive: True
    Processor count: 12
    Program data path: /opt/programdata
    Application directory: /opt/emby
    SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
    Source: SQLitePCL.pretty
    TargetSite: Void CheckOk(SQLitePCL.sqlite3, Int32)
       at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
       at SQLitePCL.pretty.StatementImpl.MoveNext()
       at Emby.Server.Implementations.Security.AuthenticationRepository.<>c__DisplayClass7_0.<Create>b__0(IDatabaseConnection db)
       at SQLitePCL.pretty.DatabaseConnection.<>c__DisplayClass20_0.<RunInTransaction>b__0(IDatabaseConnection db)
       at SQLitePCL.pretty.DatabaseConnection.RunInTransaction[T](IDatabaseConnection This, Func`2 f, TransactionMode mode)
       at SQLitePCL.pretty.DatabaseConnection.RunInTransaction(IDatabaseConnection This, Action`1 action, TransactionMode mode)
       at Emby.Sqlite.ManagedConnection.RunInTransaction(Action`1 action, TransactionMode mode)
       at Emby.Server.Implementations.Security.AuthenticationRepository.Create(AuthenticationInfo info)
       at Emby.Server.Implementations.Session.SessionManager.GetAuthorizationToken(User user, String deviceId, String app, String appVersion, String deviceName)
       at Emby.Server.Implementations.Session.SessionManager.AuthenticateNewSessionInternal(AuthenticationRequest request, Boolean enforcePassword)
       at MediaBrowser.Api.UserService.Post(AuthenticateUserByName request)
       at Emby.Server.Implementations.Services.ServiceExecGeneral.GetTaskResult(Task task)
       at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, ILogger logger, String operationName, CancellationToken cancellationToken)
       at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IHttpRequest httpReq, String urlString, String host, String localPath, CancellationToken cancellationToken)
    
2018-09-15 09:35:01.799 Info HttpServer: HTTP Response 500 to 182.55.69.223. Time: 3ms. http://multimedia.rms-systems.net:8096/emby/Users/AuthenticateByName
2018-09-15 09:36:46.888 Info HttpServer: HTTP GET http://multimedia.rms-systems.net:8096/emby/Users/Public. UserAgent: Emby-Kodi/3.1.15a
2018-09-15 09:36:46.889 Info HttpServer: HTTP Response 200 to 182.55.69.223. Time: 1ms. http://multimedia.rms-systems.net:8096/emby/Users/Public

thx

emby-auth7.log

Edited by quickmic
Link to comment
Share on other sites

Don't know what you mean by special way, but update to the latest beta, then compare your auth request to the web client and that should help you find the problem.

Link to comment
Share on other sites

quickmic

Ok, gave it a shot with the latest beta:

2018-09-16 05:44:11.991 Info SessionManager: Reissuing access token: 7958cf19957e4b2f98917d1a2101d958
2018-09-16 05:44:12.002 Error HttpServer: Error processing request
	*** Error Report ***
	Version: 3.6.0.43
	Command line: /opt/emby/EmbyServer.dll
	Operating system: Unix 4.15.17.3
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Processor count: 12
	Program data path: /opt/programdata
	Application directory: /opt/emby
	System.ArgumentNullException: Value cannot be null.
	Parameter name: appName
	Source: Emby.Server.Implementations
	TargetSite: MediaBrowser.Controller.Session.SessionInfo LogSessionActivity(System.String, System.String, System.String, System.String, System.String, MediaBrowser.Controller.Entities.User)
	   at Emby.Server.Implementations.Session.SessionManager.LogSessionActivity(String appName, String appVersion, String deviceId, String deviceName, String remoteEndPoint, User user)
	   at Emby.Server.Implementations.Session.SessionManager.AuthenticateNewSessionInternal(AuthenticationRequest request, Boolean enforcePassword)
	   at MediaBrowser.Api.UserService.Post(AuthenticateUserByName request)
	   at Emby.Server.Implementations.Services.ServiceExecGeneral.GetTaskResult(Task task)
	   at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, ILogger logger, String operationName, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, String urlString, String host, String localPath, CancellationToken cancellationToken)
	
2018-09-16 05:44:12.002 Info HttpServer: HTTP Response 400 to 182.55.69.223. Time: 17ms. http://multimedia.rms-systems.net:8096/emby/Users/AuthenticateByName

My login approach is as follows...

I'm running emby behind an apache proxy with additional login authentication and using kodi-plugin.

 

To provide apache proxy with the additional credentials, I modify the server URL (in kodi-plugin) as follows:

https://quickmic:AB7cde!12345678@[member="multimedia"].rms-systems.net:443

If I do that, I trigger the issue.

As I workaround I can disable additional authentication on apache proxy, then login and receive my accesstoken.

Once this is done, I can re-enable the auth on proxy and all good.

Everything works well, but this is just a workaround, it should not be there in the first place.

btw, can you please modify the "Expert" -> "Advanced" -> "External Domain" behavior, that it accepts urls with username and password.

like:

quickmic:AB7cde!12345678@[member="multimedia"].rms-systems.net
Edited by quickmic
Link to comment
Share on other sites

Hi @@Luke

 

sorry another basic question.. I am using the emby.apiclient and am  working through all the variations for collectionfolders. the client returns

 

 

item.Type = "CollectionFolder"
item.CollectionType is null
 
for emby tv recordings it is I guess the library/type is auto created when you add a path like below.
 
5ba69e3135940_record.png
 
Is it supposed to work this way? I can check for it, but are there others that will return similar ?
 
It may have always been this way, but I am now just jumping into it to handle the recent changes.
 
Thanks!!
Link to comment
Share on other sites

  • 2 weeks later...

Seems to be a breaking change in 3.6.0.51 in the usersession json response.

UserId is now a string instead of a long

Edited by joggs
Link to comment
Share on other sites

  • 2 weeks later...
Angelblue05

@@Luke

 

Another breaking change with .55. 'MaxResumePct' which is the resume setting set in the server is no longer returned with system info. I also cannot locate this setting server side anymore.

Edited by Angelblue05
Link to comment
Share on other sites

To avoid duplicating logic client side, maybe a better way would be to pull down a fresh copy of that item after playback, and see if the server now considers it fully watched.

Link to comment
Share on other sites

  • 4 weeks later...

I did change it to only send it back if the value is Virtual. Can you tell me what you are using it for, just so that we can be on the same page about it? Thanks.

  • 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...