rampaa / jl Goto Github PK
View Code? Open in Web Editor NEWJL is a program for looking up Japanese words and expressions.
License: Apache License 2.0
JL is a program for looking up Japanese words and expressions.
License: Apache License 2.0
Currently, we sort results mainly by their frequency. This causes some words to have the wrong readings displayed in the first spot.
E.g.: 姉's first result should be あね, not ねえ
Auto hide popup if cursor is not over it - not working as intended?
I tried this setting toggled on and off and it doesn't change anything.
So, I was thinking that it should work kind of like Yomichan where you mouse over the word, then you can mouse over the definition so that you can copy it, use it for other things.
In my JL, I'm unable to mouse over the definitions themselves while looking up words, because once I move my mouse into the popup window, it immediately closes.
If I change the Lookup Mode to left-click/touch, or to Text Select mode, then I'm able to mouse over the popup window and scroll through, select text, etc.
edit
Never mind, I just read about Mining Mode. Got it.
Whenever I try to add/remove a frequency it causes the program to crash. Not sure why this is happening as I don't run into this issue with the dictionaries.
Log:
log20221123.txt
Frequency I'm trying to add:
[Freq] Novels.zip
(I'm testing JL as part of my continuous/ongoing effort to privately catalog Japanese learning tools)
Due to organizational error I have JL located in a directory whose global path has spaces in it: F:\from c\wareya\Desktop\READING\JL
When the application attempts to run the autoupdater, the following error window is raised:
Running update-helper.cmd
directly seems to work as it should, so this is most likely an issue with how the cmd script is being invoked.
Reading should be added automatically when adding from a dictionary entry to a custom dictionary.
So yeah, after 1.6, sometimes JL won't get line from clipboard. Happens maybe 1-2 times per 10 lines, works fine if i manually copy line one more time.
Fixed as soon as i downgraded back to 1.5
a dedicated button to reset the above mentioned stats would be nice.
Would it be possible to have parsing like jparser or mecab as a extra function?
Thanks
I build it by myself and run it without anything wrong. (about 800mb memory usage in taskmanager)
Do you willing publish arm version also? Thanks in advance!
would like to be able to swap arrow-key backlog with mousewheel backlog hotkeys.
The only real hiccup I have with JL atm is around not being able to use hotkeys when it doesn't have focus. Using it with magpie requires that it not be focusable, but not being able to use hotkeys means I can't pause listening to websockets for example which ruins the experience when reading VNs as there can be a flow of previously seen text over the stream that pollutes the output in JL when I am just trying to read the log. This seems relatively easy to work around if JL starts a webserver to listen to hotkey input (a REST endpoint that takes in a simple JSON blob for example) that could then be invoked by autohotkey or some other software that don't require focus.
Something like the above might be nice to enable using hotkeys in general, but my primary want is to be able to pause getting text so having a button that can be clicked to invoke pausing / resuming reading text from sources without taking the focus away (I assume this is possible given that mouse click based lookup and mining is possible) would also be very helpful on its own.
would be nice if the popup would hide after x amount of ms if the mouse isn´t hovered over it.
Umm. can someone help me? I don't know where to ask anymore..
I tried to run compability mode but nonetheless it did not work..
Is it my windows the problem?
A clean addition could be that if JL had a blinking animation for the currently looked up word. A soft blinking animation could be an unintrusive way of showing what is currently selected. Similar to how Yomichan look-ups highlight the text, JL could implement something similar to show what part of the text is currently being looked up.
An example of what I'm talking about -
CSS blinking animation example I found from Google:
https://codepen.io/bernheisel/pen/meOQxB
animation duration set to 2s.
Getting audio can be a bit spotty on a bad connection, or if you have no internet.
Someone created a local audio server for Yomichan to work around this. You can put the localhost URL and it gets the audio from your computer.
Would it be possible to use this server with JL?
EDIT : I've found the answer to my own question : it's indeed the popup in mining mode. As I'm not mining (as in creating cards for Anki if I got it well), it didn't occur to me to enter mining mode and so I totally missed this function. Sorry for the bother.
First : thanks for you work, I discovered JL a few days ago and I'm using it since then.
I was reading another issue (#31) where I saw the screenshot posted by the user.
I see in the upper part of the popup what seem to be a list of the used dictionaries : I can only suppose that that shows the sources of the definitions currently displayed and allows one to filter as well (clicking on one dict would show only the entries belonging to that dict etc.).
I don't understand why, but I've no such functionality and I would love to. My only guess is that it could be linked to Anki integration, as to my knowledge it's the only function I'm not using. Can someone enlighten me ?
It seems like JL doesn't play some common audio file types so it bugs out with some of the sources from the local audio server. This has become a bigger problem now that the recommended data source has opus audio. You simply get a "Error playing Audio" error if you configure the local audio server as a source with the recommended data source now. FWIW, JL can play the alternative / older mp3 sources but some of the older sources were using .aac
(in particular, the nhk and shinmeikai8 sources).
The workaround for now is to use the new mp3 sources. But it would be nice if JL could support playing other audio types. A canonical list of the types used by the local audio server are available here: https://github.com/themoeway/local-audio-yomichan/blob/dadd63feb35e89b9030fd18c036d59c45020436b/plugin/server.py#L28
(Logs suggest JL only supports mp3 audio fwiw.
System.IO.InvalidDataException: Invalid MP3 file - no MP3 Frames Detected
at NAudio.Wave.Mp3FileReaderBase..ctor(Stream inputStream, FrameDecompressorBuilder frameDecompressorBuilder, Boolean ownInputStream)
at JL.Windows.Utilities.WindowsUtils.<>c__DisplayClass56_0.<PlayAudio>b__0() in D:\a\JL\JL\JL.Windows\Utilities\WindowsUtils.cs:line 362
)
would be be nice if we could specify the browser in a config file or something instead of using the default browser.
language learning browser
Many basic mining setups involve handlebars in the generated Anki cards. Yomi uses Handlebars internally to generate Anki cards, but allows modifying the template used, creating an API where users can modify the template to generate cards.
This is used in many setups, for example:
The API for yomichan can be found at https://github.com/themoeway/yomitan/blob/d1c694535113206ba059e83958c1e8c9addd10b2/ext/js/templates/sandbox/anki-template-renderer.js.
Is it possible to add templating support?
So i have 1440p display with 110% custom scaling turned on (same thing happens with 125% scaling btw).
Not sure how to describe it, but pop-up window ignores offset settings and sometimes even appears outside of screen and flickers.
Everything fine if i set scaling back to 100%.
Video
https://user-images.githubusercontent.com/99648105/156923944-74fd31da-fd17-4c04-b31c-a013d3a1707d.mp4
The dictionnary popup seems to only appear on the primary monitor, even if JL is set on the second monitor. This is annoying when playing a vn on multi monitors, as you have to keep switching between the two.
Many textractor based tools have moved from clipboard polling to using a websocket. This method is more reliable and doesn't change your current text when you copy something else.
It may also be faster though I have not tested.
Server examples:
Client examples:
Would it be possible to consume text from a websocket server?
steps to replicate:
-just use JL normally
-after some amount of time pop-up window grabs attention even with "focus on lookup" set to "off"
-bug disappears whenever i switch to another window / open settings, just like in video
Bug also occured even before 1.5 update.
Most hooks aren't perfect, and sometimes they can send more text than needed.
In my case, my hooks sends the entire backlog when i trigger it. This is annoying when doing it by accident as it inflates character count.
It would be nice to delete the last sent line (and deleting it from the statistics as well) to work around faulty hooks like this.
Idk if being able to delete every logged line is necessary; just the current one would be a big help.
https://github.com/Blinue/Magpie makes possible to use neural upscalers like anime4k for eroge, but i can't put JL window on top of fullscreen created by magpie.
Is there any chance to use them together? Maybe i should ask this in magpie github issues instead?
JL should keep focus even after clicking into a VN to advance the dialog.
JL doesn't update priority for existing if other sources are removed. Adding newer sources afterward can then end up saving the new source with the same priority as the existing ones. This ends up showing the new source as lower priority than the older source with the same priority on the UI and JL immediately crashes if you try to reorder such sources. Editing the config JSON directly to set the priority to 1,2,3 as desired solves the issue but I figured I might as well report this.
Simplest reproduction steps:
http://127.0.0.1:5050/?term={Term}&reading={Reading}&sources=jpod,nhk16,shinmeikai8,forvo
as a URL (JSON) sourcehttp://127.0.0.1:8770/?expression={Term}&reading={Reading}
as a URL (JSON) sourceMy OS is win10-x64 on an intel chip fwiw. I didn't test on other systems.
Using Handlebars.Net or something similar.
would be awesome if you could add support for JPDB, if possible.
Ever since the last update, there are certain times when the app simply freezes right after launching it, regardless of whether you are just using the overlay window or have opened any of the settings menus. It works for like 5-8 seconds after launch and then completely stops responding. The only way out is to kill the app from task manager, but once this issue happens, subsequent relaunches of the app continue having this same issue, and the only way seems to be restarting windows to make it work again. Another info that I can give is that this happens regardless of whether textractor is running or not.
I'm currently making the monolingual transition with JL. and every time I try to look up multiple words inside the dictionary popup, it keeps showing the previously looked up word instead of the new one.
My current workaround for this is adding a delay to auto-hide popups (1000ms), then waiting it out until looking up the next word. I have a keybind set to close the popup windows, but I mainly use Magpie when reading VNs, and it prevents me from using keybinds in JL. A suggestion I could make for this is adding a close popup button to the popup windows.
It would be ideal if the definition pop-up contained Furigana above the word being looked-up, as it helps associating a given kanji with its reading, in the same manner that Yomichan handles definitions.
Thank you for your amazing work, this software is a game changer in VN reading.
Hello.
I've added a few Yomichan/EPWING dicts : here is the list.
This is probably not exhaustive as I've not tested every combinations, but in this setup I can reproduce the crash (systematically) by trying to move up Daijirin or Daijisen. I can move them as I want as long as I won't try to move them to the 5th position and up from the bottom (position occupied by JMDICT here). Of course, I've tried to remove them and add them up but the crashes occurred again.
As every dict (including Daijirin and Daijisen) are functional nevertheless, I'm using it in this state.
VPN will prevent updates, dictionary downloads and audio playback even if i split-tunnel JL
would be nice if JL detects dialog skipping in some form and takes that into consideration for the provided stats.
Hello,
I just downloaded the latest release for the first time and it crashes when I'm trying to open the preferences (both x86 and x64 versions).
Here's the full stack trace
2022-10-03 16:06:01.968 +02:00 [ERR] System.ArgumentException: 'NaN' is not a valid value for property 'Value'.
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at HandyControl.Controls.NumericUpDown.set_Value(Double value)
at JL.Windows.ConfigManager.LoadPreferences(PreferencesWindow preferenceWindow) in D:\a\JL\JL\JL.Windows\ConfigManager.cs:line 741
at JL.Windows.Utilities.WindowsUtils.ShowPreferencesWindow() in D:\a\JL\JL\JL.Windows\Utilities\WindowsUtils.cs:line 206
at JL.Windows.GUI.MainWindow.ShowPreferences(Object sender, RoutedEventArgs e) in D:\a\JL\JL\JL.Windows\GUI\MainWindow.xaml.cs:line 572
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.MenuItem.InvokeClickAfterRender(Object arg)
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.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(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.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run()
at JL.Windows.App.Main()```
I am not the commentor but as I I have skill to prove or disprove it, is there something for you to say?
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.