felixkmh / quicksearch-for-playnite Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
When trying to open the settings for the plugin I get "Failed to load plugin settings"
Here's the log entry from playnite.log
27-06 14:49:00.345|ERROR|PluginSettingsHelper:Failed to load plugin settings, 6a604592-7001-4b4e-a3be-91073b459e2b
Newtonsoft.Json.JsonSerializationException: Error setting value to 'EnableGlobalHotkey' on 'QuickSearch.SearchSettings'. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at QuickSearch.SearchPlugin.RegisterGlobalHotkey() in E:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:line 147
at QuickSearch.SearchSettings.set_EnableGlobalHotkey(Boolean value) in E:\Programmierung\playnite-dev\QuickSearch\source\Settings\SearchSettings.cs:line 139
at SetEnableGlobalHotkey(Object , Object )
at Newtonsoft.Json.Serialization.DynamicValueProvider.SetValue(Object target, Object value)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.DynamicValueProvider.SetValue(Object target, Object value)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at QuickSearch.SearchSettings.BeginEdit() in E:\Programmierung\playnite-dev\QuickSearch\source\Settings\SearchSettings.cs:line 248
at Playnite.DesktopApp.ViewModels.PluginSettingsHelper.GetPluginSettingsView(Guid pluginId, ExtensionFactory extensions, Dictionary`2 loadedPluginSettings) in C:\projects\playnite\source\Playnite.DesktopApp\PluginSettingsHelper.cs:line 48
27-06 14:49:02.726|DEBUG|WindowFactory:Closing window Playnite.DesktopApp.Windows.AddonsWindowFactory, False.
I am not entirely sure that this is even possible, but I would love it if it the QuickSearch prompt could popup if pressing certain hotkeys without having Playnite focused.
Akin to pressing windows button and start typing to search for software, it could quickly pop up, allow you to find the game you want and launch it.
I have found that it can be difficult to find some games to play because it mixes games that are uninstalled in the list so this should help. Personally I think only installed games should be in the search by default because you are not installing games constantly but not sure.
For example, typing Dark Souls
gives me an uninstalled and unplayable game
Would make adding games to library very quick. It can set as 'not installed' and 'plan to play' for convinience. Would be great if it could atleast use igdb or steam.
Would appreciate a way to search over more fields like release date, series, and notes.
Reason is that quite often I want to open a PC game rather than one of the many installed roms.
Currently QuickSearch doesn't seem to support searching on tags as a filter (or it isn't working for me).
When using the Steam Tags Importer and/or PCGamingWiki metadata source you can end up with a very large number of tags that Playnite doesn't have a way to quick filter on (I have over 500). QuickSearch seems like the perfect solution for this.
26-05 15:07:29.520|DEBUG|QuickSearch#SearchPlugin:Failed request to ITAD
System.Net.Http.HttpRequestException: Response status code does not indicate success: 500 (Internal Server Error).
26-05 15:07:29.520|DEBUG|QuickSearch#SearchPlugin:Failed request to ITAD
System.Net.Http.HttpRequestException: Response status code does not indicate success: 500 (Internal Server Error).
I was wondering why I wasn't getting any results at all, and found this.
When running QuickSearch alongside Searchnite plugin, QuickSearch doesn't load.
Here's what's in playnite.log
:
05-09 12:02:19.629|ERROR|ExtensionFactory:Failed to execute OnApplicationStarted method from QuickSearch plugin.
System.NullReferenceException: Object reference not set to an instance of an object.
at QuickSearch.SearchItems.ExtensionItemSource..ctor(SearchPlugin searchPlugin) in E:\Programmierung\playnite-dev\QuickSearch\source\SearchItems\ExtensionItemSource.cs:line 93
at QuickSearch.SearchPlugin.OnApplicationStarted(OnApplicationStartedEventArgs args) in E:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:line 324
at Playnite.Plugins.ExtensionFactory.NotifiyOnApplicationStarted() in C:\projects\playnite\source\Playnite\Plugins\ExtensionFactory.cs:line 710
Seems to be pointing at function that get main menu items, and Sharenite is creating one here https://github.com/sharenite/playnite-sharenite/blob/64e95fb0df18aa525482533a6b2244fa56c4b6cd/Sharenite.cs#L46.
Ideally, the exact fields shown would be customiseable, but I would happily trade, e.g., Time Played or Last Played for Completion Status.
I've set the global shortcut to several different things and it doesn't work.
Also if I press a button that I have set up lik f13, it adds "none + f13" but it still doesn't work. But no actual shortcuts are working.
It would also be helpful to be able to add the windows key to the shortcut, that's how I would handle it.
I would like to be able to open the QuickSearch by running a URI along the lines of playnite://QuickSearch
.
I use a quick launcher (PowerToys Run) so the global hotkey adds a functionality similar to what I already have, and would like to run it from that using that URI via that software or a shortcut.
https://playnite.link/docs/master/tutorials/extensions/uriSupport.html
EDIT: I made this issue before realizing Global Search was added in 10 and has a lot of the functionality of this plugin, so I should probably look into it there instead lol
Hotkeys (local and global) for the search popup is not working (Changed, disable and re-enable them)
The only error I could find in the logs is this part in the playnite.log
01-07 17:42:19.530|ERROR|ExtensionFactory:Failed to execute OnApplicationStarted method from QuickSearch plugin.
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at QuickSearch.SearchItems.ExtensionItemSource..ctor(SearchPlugin searchPlugin) in E:\Programmierung\playnite-dev\QuickSearch\source\SearchItems\ExtensionItemSource.cs:line 65
at QuickSearch.SearchPlugin.OnApplicationStarted(OnApplicationStartedEventArgs args) in E:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:line 324
at Playnite.Plugins.ExtensionFactory.NotifiyOnApplicationStarted() in C:\projects\playnite\source\Playnite\Plugins\ExtensionFactory.cs:line 710
Many games are missing icons and are harder to grok visually when searching.
It would be amazing if we had an option to either use cover arts in place of missing icons or to optionally only use cover arts instead of icons in the pop up window
As of now, a game named "Astérix" can be found by typing "Asterix", however not all diacritics currently support this behavior. Please add support for basic substitution of the macron (ā, ī, ū, ē, ō as a, i, u, e, o).
The extension has been working perfectly for weeks so I'm kind of puzzled as to what is suddenly causing the issue, but here goes : currently, the default search behaviour (non global Ctrl+F) has stopped working completely, including when trying to change the shortcut, with CTRL+F now reverting to Playnite's default search bar. The global shortcut does work, but it too seems to be only partially functionnal (transparency is gone, for example)
This is happening with version 2.11.5 of the extension regardless of themes or other installed extensions. I've tried reinstalling the extension to no avail, but the parameters seem to be restored even when deleting the corresponding folder, so I'll have to verify that the issue isn't on my end with a portable installation.
I get this while I try to launch the search dialog with both the global and local hot key:
System.Windows.Markup.XamlParseException: Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception. ---> System.OverflowException: The image data generated an overflow during processing. ---> System.ArithmeticException: Overflow or underflow in the arithmetic operation.
--- End of inner exception stack trace ---
at System.Windows.Media.Imaging.ColorConvertedBitmap.FinalizeCreation()
at System.Windows.Media.Imaging.ColorConvertedBitmap..ctor(BitmapSource source, ColorContext sourceColorContext, ColorContext destinationColorContext, PixelFormat format)
at System.Windows.Media.Imaging.BitmapSource.CreateCachedBitmap(BitmapFrame frame, BitmapSourceSafeMILHandle wicSource, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, BitmapPalette palette)
at System.Windows.Media.Imaging.BitmapFrameDecode.FinalizeCreation()
at System.Windows.Media.Imaging.BitmapFrameDecode..ctor(Int32 frameNumber, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, BitmapDecoder decoder)
at System.Windows.Media.Imaging.BitmapDecoder.SetupFrames(BitmapDecoder decoder, ReadOnlyCollection`1 frames)
at System.Windows.Media.Imaging.BitmapDecoder.get_Frames()
at System.Windows.Media.Imaging.BitmapFrame.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy)
at System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Windows.Baml2006.TypeConverterMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue(MarkupExtension me, IServiceProvider serviceProvider)
--- End of inner exception stack trace ---
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadDeferredContent(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings parentSettings, Uri baseUri)
at System.Windows.ResourceDictionary.CreateObject(KeyRecord key)
at System.Windows.ResourceDictionary.OnGettingValue(Object key, Object& value, Boolean& canCache)
at System.Windows.ResourceDictionary.OnGettingValuePrivate(Object key, Object& value, Boolean& canCache)
at System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean& canCache)
at System.Windows.ResourceDictionary.GetValue(Object key, Boolean& canCache)
at System.Windows.DeferredResourceReference.GetValue(BaseValueSourceInternal valueSource)
at System.Windows.DependencyObject.GetEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, RequestFlags requests)
at System.Windows.DependencyObject.GetValueEntry(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, RequestFlags requests)
at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
at System.Windows.Controls.Border.get_Background()
at System.Windows.Controls.Border.OnRender(DrawingContext dc)
at System.Windows.UIElement.Arrange(Rect finalRect)
at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
at System.Windows.UIElement.Arrange(Rect finalRect)
at System.Windows.Media.VisualBrush.DoLayout(UIElement element)
at System.Windows.Media.VisualBrush.OnLayoutUpdated(Object sender, EventArgs args)
at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.UIElement.UpdateLayout()
at System.Windows.Interop.HwndSource.SetLayoutSize()
at System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
at System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
at System.Windows.Window.SetRootVisual()
at System.Windows.Window.SetRootVisualAndUpdateSTC()
at System.Windows.Window.SetupInitialState(Double requestedTop, Double requestedLeft, Double requestedWidth, Double requestedHeight)
at System.Windows.Window.CreateSourceWindow(Boolean duringShow)
at System.Windows.Window.CreateSourceWindowDuringShow()
at System.Windows.Window.SafeCreateWindowDuringShow()
at System.Windows.Window.ShowHelper(Object booleanBox)
at System.Windows.Window.Show()
at QuickSearch.SearchPlugin.ToggleSearch() in D:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:line 453
at QuickSearch.SearchPlugin.GlobalHotkeyCallback(IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) in D:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:line 184
at System.Windows.Interop.HwndSource.PublicHooksFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at Playnite.DesktopApp.ProgramEntry.Main(String[] args) in E:\Devel\Playnite\source\Playnite.DesktopApp\ProgramEntry.cs:line 61
Having used your plugin before Playnite 9 without any issues, I installed it (and removed the old one) but have been simply unable to search anything. Everything is fully updated, Playnite 9.4 and QuickSearch 2.11.1.
The search is blank, it barely actually seems to be "loading" the searches when typing it out.
There is nothing in the extensions.log during these searches, nor anything that is related to QuickSearch.
I have tried to change all the settings, from on and off to one end of the slider to the other. Nothing had any sort of effect. I have also tried a few different themes with nothing to show for it.
Best way I could show it was with a short video: https://i.imgur.com/eBFU3Sb.mp4
I have been with Playnite since the very start and after this update, I am afraid I might have to start from scratch, due to some strange issues like this. I'd really rather not, if it can be avoided. :)
Let me know if I can give you other information.
In my usage, I have the main screen show only installed games, but find myself needing to check whether I have a particular game in the library quite often and use your excellent extension for that purpose. At the moment, if I want to navigate to a found game to check/add notes or whatever, I first have to manually switch to "show" to avoid starting to install it. I've already been burned by the muscle memory of immediately hitting enter after seeing a viable first result a few times.
Its in playnite 8 with version 2.8.2
v2.3.1
When trying to open the search window
Nothing in extensions log.
Playnite log:
24-09 06:41:46.448|ERROR|PlayniteApplication:Unhandled exception occured.
System.NullReferenceException: Object reference not set to an instance of an object.
en QuickSearch.SearchPlugin.<>c.<ToggleSearch>b__39_0(GenericPlugin pl) en D:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:línea 390
en System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
en QuickSearch.SearchPlugin.ToggleSearch() en D:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:línea 392
en QuickSearch.SearchPlugin.ActionCommand.Execute(Object parameter) en D:\Programmierung\playnite-dev\QuickSearch\source\SearchPlugin.cs:línea 131
en System.Windows.Input.CommandManager.TranslateInput(IInputElement targetElement, InputEventArgs inputEventArgs)
en System.Windows.UIElement.OnKeyDownThunk(Object sender, KeyEventArgs e)
en System.Windows.Input.KeyEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
en System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
en System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
en System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
en System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
en System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
en System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
en System.Windows.Input.InputManager.ProcessStagingArea()
en System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
en System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
en System.Windows.Interop.HwndKeyboardInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawKeyboardActions actions, Int32 scanCode, Boolean isExtendedKey, Boolean isSystemKey, Int32 virtualKey)
en System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction(MSG& msg, Boolean& handled)
en System.Windows.Interop.HwndSource.CriticalTranslateAccelerator(MSG& msg, ModifierKeys modifiers)
en System.Windows.Interop.HwndSource.OnPreprocessMessage(Object param)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
en System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
en System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
en System.Windows.Interop.HwndSource.OnPreprocessMessageThunk(MSG& msg, Boolean& handled)
en System.Windows.Interop.HwndSource.WeakEventPreprocessMessage.OnPreprocessMessage(MSG& msg, Boolean& handled)
en System.Windows.Interop.ComponentDispatcherThread.RaiseThreadMessage(MSG& msg)
en System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
en System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
en System.Windows.Application.RunDispatcher(Object ignore)
en System.Windows.Application.RunInternal(Window window)
en System.Windows.Application.Run(Window window)
en Playnite.DesktopApp.ProgramEntry.Main(String[] args) en E:\Devel\Playnite\source\Playnite.DesktopApp\ProgramEntry.cs:línea 61
24-09 06:41:46.480|DEBUG|WindowFactory:Show dialog window Playnite.Windows.ExtensionCrashHandlerWindowFactory
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.