nostrenz / hatate-iqdb-tagger Goto Github PK
View Code? Open in Web Editor NEWSearch and tag images using IQDB or SauceNAO to be imported into Hydrus.
Search and tag images using IQDB or SauceNAO to be imported into Hydrus.
I am using Windows 11 21H2 and Release 12 of Hatate.
It would seem the method used to access the clipboard fails. I am unable to test if this affects other versions of Windows.
It's also possible the method employed requires administrative permissions, in which is it best to use a different method that doesn't need those perms?
System.Windows.Threading.DispatcherUnhandledExceptionEventArgs
OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))
mscorlib
System.Collections.ListDictionaryInternal
System.Runtime.InteropServices.COMException (0x800401D0): OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Windows.Clipboard.Flush()
at System.Windows.Clipboard.CriticalSetDataObject(Object data, Boolean copy)
at System.Windows.Clipboard.SetDataInternal(String format, Object data)
at System.Windows.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Clipboard.SetText(String text)
at Hatate.App.CopySelectedTagsToClipboard(ListBox from)
at Hatate.MainWindow.<ContextMenu_MenuItem_Click>d__110.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
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.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Windows.Clipboard.Flush()
at System.Windows.Clipboard.CriticalSetDataObject(Object data, Boolean copy)
at System.Windows.Clipboard.SetDataInternal(String format, Object data)
at System.Windows.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Clipboard.SetText(String text)
at Hatate.App.CopySelectedTagsToClipboard(ListBox from)
at Hatate.MainWindow.<ContextMenu_MenuItem_Click>d__110.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
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)
Does not seem to respect that. I have around 3k in my inbox, and it grabs all my images (over 10k).
As an aside, is there a way to simply grab untagged images? Similar to the inbox filter, that would be very helpful.
Hatate repeatedly crashes when attempting to open the 'Query Hydrus' menu.
Immediately when I click on the menu point, hatate crashes into the ground.
Have tried installing older hatate versions.
Have tried re-installing hatate.
Have tried restarting both hatate and hydrus.
Have not yet tried generating a new/different api key for hatate.
Yes, I have made sure the api key is correct.
It works when sending hatate found/and tagged files to hydrus.
It is only this one menu item that does not work, and this would be really important for my uses, as I have a lot of files I want to tag and having to go trough and add every single one of the 256 folders hydrus makes is not only an inefficient use of time, but also a waste of resources, as I'm importing a lot of files which are already tagged
The following log has been translated by deepL, as for some unbeknownst reason, the logs were printed in my computers native language, which is not english.
The object cannot be converted from "Newtonsoft.Json.Linq.JObject" to "Newtonsoft.Json.Linq.JArray".
Hatate
System.Collections.ListDictionaryInternal
System.InvalidCastException: Object cannot be converted from type "Newtonsoft.Json.Linq.JObject" to type "Newtonsoft.Json.Linq.JArray".
in the following location: Hatate.HydrusQuery.d__7.MoveNext()
--- End of stack trace from the previous occurrence of the exception ---
in the following location: System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
in the following location: System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
in the following location: System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
in the following location: Hatate.HydrusQuery.d__7.MoveNext()
--- End of stack trace from the previous occurrence of the exception ---
at the next location: System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
in the following location: System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
in the following location: System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
Even if I untick the box under settings > Hatate
, labeled Remove file from list after writing tags or sending to Hydrus
, the entries that I search are always removed after processing.
I'm not sure if the entries that don't have a match are supposed to be removed as well, but that's the current behavior that I'm experiencing.
So I have ALOT of pics i need to have tagged and etc. I see i can automatically send files to hydrus once searched but is it intelligent?
Will it send just the tags when the image in hydrus is bigger than the one Hatate found, or if the image Hatate found is bigger will it auto download it instead of sending just the tags?
Or is it dumb and only say downloads or only sends just tags and doesn't do what fits best in the situation?
I was having an issue where I would use Hatate, and then send the URL to Hydrus using the API, but the images would not be imported. I looked at the import log and found that many of them are being ignored because "Looks like HTML -- maybe the client needs to be taught how to parse this?" and the URL is along the lines of "https://danbooru.donmai.us/post/show/xxxxxx".
I believe the "show" part of the URL is causing the issue. I am unsure if this is a setting in Hydrus I need to fix or if it is a bug of Hatate. It would seem to me that removing the "/show" substring would resolve this issue when sending the URL to Hydrus.
See below for example of my log, specifically the "ignored" entries.
I've set the wait time in the program options to 1 second, however there's still a five-second wait between each file. SauceNao, if the user has Premium, can accept up to 25 files over a 30 second period, so it would be greatly appreciated to not have a mandatory minimum of 5 seconds of waiting between files.
This isn't technically a bug, but sometimes SauceNAO will return a URL to a post that has been deleted, or replaced with a newer file. Is it possible for Hatate to test URLs for this before sending the URL to Hydrus?
Can you add Hydrus API support?
Would enable more automation on the client side without the need of folders and file creation at all.
Should be able to search up any query inside Hydrus and pull the files for IQDB lookup and such then send the resulting URL to the client for automated URL download.
EDIT: adding API link: http://hydrusnetwork.github.io/hydrus/help/client_api.html
After each lookup, successful or not, Hatate appears to steal window and input focus from whatever application I'm working with. This happens pretty frequently when the delay between each search is set to something small like 5 seconds. This started after upgrading to Release 10.
My workflow for Hatate is as follows:
In hindsight, I probably don't need to send tags if Hydrus is going to handle it anyway, but I wouldn't imagine that would cause an issue.
If it's useful, my full config (w/ keys removed) is as follows:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Hatate.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<Hatate.Properties.Settings>
<setting name="SearchedParenthesisValue" serializeAs="String">
<value>1</value>
</setting>
<setting name="HydrusApiPort" serializeAs="String">
<value />
</setting>
<setting name="HydrusApiHost" serializeAs="String">
<value>REMOVED</value>
</setting>
<setting name="DeleteImported" serializeAs="String">
<value>False</value>
</setting>
<setting name="HydrusApiAccessKey" serializeAs="String">
<value>REMOVED</value>
</setting>
<setting name="SendUrlWithTags" serializeAs="String">
<value>True</value>
</setting>
<setting name="AddImagesToHydrusPage" serializeAs="String">
<value>True</value>
</setting>
<setting name="HydrusPageName" serializeAs="String">
<value>hatate</value>
</setting>
<setting name="AutoSend" serializeAs="String">
<value>True</value>
</setting>
<setting name="AssociateUrl" serializeAs="String">
<value>True</value>
</setting>
<setting name="HydrusTagServiceKey" serializeAs="String">
<value>REMOVED</value>
</setting>
<setting name="HydrusTagService" serializeAs="String">
<value>lookup tags</value>
</setting>
<setting name="SauceNaoApiKey" serializeAs="String">
<value>REMOVED</value>
</setting>
<setting name="HydrusQuery_ArchiveOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="HydrusQuery_InboxOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="HydrusQuery_WarnBeforeImport" serializeAs="String">
<value>False</value>
</setting>
<setting name="HydrusQuery_Limit" serializeAs="String">
<value>4000</value>
</setting>
<setting name="MatchType" serializeAs="String">
<value>Additional</value>
</setting>
<setting name="NotfoundTag" serializeAs="String">
<value>hatate:not found</value>
</setting>
<setting name="Similarity" serializeAs="String">
<value>80</value>
</setting>
<setting name="LogMatchedUrls" serializeAs="String">
<value>False</value>
</setting>
<setting name="ParseTags" serializeAs="String">
<value>True</value>
</setting>
<setting name="AddNotfoundTag" serializeAs="String">
<value>True</value>
</setting>
<setting name="SimilarityThreshold" serializeAs="String">
<value>15</value>
</setting>
<setting name="StartupReleaseCheck" serializeAs="String">
<value>True</value>
</setting>
<setting name="RemoveResultAfter" serializeAs="String">
<value>True</value>
</setting>
<setting name="Delay" serializeAs="String">
<value>2</value>
</setting>
<setting name="AddRating" serializeAs="String">
<value>True</value>
</setting>
<setting name="CheckMatchType" serializeAs="String">
<value>True</value>
</setting>
<setting name="ResizeImage" serializeAs="String">
<value>False</value>
</setting>
<setting name="Sources" serializeAs="String">
<value>[{"Value":0,"Ordering":1,"Enabled":false,"GetTags":true},{"Value":3,"Ordering":2,"Enabled":true,"GetTags":true},{"Value":1,"Ordering":3,"Enabled":false,"GetTags":true},{"Value":2,"Ordering":4,"Enabled":false,"GetTags":true},{"Value":7,"Ordering":5,"Enabled":false,"GetTags":true},{"Value":5,"Ordering":6,"Enabled":false,"GetTags":true},{"Value":10,"Ordering":7,"Enabled":true,"GetTags":true},{"Value":8,"Ordering":8,"Enabled":false,"GetTags":true},{"Value":6,"Ordering":9,"Enabled":false,"GetTags":true},{"Value":4,"Ordering":10,"Enabled":true,"GetTags":true},{"Value":11,"Ordering":11,"Enabled":false,"GetTags":true},{"Value":13,"Ordering":12,"Enabled":true,"GetTags":true},{"Value":15,"Ordering":13,"Enabled":false,"GetTags":true},{"Value":12,"Ordering":14,"Enabled":true,"GetTags":true},{"Value":14,"Ordering":15,"Enabled":false,"GetTags":true},{"Value":16,"Ordering":16,"Enabled":false,"GetTags":true},{"Value":9,"Ordering":17,"Enabled":false,"GetTags":true}]</value>
</setting>
<setting name="ThumbWidth" serializeAs="String">
<value>300</value>
</setting>
<setting name="Randomize" serializeAs="String">
<value>False</value>
</setting>
<setting name="TaggedTag" serializeAs="String">
<value>hatate:tagged</value>
</setting>
<setting name="RetryMethod" serializeAs="String">
<value>2</value>
</setting>
<setting name="AddTaggedTag" serializeAs="String">
<value>True</value>
</setting>
<setting name="SearchEngine" serializeAs="String">
<value>1</value>
</setting>
<setting name="FoundTag" serializeAs="String">
<value>hatate:found</value>
</setting>
<setting name="AskTags" serializeAs="String">
<value>False</value>
</setting>
<setting name="TagsCount" serializeAs="String">
<value>0</value>
</setting>
<setting name="AddFoundTag" serializeAs="String">
<value>True</value>
</setting>
</Hatate.Properties.Settings>
</userSettings>
</configuration>
Is this intentional behavior or did I miss a setting somewhere?
It would be nice to be able to set up a "query hydrus with these tags and this limit at this time every day" regular job
Some of my images are from Zerochan and the software manages to grab the series name but not the character names for some reason...
could Saucenao be added as a source for more options?
https://saucenao.com/
Would make sense to add more sources here in the game GUI for the ease of use.
I've tried importing images directly from Hydrus via the API, and it seems that Hatate only loads images with a .jpg extension, despite detecting the actual, correct number of images in the warning popup (when triggered).
Could we get an OCD URL Send mode that sends all urls within matching % to Hydrus instead of just the best results?
Want to have Hydrus parse all sites and grab all tags at the same time!
Recently I encountered a consistent crash when selecting a danbooru link from the match drop down that points to a banned artist.
Here's the log:
System.Windows.Threading.DispatcherUnhandledExceptionEventArgs
Length cannot be less than zero.
Parameter name: length
mscorlib
System.Collections.ListDictionaryInternal
System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at Hatate.Parser.Danbooru.Parse(Document doc)
at Hatate.Parser.Page.FromUrl(String url)
at Hatate.MainWindow.ParseBooruPage(Result result)
at Hatate.MainWindow.ComboBox_Matches_SelectionChanged(Object sender, SelectionChangedEventArgs e)
at System.Windows.Controls.SelectionChangedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.ComboBox.OnSelectionChanged(SelectionChangedEventArgs e)
at System.Windows.Controls.Primitives.Selector.InvokeSelectionChanged(List`1 unselectedInfos, List`1 selectedInfos)
at System.Windows.Controls.Primitives.Selector.SelectionChanger.End()
at System.Windows.Controls.Primitives.Selector.SelectionChanger.SelectJustThisItem(ItemInfo info, Boolean assumeInItemsCollection)
at System.Windows.Controls.ComboBox.NotifyComboBoxItemMouseUp(ComboBoxItem comboBoxItem)
at System.Windows.Controls.ComboBoxItem.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(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)
and a link to an image that causes the crash:
https://gelbooru.com/index.php?id=3798194&page=post&s=view
It's very annoying to have to keep focusing on the downloader page while hatate is running. It makes browsing around without making a mess impossible.
Would be great to have something like hydrus companion where you select a page with a specified to import URLs through.
Even when an image is gone from pixiv, saucenao often has useful information in its results.
Here's a result from saucenao (this example image does exist on pixiv but the result info on saucenao is the same):
<div class="resultmatchinfo">
<div class="resultsimilarityinfo">94.19%
</div>
<div class="resultmiscinfo">
</div>
</div>
<div class="resultcontent">
<div class="resulttitle">
<strong>��</strong> <-- title tag
<br>
</div>
<div class="resultcontentcolumn">
<strong>Pixiv ID: </strong>
<a href="https://www.pixiv.net/member_illust.php?mode=medium&illust_id=95277212" <-- illust_id is the "pixiv work" tag in Hydrus
class="linkify">95277212</a>
<span style="padding-left:10px;">
<a href="https://saucenao.com/info.php?lookup_type=0&db=5&id=95277212">
<img src="/images/static/saucenao_info.png" width="10px" height="10px"></a>
</span>
<br>
<strong>Member:</strong>
<a href="https://www.pixiv.net/member.php?id=76820897" class="linkify">��says hi</a> <-- id is the "pixiv id" tag in Hydrus, the user's immutable pixiv id, and the inner text is the creator tag
<span style="padding-left:10px;">
<a href="https://saucenao.com/info.php?lookup_type=1&db=5&id=76820897">
<img src="/images/static/saucenao_info.png" width="10px" height="10px"></a>
</span>
<br>
<br>
</div>
</div>
So even if the image is deleted we could still get these tags for Hydrus:
title:��
creator:��says hi
pixiv id:76820897
pixiv work:95277212
The immutable pixiv id is useful because pixiv users have had a tendency to change names for events such as cons.
As far as I can tell, Hatate doesn't do anything with these results to make tags out of them if the image was deleted from pixiv. Can we get these tags?
No matter how many times I try or wait, Hatate simply does not retrieve tags from some Danbooru results. For some others, I have to switch to a result from a 'working' site like Yandere then switch back to the Danbooru result. Even this is not guaranteed.
What could be the cause? Is there any way to force tag retrieval?
I tested the SauceNao with 280 images and Hatate says that the images were not found, however when I search for them manually, Ican see them on Saucenao and access the tags. I will test again later, will close this issue if I can fix this myself. If not, I'll add a comment and elaborate
Please allow us to select a specific db, even numerically via the API, when searching saucenao, this is really helpful when the default top results are all very light on tags.
It's probably known, but even when sauceNao find stuff on e621, hatate doesn't see those tags. I downloaded image from e621 and then put it into hatate and it still has 0 tags, while web version of sauceNao have link to the e621.
The UI seems to lock up a lot, moreso than any other program I can remember using. It does this when importing, it does this when searching for results. I'm sure it would take a bunch of work, but it would be very helpful if the UI continued to be responsive while the code is chugging away on what it needs to do.
edit: it's even hard to get the window back in focus when it is busy. It's not as though it's resource heavy. I'm easily swapping between many other windows while it works. But I can't alt tab to it while it's chugging away, or click to it or even move the window by dragging.
Results always show up red on iqdb, fine on SauceNao.
An Alternative for the API mode would be an URL export mode which just lists all the matched urls by its criteria in a single text file or text files split on site.
This makes sense for easy imports if you dont want to add the API support for automation.
Would remove the need to manually import the files with the sidecar files but rather enable users to dump the files un-tagged and download the tags direct from the site its the latest parsers.
It happens when searching 3000+ picture. How can I deal with it
Bug details list as follow.
System.Windows.Threading.DispatcherUnhandledExceptionEventArgs 未将对象引用设置到对象的实例。 Hatate System.Collections.ListDictionaryInternal System.NullReferenceException: 未将对象引用设置到对象的实例。 在 Hatate.Parser.Pixiv.FromUrl(String url) 在 Hatate.MainWindow.ParseBooruPage(Result result) 在 Hatate.MainWindow.CheckMatches(Result result) 在 Hatate.MainWindow.d__23.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__20.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__20.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__19.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) 在 Hatate.Parser.Pixiv.FromUrl(String url) 在 Hatate.MainWindow.ParseBooruPage(Result result) 在 Hatate.MainWindow.CheckMatches(Result result) 在 Hatate.MainWindow.d__23.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__20.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__20.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Hatate.MainWindow.d__19.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
Would be nice if users could set the size of the thumbnails if it has any say on the results.
Find many fails to match when the full size is working.
i've added to search about 4k files, and about 800 of them were not found. i could successfully copy source links for all completed results, but there is no way i can find all uncompleted easily and fast.
so, it would be nice if i could filter/sort results in app, remove all completed results from search screen, select all compleded/failed results, and, mb, rename files with failed search, so i could find them via file manager.
So this is a weird setup I admit but it's giving me weird errors. I can connect to the database when in the Hydrus API settings. It tests find and pulls all file repositories and tag services. I select one, but searching for tags in query brings up nothing. If I manually add files, it finds the tags, but I can't send it to Hydrus... I get an error 400.
Any help in troubleshooting would be great! Thank you.
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.