ombi-app / ombi Goto Github PK
View Code? Open in Web Editor NEWWant a Movie or TV Show on Plex/Emby/Jellyfin? Use Ombi!
Home Page: http://ombi.io
License: GNU General Public License v2.0
Want a Movie or TV Show on Plex/Emby/Jellyfin? Use Ombi!
Home Page: http://ombi.io
License: GNU General Public License v2.0
I just did a fresh install of PlexRequests.net and everything started fine. I was able to register an admin account and pull my plex token successfully when I enter my plex username and PW. My issue arises when I navigate to the Plex menu in admin settings. I put in the local IP of my Plex server and use the default Port and when I test connectivity I get "could not connect to Plex, please check your settings. Exception Message: The underlying connection was closed: An unexpected error occurred on a recieve." I have disabled the firewall in Windows but still am receiving the same error. I am also not able to select users to login from plex, when I refresh the list nothing happens. This install is on a fresh fully updated copy of server 2012R2 with nothing else installed. Any help would be great Thanks!
It would be a nice feature if there was a mobile template for when the site if viewed from a phone.
Add a status page to the settings,
Include application version
if there is an update available
Change the request service to store the requests as JSON blobs in the store.
500 internal server error on first run:
Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'Index'
Currently available view engine extensions: sshtml,html,htm
Locations inspected: views/userlogin/UserLogin/Index-en-US,views/userlogin/UserLogin/Index,userlogin/UserLogin/Index-en-US,userlogin/UserLogin/Index,views/userlogin/Index-en-US,views/userlogin/Index,userlogin/Index-en-US,userlogin/Index,views/UserLogin/Index-en-US,views/UserLogin/Index,UserLogin/Index-en-US,UserLogin/Index,views/Index-en-US,views/Index,Index-en-US,Index
Root path: C:\plexrequestsnet
If you were expecting raw data back, make sure you set the 'Accept'-header of the request to correct format, for example 'application/json'
at Nancy.ViewEngines.DefaultViewFactory.GetRenderedView(String viewName, Object model, ViewLocationContext viewLocationContext)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at Nancy.ViewEngines.DefaultViewFactory.RenderView(String viewName, Object model, ViewLocationContext viewLocationContext)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at Nancy.Responses.Negotiation.ViewProcessor.Process(MediaRange requestedMediaRange, Object model, NancyContext context)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at Nancy.Responses.Negotiation.DefaultResponseNegotiator.NegotiateResponse(IEnumerable1 compatibleHeaders, NegotiationContext negotiationContext, NancyContext context) at Nancy.Responses.Negotiation.DefaultResponseNegotiator.CreateResponse(IList
1 compatibleHeaders, NegotiationContext negotiationContext, NancyContext context)
at Nancy.Responses.Negotiation.DefaultResponseNegotiator.NegotiateResponse(Object routeResult, NancyContext context)
at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at Nancy.Routing.DefaultRouteInvoker.<>c__DisplayClassa.b__6(Task`1 completedTask)
--- End of inner exception stack trace ---
at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline pipeline, Exception ex)
thoughts?
I am trying to run this on a Ubuntu 14.04 machine via Mono.
I simply unzipped the files and then ran it via mono PlexRequests.exe
as the readme suggests. I get a 500 internal server error when going to the page http://localhost:3579/
Here is the large stacktrace it gives:
Error Details
Nancy.RequestExecutionException: Oh noes! ---> System.SystemException: Error running mcs: Cannot find the specified file
at Mono.CSharp.CSharpCodeCompiler.CompileFromFileBatch (System.CodeDom.Compiler.CompilerParameters,string[]) <0x004c3>
at Mono.CSharp.CSharpCodeCompiler.CompileAssemblyFromFileBatch (System.CodeDom.Compiler.CompilerParameters,string[]) <0x00023>
at Mono.CSharp.CSharpCodeCompiler.CompileFromDomBatch (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x0036f>
at Mono.CSharp.CSharpCodeCompiler.CompileAssemblyFromDomBatch (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x00023>
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromDom (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x00034>
at Nancy.ViewEngines.Razor.RazorViewEngine.GenerateRazorViewFactory (Nancy.ViewEngines.Razor.IRazorViewRenderer,System.Web.Razor.GeneratorResults,System.Reflection.Assembly,System.Type,Nancy.ViewEngines.ViewLocationResult) <0x004f3>
at Nancy.ViewEngines.Razor.RazorViewEngine.GetCompiledViewFactory (string,System.IO.TextReader,System.Reflection.Assembly,System.Type,Nancy.ViewEngines.ViewLocationResult) <0x00143>
at Nancy.ViewEngines.Razor.RazorViewEngine/<>c__DisplayClass5c.b__5b (Nancy.ViewEngines.ViewLocationResult) <0x00063>
at Nancy.ViewEngines.DefaultViewCache/<>c__DisplayClass1`1>.b__0 (Nancy.ViewEngines.ViewLocationResult) <0x00018>
at System.Collections.Concurrent.ConcurrentDictionary`2/c__AnonStorey3.<>m__0 () <0x00025>
at (wrapper delegate-invoke) System.Func`1>.invoke_TResult () <0x00046>
at System.Collections.Concurrent.SplitOrderedList`2>.ListInsert (System.Collections.Concurrent.SplitOrderedList`2/Node>,System.Collections.Concurrent.SplitOrderedList`2/Node>,System.Collections.Concurrent.SplitOrderedList`2/Node>&,System.Func`1>) <0x000f2>
at System.Collections.Concurrent.SplitOrderedList`2>.InsertInternal (uint,Nancy.ViewEngines.ViewLocationResult,System.Collections.Generic.KeyValuePair`2,System.Func`1>,System.Collections.Concurrent.SplitOrderedList`2/Node>&) <0x000af>
at System.Collections.Concurrent.SplitOrderedList`2>.InsertOrGet (uint,Nancy.ViewEngines.ViewLocationResult,System.Collections.Generic.KeyValuePair`2,System.Func`1>) <0x00037>
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd (Nancy.ViewEngines.ViewLocationResult,System.Func`2) <0x001eb>
at Nancy.ViewEngines.DefaultViewCache.GetOrAdd> (Nancy.ViewEngines.ViewLocationResult,System.Func`2>) <0x0014f>
at Nancy.ViewEngines.Razor.RazorViewEngine.GetOrCompileView (Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,System.Type) <0x00166>
at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x0018f>
at System.Dynamic.UpdateDelegates.UpdateAndExecute5 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x004d5>
at Nancy.ViewEngines.Razor.RazorViewEngine.GetViewInstance (Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x0038c>
at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x0015b>
at System.Dynamic.UpdateDelegates.UpdateAndExecute5 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x004d5>
at Nancy.ViewEngines.Razor.RazorViewEngine/<>c__DisplayClass2b.b__2a (System.IO.Stream) <0x001e7>
at Nancy.Responses.MaterialisingResponse.PreExecute (Nancy.NancyContext) <0x00060>
--- End of inner exception stack trace ---
at Nancy.NancyEngine.InvokeOnErrorHook (Nancy.NancyContext context, Nancy.ErrorPipeline pipeline, System.Exception ex) [0x00000] in :0
Headphones uses music brainz api
API: https://github.com/rembo10/headphones/blob/master/API.md
Cover Art: https://musicbrainz.org/doc/Cover_Art_Archive/API
https://github.com/Sonarr/Sonarr/wiki/Profile
Test Connection -> Profile Api -> Make user choose a profile before saving.
Downloaded the latest release.
OS Server 2008 R2
.NET 4.6
Launch PlexRequest.exe
Server running on port 3579
Browse to localhost:3579
Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'Index'
Currently available view engine extensions: sshtml,html,htm
Locations inspected: views/userlogin/UserLogin/Index-en,views/userlogin/UserLogin/Index,userlogin/UserLogin/Index-en,userlogin/UserLogin/Index,views/userlogin/Index-en,views/userlogin/Index,userlogin/Index-en,userlogin/Index,views/UserLogin/Index-en,views/UserLogin/Index,UserLogin/Index-en,UserLogin/Index,views/Index-en,views/Index,Index-en,Index
Root path: C:\Users\Administrator\Desktop\Release
If you were expecting raw data back, make sure you set the 'Accept'-header of the request to correct format, for example 'application/json'
at Nancy.ViewEngines.DefaultViewFactory.GetRenderedView(String viewName, Object model, ViewLocationContext viewLocationContext)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at CallSite.Target(Closure , CallSite , DefaultViewFactory , Object , Object , ViewLocationContext )
at Nancy.ViewEngines.DefaultViewFactory.RenderView(String viewName, Object model, ViewLocationContext viewLocationContext)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at CallSite.Target(Closure , CallSite , IViewFactory , String , Object , ViewLocationContext )
at Nancy.Responses.Negotiation.ViewProcessor.Process(MediaRange requestedMediaRange, Object model, NancyContext context)
at System.Dynamic.UpdateDelegates.UpdateAndExecute4[T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at CallSite.Target(Closure , CallSite , IResponseProcessor , String , Object , NancyContext )
at Nancy.Responses.Negotiation.DefaultResponseNegotiator.NegotiateResponse(IEnumerable1 compatibleHeaders, NegotiationContext negotiationContext, NancyContext context) at Nancy.Responses.Negotiation.DefaultResponseNegotiator.CreateResponse(IList
1 compatibleHeaders, NegotiationContext negotiationContext, NancyContext context)
at Nancy.Responses.Negotiation.DefaultResponseNegotiator.NegotiateResponse(Object routeResult, NancyContext context)
at Nancy.Routing.DefaultRouteInvoker.<>c__DisplayClassa.b__6(Task`1 completedTask)
--- End of inner exception stack trace ---
at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline pipeline, Exception ex)
A nice to have.
Allow the specify a list of issues (similar to the denied list) that the users don't need approval for requests.
It would be useful to some to use it without the integration of CP as a requirement to submit requests and approve them.
New dropdown option > open a modal with all seasons available. Pick an individual season to download.
Add an option to manually set the status of a request.
Available,
Unavailable
Enable filtering, filter approved, available etc.
Allow a user to receive an notification once the request has been approve and then once the request is available.
Title says it all. Or even multiple admins maybe?
I installed the program, ran it As Administrator, and as soon as I open the userlogin web page it gave me a 500 - Internal Server Error. Pastebin of error.
Running Windows 10 x64. Any suggestions? Thanks!
We need to add an extra check to find out if the user is the Plex Owner
PlexRequests.UI.Modules.UserLoginModule.cs
method private Response LoginUser()
A new page that shows all current Plex content with their quality.
Add the ability to request the same version but different quality
when i try and connect to CP thru SSL i get this error:
Could not connect to CouchPotato, please check your settings. Exception Message: 'doctype' is an unexpected token. The expected token is 'DOCTYPE'. Line 2, position 3.
Log:
at PlexRequests.Api.ApiRequest.Execute[T] (IRestRequest request, System.Uri baseUri) <0xf0a5f3f8 + 0x0010f> in <filename unknown>:0 at PlexRequests.Api.CouchPotatoApi.GetStatus (System.Uri url, System.String apiKey) <0xf0a5ef10 + 0x000d3> in <filename unknown>:0 at PlexRequests.UI.Modules.ApplicationTesterModule.CouchPotatoTest () <0xf0a791d8 + 0x00062> in <filename unknown>:0 2016/03/19 15:30:50.274 PlexRequests.Api.CouchPotatoApi Trace: Getting CP Status, ApiKey = ***I TOOK THIS OUT*** 2016/03/19 15:30:50.309 PlexRequests.UI.Modules.ApplicationTesterModule Warn: Exception thrown when attempting to get CP's status: 2016/03/19 15:30:50.309 PlexRequests.UI.Modules.ApplicationTesterModule Warn: System.ApplicationException: Error retrieving response. Check inner details for more info. ---> System.Xml.XmlException: 'doctype' is an unexpected token. The expected token is 'DOCTYPE'. Line 2, position 3. at System.Xml.XmlTextReaderImpl.Throw (System.Exception e) <0xf0a277c0 + 0x0007f> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.Throw (System.String res, System.String[] args) <0xf0a273c8 + 0x0009b> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken (System.String expectedToken1, System.String expectedToken2) <0xf0a27050 + 0x00137> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken (System.String expectedToken1) <0xf0a27028 + 0x0001f> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl () <0xf0a26cf8 + 0x000fb> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.ParseDocumentContent () <0xf7266a78 + 0x002a3> in <filename unknown>:0 at System.Xml.XmlTextReaderImpl.Read () <0xf72637a0 + 0x00053> in <filename unknown>:0 at System.Xml.Linq.XDocument.Load (System.Xml.XmlReader reader, LoadOptions options) <0xf0a269e8 + 0x0002d> in <filename unknown>:0 at System.Xml.Linq.XDocument.Parse (System.String text, LoadOptions options) <0xf0a26240 + 0x00077> in <filename unknown>:0 at System.Xml.Linq.XDocument.Parse (System.String text) <0xf0a26210 + 0x0001b> in <filename unknown>:0 at RestSharp.Deserializers.XmlDeserializer.Deserialize[T] (IRestResponse response) <0xf0a25f40 + 0x0004f> in <filename unknown>:0 at RestSharp.RestClient.Deserialize[T] (IRestRequest request, IRestResponse raw) <0xf0a53ba8 + 0x00168> in <filename unknown>:0 --- End of inner exception stack trace ---
Hey there - Came across your app and tried to get it running on my Ubuntu Server box, however I'm getting a 500 error. The only other 500 error I could find referenced unblocking on a Windows box, which wouldn't be applicable here. My mono version is 3.10.0 (tarball Wed Nov 5 12:50:04 UTC 2014)
Here is the error I'm getting, any thoughts?
Error Details
Nancy.RequestExecutionException: Oh noes! ---> System.SystemException: Error running mcs: Cannot find the specified file
at Mono.CSharp.CSharpCodeCompiler.CompileFromFileBatch (System.CodeDom.Compiler.CompilerParameters,string[]) <0x00577>
at Mono.CSharp.CSharpCodeCompiler.CompileAssemblyFromFileBatch (System.CodeDom.Compiler.CompilerParameters,string[]) <0x00033>
at Mono.CSharp.CSharpCodeCompiler.CompileFromDomBatch (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x0040b>
at Mono.CSharp.CSharpCodeCompiler.CompileAssemblyFromDomBatch (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x00033>
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromDom (System.CodeDom.Compiler.CompilerParameters,System.CodeDom.CodeCompileUnit[]) <0x0004d>
at Nancy.ViewEngines.Razor.RazorViewEngine.GenerateRazorViewFactory (Nancy.ViewEngines.Razor.IRazorViewRenderer,System.Web.Razor.GeneratorResults,System.Reflection.Assembly,System.Type,Nancy.ViewEngines.ViewLocationResult) <0x0059c>
at Nancy.ViewEngines.Razor.RazorViewEngine.GetCompiledViewFactory (string,System.IO.TextReader,System.Reflection.Assembly,System.Type,Nancy.ViewEngines.ViewLocationResult) <0x001a7>
at Nancy.ViewEngines.Razor.RazorViewEngine/<>c__DisplayClass5c.b__5b (Nancy.ViewEngines.ViewLocationResult) <0x0005b>
at Nancy.ViewEngines.DefaultViewCache/<>c__DisplayClass11>.b__0 (Nancy.ViewEngines.ViewLocationResult) <0x00023> at System.Collections.Concurrent.ConcurrentDictionary
2/c__AnonStorey3.<>m__0 () <0x00035>
at (wrapper delegate-invoke) System.Func1>.invoke_TResult () <0x0005b> at System.Collections.Concurrent.SplitOrderedList
2>.ListInsert (System.Collections.Concurrent.SplitOrderedList2/Node>,System.Collections.Concurrent.SplitOrderedList
2/Node>,System.Collections.Concurrent.SplitOrderedList2/Node>&,System.Func
1>) <0x0013f>
at System.Collections.Concurrent.SplitOrderedList2>.InsertInternal (uint,Nancy.ViewEngines.ViewLocationResult,System.Collections.Generic.KeyValuePair
2,System.Func1>,System.Collections.Concurrent.SplitOrderedList
2/Node>&) <0x000b3>
at System.Collections.Concurrent.SplitOrderedList2>.InsertOrGet (uint,Nancy.ViewEngines.ViewLocationResult,System.Collections.Generic.KeyValuePair
2,System.Func1>) <0x0004f> at System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd (Nancy.ViewEngines.ViewLocationResult,System.Func2) <0x00204> at Nancy.ViewEngines.DefaultViewCache.GetOrAdd> (Nancy.ViewEngines.ViewLocationResult,System.Func
2>) <0x00177>
at Nancy.ViewEngines.Razor.RazorViewEngine.GetOrCompileView (Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,System.Type) <0x001f3>
at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x00213>
at System.Dynamic.UpdateDelegates.UpdateAndExecute5 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x00624>
at (wrapper delegate-invoke) System.Func7.invoke_TResult_T1_T2_T3_T4_T5_T6 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x000ae> at Nancy.ViewEngines.Razor.RazorViewEngine.GetViewInstance (Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x00403> at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x001db> at System.Dynamic.UpdateDelegates.UpdateAndExecute5 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x00624> at (wrapper delegate-invoke) System.Func
7.invoke_TResult_T1_T2_T3_T4_T5_T6 (System.Runtime.CompilerServices.CallSite,Nancy.ViewEngines.Razor.RazorViewEngine,Nancy.ViewEngines.ViewLocationResult,Nancy.ViewEngines.IRenderContext,System.Reflection.Assembly,object) <0x000ae>
at Nancy.ViewEngines.Razor.RazorViewEngine/<>c__DisplayClass2b.b__2a (System.IO.Stream) <0x001d9>
at Nancy.Responses.MaterialisingResponse.PreExecute (Nancy.NancyContext) <0x0006b>
--- End of inner exception stack trace ---
at Nancy.NancyEngine.InvokeOnErrorHook (Nancy.NancyContext context, Nancy.ErrorPipeline pipeline, System.Exception ex) [0x00000] in :0
Would be nice to see logs in the admin panel to easily see what errors come up.
I also noticed that .log files are in the root directory. Would keep down on clutter if they were in a Logs folder.
Thoughts?
Searched for a movie already in Plex and got a "Something went wrong" error.
It seems to be because we are reserving all url's using the port on startup.
Title says it all.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.