Giter Site home page Giter Site logo

hydrusnetwork / hydrus Goto Github PK

View Code? Open in Web Editor NEW
2.3K 2.3K 151.0 145.5 MB

A personal booru-style media tagger that can import files and tags from your hard drive and popular websites. Content can be shared with other users via user-run servers.

Home Page: http://hydrusnetwork.github.io/hydrus/

License: Other

Python 99.53% HTML 0.13% Starlark 0.02% Dockerfile 0.03% Shell 0.18% Inno Setup 0.03% Batchfile 0.09%

hydrus's People

Contributors

aidanharris avatar appleappleapplenanner avatar asday avatar bbappserver avatar cetaceannation avatar chemrat avatar codelizard42 avatar corposim avatar floogulinc avatar hydrusnetwork avatar kruall avatar minnowo avatar staff0rd avatar suika avatar tasadar2 avatar thatfuckingbird avatar trenly avatar zweibach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hydrus's Issues

Scrolling leaves weird unpainted regions and can cause crashing

Probably related to #12 (which is now fixed for me)

When I scroll I often get stuff like this:
Screenshot
The text it's pasted comes from the terminal behind it.

I think it might also be connected to a crash that happens when scrolling:

The program 'client.pyw' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
  (Details: serial 21728 error_code 11 request_code 53 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Unfortunately I have no idea on how to debug that.

Strange issue with thumbnails vanishing

This is not at all priority, but: I've been having some issues with thumbnails that I can't figure out.

Specifically, when viewing a large search of local files, I can scroll just fine and thumbnails will load, up to a point (said point is between a few hundred and a few thousand images, depending on factors I'm not sure of, but the length of time the client has been open is possibly involved). After that point, not only will new thumbnails not load, but old thumbnails will disappear and not show up when scrolling back, and even the other UI elements of the search grid (the pale frames, the namespace overlays) will disappear. I'm left with a blank white view, which is scrollable normally, and if I click anywhere within it the image that should be there appears in the preview pane and can be acted on, but the thumbnail for it still doesn't load.

F5ing the view resolves this temporarily, and everything appears normal until I scroll too far down again.

This doesn't seem isolated to a specific subset of images; it can happen with anything as long as there are enough search results. I've tried with "memory reserved for thumbnail cache" as low as 50 and as high as 1024 mb, and it doesn't seem to make a difference. I've also completely regenerated the thumbnails (though I'm not sure that worked, since it terminated much earlier than I thought given its rate of progress). This is all on a Win7 x64 desktop machine with 8gb of RAM and an i5-4670. Thumbnail size is set to 200x200.

Again, not a priority, but it can get irksome, so I'm more than happy to troubleshoot/fuck with stuff to try to resolve it, if you have any ideas on what I might do.

Hydrus sometimes stops repainting

Screenshot

Hydrus sometimes stops repainting and leaves a grey window. The splitters soon redraw, but the rest of the window does not. I can make the thumbnail and tags appear on the left by clicking about where the files would be, but the rest stays grey. Even the menu bar doesn't redraw when you open menus, but the menus themselves appear fine.

[Edit: This seems to consistently happen after clicking "open externally" on a sound file.]

I've opened a task manager over the top of hydrus in the screenshot. You can see that hydrus isn't using much CPU while this happens (4.3%, which Windows would report as 0.7%). Also of interest is that hydrus has a zombie xdg-open child process. I will see if I can reproduce that separately.

Hydrus has shaky behaviour in many window managers

So that you know what to test on if you want to hit some bugs on the head:

Common window managers

For OOTB linux users

  • metacity (GNOME legacy)
    • (1) The splash has the wrong vertical size, so the text isn't visible:
      screenshot
    • (2) Clicking the tag auto-complete window closes it. This also means the buttons don't work.
  • xfwm4 (XFCE)
    • 1, 2 (edit: 2 seems to affect 4.12.3 but not 4.10.1)
    • (3) The splash has a titlebar
    • (4) The auto-complete window has a visible border and starts in a strange position, and requires that you click in and out of the tag box a few times to correct it. It also never fully disappears, and the borders make this conspicuous.
    • (5) When the window is maximized, the toolbar in the builtin image viewer displays at the wrong size at the very top of the screen.
  • openbox (LXDE and others)
    • 1, 2

kwin, mutter and unity are harder to test quickly and in isolation so I have not tested them

For /tech/

  • i3
    • 4
    • (6) The toolbar in the builtin image viewer shows correctly first time, in the middle of the screen second time, and doesn't show after that.
    • (7) When focus-follows-mouse is on, hovering over the auto-complete window closes it too
  • dwm
    • 2, 4, 7
    • (8) The toolbar in the builtin image viewer is always too small
  • spectrwm
    • (9) The splash is fullscreen
    • (10) The tag dropdown does not ever move or resize (starting as a 1x1 window), and the tag search box cannot be typed into. This makes Hydrus unusable.
  • bspwm
    • 8 (props to bspwm for uncovering the fewest bugs)
  • fluxbox
    • 1, 4 (somewhat)
    • (11) The toolbar in the image viewer still appears even if the window is shaded (rolled up)

Uncommon window managers

  • twm
    • (12) The splash screen requires placement
    • 2, to a lesser extent 4, 7, and 8
  • mwm (openmotif window manager)
    • 2, 4
  • matchbox-window-manager
    • 9, 10
  • xmonad
    • 4, 7, 8
  • evilwm
    • (13) tag autocomplete window is hidden behind main window
    • (14) the toolbar in the image viewer appears in a different place every time
  • blackbox
    • 4 (somewhat), 7, 11
  • fvwm
    • 1 (on exit only), 4, 7 (interacting with each other in the most horrible way)
  • fvwm-crystal
    • 1 (on exit only), 3, 4, 7 (the interaction here between 4 and 7 is even worse, you can not click the tag box with the mouse without triggering a nasty bug!)
    • (15) the toolbar in the image viewer has a title bar
  • notion
    • 10
  • ratpoison
    • 6
    • (16) autocomplete window is not visible; "ctrl+t, n" must be pressed once before the tag box becomes usable.

At least in my manual tests, XFCE comes out "on top" in an obvious way: it uncovers a lot of bugs and is a popular window manager, coming bundled with xubuntu.

Of course, I'm rooting for the bugs affecting i3 to be fixed... ;)

Search for numerical predicate causes AttributeError

Hydrus Version: 158
Platform: Windows 7 x64

Steps to Reproduce:

  1. Ensure that there is at least one local numerical predicate in the database.
  2. Open a fresh local search tab.
  3. Click in the search box to open the tag search dropdown.
  4. Double-click on system:rating in the tag search dropdown to open the "enter predicate" window.
  5. Select any one of the ">", "<", "=" or "≈" options from the middle dropdown selector.
  6. Click the "Ok" button on the right side of the "enter predicate" window.

The following error occurs:

AttributeError
'Service' object has no attribute 'GetLowerUpper'
File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIDialogs", line 1318, in EventOK
File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIPredicates", line 18, in GetPredicate
File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIPredicates", line 622, in GetInfo

This error does not occur when searching for any of the "=rated", "=unrated", or "=uncertain" predicates.
This error does not occur when searching for "like/dislike" ratings.
This error occurs whether or not there are any images that have been rated with the rating in question.
This error occurs with a freshly created, empty database, after adding a numerical rating.
This error occurs with a mature database containing thousands of rated and tagged images.

Can't delete tag repository

I had a tag repository with the public tag repo fully downloaded. Then I used the automatic repo setup, and I ended up with two copies of the public tag repo. I can't delete either one of them in the "manage services window" either.

Move "<file type>_resized" images out of STATIC_DIR

Since these images get overwritten every startup and whenever the thumbnail size option changes (I think - I haven't checked that), I think these should be in TEMP_DIR. More to the point, when packaging this software it's necessary to separate files that should be read-only and files that should be writable, and having the "static" directory contain both complicates things. See #28.

Fix truncated tag names when pressing enter too early

Sometimes when tagging an image or searching for a tag, if you press enter after typing the tag name it will search for or add a truncated version of that tag name. If you wait a second before pressing enter, it's fine.

'NoneType' object has no attribute 'GetEstimatedMemoryFootprint'

This happened when opening hydrus' internal image viewer.

AttributeError
'NoneType' object has no attribute 'GetEstimatedMemoryFootprint'
  File "/opt/hydrus/include/ClientController.py", line 179, in EventPubSub
    try: HC.pubsub.WXProcessQueueItem()
  File "/opt/hydrus/include/HydrusPubSub.py", line 102, in WXProcessQueueItem
    if do_callable: callable( *args, **kwargs )
  File "/opt/hydrus/include/ClientConstants.py", line 2256, in FinishedRendering
    self._data_cache.AddData( key, image_container )
  File "/opt/hydrus/include/ClientConstants.py", line 1307, in AddData
    self._total_estimated_memory_footprint += data.GetEstimatedMemoryFootprint()
  File "/opt/hydrus/include/HydrusImageHandling.py", line 640, in GetEstimatedMemoryFootprint
    def GetEstimatedMemoryFootprint( self ): return self._hydrus_bitmap.GetEstimatedMemoryFootprint()

Autocomplete dropdown is visible

What a silly bug title!

When Hydrus is first launched, it always looks like this:
Screenshot

The dropdown window moves to the correct place once you click away from the textbox and back into it. After that, clicking away from the textbox makes the window appear sized 5x5 (including borders) next to the textbox.

WM is i3

Hydrus tag auto-complete steals up/down/enter keypress from IME

Here's another tough one for you: When entering Japanese text, the auto-complete box steals the keypress for up, down and enter.

Usually, they would do this:

  • Up: Select previous suggestion
  • Down or Space: Select next suggestion (space works in hydrus)
  • Enter: Confirm & insert text

So normally you'd type like this:

  1. "kosimizu" → you see "こしみず" on-screen, underlined to show that it is still being edited
  2. space a few times to select the right written form → you see 輿水 on-screen, selected to show which fragment of text you're replacing
  3. enter to insert the text → 輿水 is inserted properly into the textbox

But what actually happens is this:

  1. "kosimizu" → seems normal:
    image
  2. space a few times → seems normal:
    image
    * If you over-shoot you can't use the up key to go back to the right suggestion here, hydrus will intercept that key
  3. enter → everything but the japanese is tagged, and the japanese is moved to the start of the textbox
    image
  4. enter again (in an attempt to get out of the japanese editing mode) → the dialog closes and the image seems to be tagged with "character:" temporarily

Old files not getting deleted in git

HydrusDownloading and ClientParsers both have a bunch of code in them, but later versions have removed all references to them. They have probably not been "git rm"'d. ("git add --all" might come in handy if you have a clean enough working tree)

Checking all unused files:

% for f in *.py; do grep -qe "${f%.py}" *.py ../*.py{,w} || echo "$f"; done         
ClientGUIMixins.py
ClientParsers.py
ClientVPTree.py
HydrusBooru.py
HydrusDownloading.py
HydrusSerialisableFactory.py
TestHydrusDownloading.py
TestObjects.py

This has some false negatives, being a really naive script, so here are some it missed:

  • Puncher.py
  • TestServer.py
  • magic (the whole directory)

Given this list you probably know what does or doesn't need deleting.

The dropdown window can be closed, and causes issues when it is.

The autocomplete dropdown window can be closed using the keyboard, and hydrus really does not like this. It disables typing in the tag box and causes errors when the scroll wheel is used:

TypeError
object of type '_wxPyDeadObject' has no len()
  File "/home/score/src/hydrus/include/ClientGUICommon.py", line 278, in EventMouseWheel
    if self._text_ctrl.GetValue() == '' and len( self._dropdown_list ) == 0:

I know this is more of a "Doctor, it hurts when I do this" type of issue, but it is strange nonetheless.

Feature request: use booru for tags only

Okay, so, I apologize if I missed this like the other stuff, but I've been playing around with the booru downloader and can't find it:

Is it at all possible (from a technical standpoint) to just use a booru (specifically, e621) as a tag source for downloading local tags, without downloading any additional images? IIRC, they use some kind of hashing to identify unique files, but I don't know how easy or hard it would be to match that against a local library's hashes.

What I'm looking for is basically a feature that allows me to make a local selection and say "download all tags from X booru for these images, according to my default tag options". Or to install a booru as a tag service that I can sync with like a tag repo.

[Linux] Unable to start latest release as of Tue Nov 4

When looking at updating to the latest release on Arch Linux the client and server does not start due to a PIL error:

$ ./client 
Traceback (most recent call last):
  File "<string>", line 26, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
  File "/home/hydrus/Desktop/hydrus/build/client/out00-PYZ.pyz/PIL.PngImagePlugin", line 40, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
  File "/home/hydrus/Desktop/hydrus/build/client/out00-PYZ.pyz/PIL.Image", line 53, in <module>

ImportError: cannot import name _imaging

Noting the new release soon, I will keep an eye out on that update, seeing if it breaks similarly.

Feature request: Slideshows

First, this program is fantastic, thank you. Everything I've dreamed of in an image manager for years.

At some point in the future it'd be super awesome to have the ability to run an ad-hoc random (or sequential) slideshow of everything in a given view. It'd also be very useful to be able to use the arrow keys in fullscreen to navigate through images in a view.

FR: full boolean tag implications

I'm insane and you may well have already decided this is not worth the amount of effort it would require, but: It would be really cool to expand the already-useful tag parent system to include boolean logic. For example, I have given some thought to a really complicated series of automatic tags that would allow me only to tag genders and actions and get sexuality and explicit-ness automatically. A lot of this can be done with tag parents, but some of it requires constructions such as:

(okay writing this out suggests I don't actually have it specified as well as I think I do...)

male AND NOT (female OR SFW) >> gay
male AND female AND NOT SFW >> straight

The only problem I can see with this is that you could relatively easily create cascades - Rule 1 triggers and makes changes that trigger Rule 2, which makes changes that trigger Rule 3... and so on. I'd expect that this could cause the entire client to choke and die in a horrible processing loop, if not handled as some kind of exception.

You could also expand this to allow exclusive implications like tag a NOT tag b - which would force tag a and tag b to not be allowed to exist on the same image. I have no idea why you'd want to do this, but it's possible someone could find a use for it. The downside is that this not only exacerbates the cascade problem, but probably allows for conflicts to be created as well - just set the rule above, then set rules that set tag a and tag b individually, then tag an image with the tags that will activate those two rules. You'd need an order of priority defined, probably? I suspect that exclusive tags are more trouble than they're worth.

Feature: import from favourites

I'd like to import my favourites from Gelbooru into Hydrus, but Gelbooru doesn't allow filtering them through the search interface. (People have been asking for that feature since 2011, and I doubt there's much chance of it happening anytime soon.)

Linux package for v147 is corrupt

score@kirisame ~/src/hydrus-prebuilt % tar zxf Hydrus.Network.147.-.Linux.-.Executable.tar.gz

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
2 score@kirisame ~/src/hydrus-prebuilt % cd hydrus\ network                                                                                                            :(
score@kirisame ~/src/hydrus-prebuilt/hydrus network % ./client
zsh: no such file or directory: ./client

The package for v146 is okay.

FR: Symlink exports

So, imagine the following usage case: You manage all of your media in Hydrus, but you still need to work on specific queries with other programs in a read-only fashion, without the exported media leaving your computer.

Hydrus supports this well already - there's robust export functionality and there's even a scheduler to automatically update your export folders. But, if you are exporting large queries, that's going to use a lot of disk space, especially if there's significant overlap between different query folders.

Being able to set the export tool to export symlinks - which point to the source media files within Hydrus' DB folder structure - instead of actual image files would add further flexibility for this sort of thing. Again, I have no idea how technically feasible this is, and it's possible that there are really good reasons not to do this and I am just a demented person who likes and uses symlinks far, far too much for his own good, but, something I thought of.

FR: merge records

Small thing: I would love to be able to tell Hydrus to merge duplicate records, having found them by using the "find similar files" option. This way if the inferior version of a file is the one that's got tons of tags, I don't have to copy them over - I just merge them and the system keeps one copy of the file, with all the metadata from both.

You'd probably want to have a "merge records" submenu that allows the user to pick "highest resolution kept / highest filesize kept / lowest resolution kept / lowest filesize kept / pick kept file manually", to encompass the majority of use cases.

I sort of feel as though the merged record should keep both sets of hashes associated with/aliased to it, for future duplicate and tag matching purposes, but I don't know a) if that's technically possible and b) if it would cause any problems elsewhere. If this isn't possible, maybe "most tags kept" could be an option when merging.

pyconfig.h

What is pyconfig.h for? It's under "include" but is not included by the software itself. It looks like part of the build process for a python interpreter.

Build process is not open source

This is probably the last issue in my spree 😄

Packages are provided at https://github.com/hydrusnetwork/hydrus/releases, but there is no indication of how to build them. There's a lot of .so files in the linux package and the "client" binary is cryptic in origin - I don't see any compilable code in the tree but it must have come from somewhere. It's not clear whether it's a launcher for system python, a python interpreter itself, or anything else.

In the interests of letting us contribute community fixes to issues like #7 I think it would be great to open source the scripts (or instructions) used to package the releases.

Error middle-clicking tab strip

If you middle-click the tab strip in an area without an actual tab, it will show this error:

ValueError
in method 'BookCtrlBase_GetPage', expected argument 2 of type 'size_t'
  File "/opt/hydrus/include/ClientGUI.py", line 1964, in EventNotebookMiddleClick
    self._ClosePage( tab_index )
  File "/opt/hydrus/include/ClientGUI.py", line 388, in _ClosePage
    page = self._notebook.GetPage( selection )
  File "/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py", line 13536, in GetPage
    return _core_.BookCtrlBase_GetPage(*args, **kwargs)

Feature: Right click tagging from preview

Sometimes I scroll past the image I've clicked last and think of another tag I want to add. It would be nice to be able to right click the preview and open the tag window from there.

SIGSEGV on theme change

After changing theme in lxappearance (actually just applying the same theme):

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff35ac354 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
(gdb) bt
#0  0x00007ffff35ac354 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#1  0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#2  0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#3  0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#4  0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#5  0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#6  0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#7  0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#8  0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#9  0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#10 0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#11 0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#12 0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#13 0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#14 0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#15 0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#16 0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#17 0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#18 0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#19 0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#20 0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#21 0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#22 0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#23 0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#24 0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#25 0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#26 0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#27 0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#28 0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#29 0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#30 0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#31 0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#32 0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#33 0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#34 0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#35 0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#36 0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#37 0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#38 0x00000030fc80c60b in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#39 0x00000030fc80c9b8 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#40 0x00000030fc80ca43 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#41 0x00000030fc80caa5 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#42 0x00007ffff35ac395 in wxWindowBase::OnSysColourChanged(wxSysColourChangedEvent&) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#43 0x00000030fc66fb5e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () from /usr/lib/libwx_baseu-3.0.so.0
#44 0x00000030fc80c508 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0

the trace continues for several thousand lines in the same way

'Copy external share link' in local booru menu

I get an error
TypeError
cannot concatenate 'str' and 'NoneType' objects
File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUI", line 2964, in EventCopyExternalShareURL
while trying to 'copy external share link' in local booru menu
The solve for me now is putting a share key from ‘internal share link’ to my external ip. This way local booru works fine. But I hope there is some easier way this feature to work.

Feature: Shebangs on *.pyw

Please add this comment to the very top of those files (client.pyw and server.pyw):

#!/usr/bin/env python2

This will enable running them easily from the console (./client.pyw) or file manager (with a double click) on Linux.

Feature: Option to open in an external viewer by default

I like viewing images in feh, but as of yet there isn't a way to just double click an image tile and have it open in feh. Currently I need to right click and click the button that opens it in an external viewer, while I would like to be able to set an option to just double click and have that work.

(really minor) FR: Rotate!

It'd be convenient to be able to rotate an image (90 CW/90 CCW/180/flip horiz/flip vert) within Hydrus, causing Hydrus to overwrite the existing image with its rotated version and recalculate the hashes accordingly. This would prevent having to export badly-rotated images, rotate them externally, reimport, and retag.

(As with the merge idea, keeping the old hashes somehow associated with the edited image would be nifty for future matching purposes, but like I said there, I don't know if that's feasible.)

Feature: add a HELP_DIR variable

The help directory is manually added to the base dir everywhere it's used. If there was a HELP_DIR directory it would make packaging easier (see #28, where as part of the packaging process for Arch I have edited the paths referenced by Hydrus).

'AutoCompleteDropdownTagsWrite' object has no attribute 'Clear'

This happened while mass-tagging imports:

AttributeError
'AutoCompleteDropdownTagsWrite' object has no attribute 'Clear'
  File "/opt/hydrus/include/ClientGUICommon.py", line 2044, in EventKeyDown
    self._Activate( s, term )
  File "/opt/hydrus/include/ClientGUICommon.py", line 2491, in _Activate
    def _Activate( self, s, term ): self._callable( term )
  File "/opt/hydrus/include/ClientGUICommon.py", line 209, in BroadcastChoice
    self._BroadcastChoice( predicate )
  File "/opt/hydrus/include/ClientGUICommon.py", line 871, in _BroadcastChoice
    self._chosen_tag_callable( tag, parents )
  File "/opt/hydrus/include/ClientGUIDialogs.py", line 4529, in AddTag
    self._tag_box.Clear()

Since v160, can't search with system: tags

To bring up a system tag (usually inbox or everything), my usual process is:

  1. Bring up the tag box (affected by #49)
  2. Navigate to a system tag with the arrow keys
  3. Press enter to add the tag

Since v160, when I press enter it doesn't add the tag. The dropdown stays there but nothing happens, as if I didn't press enter in the first place.

I know it's registering something, because this appears in the console:

(client.pyw:7653): GLib-GObject-WARNING **: gsignal.c:2569: instance '0x7f5a1a954440' has no handler with id '2320'

Interestingly, that kind of message appears once for pressing enter on a tag that doesn't work, twice for a tag that works and gets inserted into the tag search box, and doesn't appear at all if a nonexistent tag name is typed.

Feature: Tag/Namespace management

When I was looking through my namespaces, I had noticed that I had a few mis-spelt namespaces (in my case, character) so I was thinking, maybe something could be done to merge a namespace?

This is namely for some cleanup things though I thought this might also work with the tags, though the parenting also provides that feature for singular tags.

Can't download images (linux)

I'm trying to help set up the desu repository, and I've come across a rather big issue: images can't be downloaded.

https://i.imgur.com/gmBJd0x.png

After receiving all updates from a file server, from a fresh client installation, the thumbnails are downloaded but the images are not. "client_files" subdirectories contain no files, and an exception occurs whenever a thumbnail is clicked (because it's trying to create the bigger thumbnail but it doesn't have the file). There is an option in the right-click menu, "file repositories" → "download", but that doesn't appear to have any effect. I'm suspicious of the option too, because if it was allowed to not be downloaded, it wouldn't give me an exception.

Looking through the Sync code in ClientFiles I can't actually see anything that would download the images, so I'm quite confused by this.

"Copy traceback information" isn't working for me and the exception isn't in the logs either. I'll attach exception info after a little digging.

After update to v144 , export folders not working

I've been getting this error whenever I try to manage export folders, periodically (about every few minutes) while running, and when the client launches:

Daemon CheckExportFolders encountered an exception:
AttributeError

'Predicate' object has no attribute '_inclusive'

Traceback (most recent call last):
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.HydrusThreading", line 110, in run
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientDB", line 6332, in DAEMONCheckExportFolders
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientConstants", line 1559, in __init__
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.HydrusConstants", line 2191, in GetInclusive
AttributeError: 'Predicate' object has no attribute '_inclusive'

AttributeError

'Predicate' object has no attribute '_inclusive'

  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUI", line 1843, in EventMenu
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUI", line 1176, in _ManageExportFolders
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIDialogsManage", line 1494, in __init__
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIDialogsManage", line 1459, in PopulateControls
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIDialogsManage", line 1534, in _GetPrettyVariables
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.ClientGUIDialogsManage", line 1534, in <genexpr>
  File "C:\code\Hydrus\build\client\out00-PYZ.pyz\include.HydrusConstants", line 2350, in GetUnicode

Feature: Summary/description/transcript field

For things like this: http://a.pomf.se/olcgdt.jpg
They are probably easier to remember by their text than any defining characteristic about them, and it just seems wrong to tag something with its text. I would like a larger field (searchable via the normal means) where I can just dump text like that so that I can find images by their text.

UnicodeDecodeError while importing a directory

UnicodeDecodeError
'ascii' codec can't decode byte 0x82 in position 24: ordinal not in range(128)
  File "/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py", line 16762, in <lambda>
    lambda event: event.callable(*event.args, **event.kw) )
  File "/opt/hydrus/include/ClientGUIDialogs.py", line 2511, in AddParsedPath
    pretty_path = zip_path + os.path.sep + name

Silly FR: Dark Mode

TLDR: I bought an AMOLED tablet, which I'm going to mainly use for Hydrus remote access via the Splashtop/touch keyboard method I mentioned previously.

If it were possible to set Hydrus to some sort of "night mode" where all the vast white expanses (the backgrounds of taglists and the main view, and especially the background of the Filter view) could be set to black or dark gray, I'd save a lot of battery. (I tried High Contrast mode on the PC, but it doesn't actually affect anything beyond the window borders).

If this would take more than like 15 minutes to code, don't bother - I just wondered if it might be a simple option to add.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.