windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v335/Hydrus.Network.335.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v335/Hydrus.Network.335.-.Windows.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v335/Hydrus.Network.335.-.OS.X.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v335/Hydrus.Network.335.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v335.tar.gz
When I first made this release, Github’s file upload was not working right, and I used Mediafire instead. Github is now working and I have updated the links above.
I had a great four weeks updating hydrus to python 3. The update went well, and the releases today are ready for all users, but there are special update instructions just for this week.
python 3
The client and server now run completely and exclusively on python 3, updating from python 2. The new version has a variety of benefits, mostly in better unicode vs. data handling, but for hydrus it also runs a little faster, uses less idle CPU and significantly less memory, and has a little less ui-jank.
I am pleased with the update. None of it was extremely difficult, but there was a lot to do, a few headaches, and some new stuff to learn. I am glad I took the four weeks. I also appreciate the users who tested the preview releases in the past couple of weeks.
I have squashed a ton of little bugs, and everything normal like file downloading and browsing seems to work completely fine, but there are likely a couple of small issues still out there. If a dialog breaks for you and you get some popups about some datatype being mishandled, please send it to me and I'll get it fixed up for v336!
some notes
Unfortunately, for technically difficult reasons, I could not compile 'debug' versions of the executables, so these are gone this week. I will revisit this, but the original debug builds were a bit hacky and may no longer be practically possible in py3.
Also, I am not certain if the database menu's 'set a password' will have kept correct password data for unusual keyboards, so if you use this function, the client will, just for this v335, forgive incorrect passwords! If this happens to you, the client will give you a popup with more information and tell you how to try to fix it. I would appreciate feedback here, if you encounter it.
Due to a natural library update unrelated to py3, your hydrus sessions will likely be wiped (this also happened to some running-from-source users a little while ago), which means Hydrus will have to re-login to any sites you have logins set up for. If you have special cookies you need to save or re-import from your browser, get set up before you update!
Now, because py2 and py3 are incompatible, the new version cannot be run in a folder that still has old .dll files hanging around. Please follow the following to update:
update instructions for windows installer
Just for this week, I have added a routine to the installer to delete the old files (but obviously saving your db directory where your database and files are stored!), so you shouldn't have to do anything. I nonetheless recommend you still make a backup before you update. Backups are great, and if you don't make one yet, this week is a great time to start.
If you are a particularly long-time user and the installer fails to clear everything out, you may need to delete the old files yourself, like the extract users will have to:
update instructions for windows and linux extract
You will have to perform a clean install, which means deleting everything in your install folder except the db directory before extracting as normal. This is simple, but do not get it wrong. Do not delete your db directory–this is where your database and files are stored.
As always, if you have a recent backup, you don't have to worry about any possible accident, so make sure you have one.
update instructions for os x
Due to technical limitations, the OS X release is now App only. Furthermore, this App release will no longer store the db inside itself! The default location for your db is now ~/Library/Hydrus (i.e. /Users/[you]/Library/Hydrus). This also means that the future update process will be as simple as replacing the existing Hydrus Network App in Applications, just one action. I apologise that this important change has taken so long to come out, but we got there in the end.
If you are updating this week, you will need to make the Hydrus folder under your Library yourself and move your existing db there so the new Hydrus can pick up where you left off. If you use the tar.gz, you'll be moving the contents of your install_dir/db, and if you use the App, you'll want to right-click->Show Package Contents on your old py2 App and navigate to Hydrus Network/Contents/MacOS/db. You want the contents of db, not the db folder itself, so the path to your new client.db file should be ~/Library/Hydrus/client.db, for instance.
If you cannot see your Library folder, check this: https://www.macworld.com/article/2057221/how-to-view-the-library-folder-in-mavericks.html
If you have trouble with this, please let me know and we'll figure it out together.
update instructions for running from source
You'll need to make a new py3 venv and make new shortcuts. I now use pycryptodome instead of pycrypto and dropped some libraries, so I recommend you go to the 'running from source' help page again and just paste the new pip line(s) to get set up.
I don't think 3.4 will work, but 3.5, 3.6, and 3.7 all seem ok. Obviously contact me if you run into trouble. I'm also interested in success stories!
full list
- important:
- hydrus now runs completely and exclusively on python 3!
- for users who are updating, the client has special install instructions for just this week:
- if you are a windows or linux user who extracts to install, you will have to delete your old install's files (but keep your db folder!!!) before installing/extracting the new version so there are no 2/3 dll/so conflicts (don't delete your db folder!)
- if you use the windows installer to install, this v335 installer will do the clean install for you! there is absolutely no way this could go wrong, so no need to make a backup beforehand :^)
- if you are an os x user, I am now only releasing the client in the app. furthermore, the default app db location is now ~/Library/Hydrus (i.e. /Users/[you]/Library/Hydrus). you will have to move your existing db to this location to update, and thereafter you'll just be replacing the app in Applications!
- if you try to boot a non-clean mixed 2/3 install, the client will try to recognise that and give an error and dump out
- please check the release post for more detailed instructions here
- .
- semi-important:
- the db password feature may be one-time broken for unusual keyboard languages, so failures this version will be forgiven with an appropriate error message explaining the situation. feedback from чики брики lads appreciated
- I may have fixed the issue some linux/os x users were having launching external programs, including OS ffmpeg (it was a child process environment issue related to pyinstaller)
- although I did most of my devving here on py 3.6, the client seems to run ok on 3.5. I doubt 3.4 will do it, if you mean to run from source
- I moved from the old pycrypto to the new pycryptodome, so users who run from source will want to get this. I also dropped some libraries
- .
- misc bug fixes:
- fixed the 'load one of the default options' button on manage tag import options when a set of default options is orphaned by a deleted url class
- removed some popup flicker related to long error messages
- fixed some parsing testing ui error handling
- cleared up some bad text ctrl event handling that could sometimes cause a recursive loop
- listctrls should now sort text that includes numbers in the human-friendly 2 < 10 fashion
- cleaned up some bad external process calling code and improved how child process environment is set up
- finally figured out the basic problem of a long-time nested dialog event handling error that could sometimes freeze the ui. I may have fixed it in one case and will keep working on this
- .
- boring details:
- ran 2to3 to auto-convert what could be done
- updated environment to python 3
- went over a whole ton of unicode encoding/decoding manually to update it to python 3
- removed all the old tobytestring/tounicode calls in favour of new python 3 handling
- fixed all the file io to do bytes/str as appropriate
- corrected a bunch of / vs // int/float stuff
- fixed up twisted, which has some str/bytes stuff going on
- fixed all the listctrls to deal with column sorting None values amongst ints/strs
- fixed png export/import, which had some fun bytes/bytearray/int/str issues
- updated the swf header parsing code to py3 (more str/bytes stuff)
- misc float/int fixes
- fixed up some http.cookies handling, which has changed in py3
- improved some ancient loopback connection code that was only really checking to see if ports were in use
- cleaned up a bunch of now-invalid parameter tuples that 2to3 helpfully marked
- numerous misc other refactoring and so on
- updated the new network engine to now decode non-utf-8 responses correctly based on actual response header
- removed some old py2 manual http multipart code
- removed the old py2 'matroska or webm' parsing py, replacing it with some direct ffmpeg format inspection
- replaced all % formatting with the new .format system. I will slowly move to this rather than the current endless concatenation mess
- deleted some more misc old code
- tightened up some spammy network error reporting
- converted all /r/n to /n in my environment project, ha ha ha
- the ui seems to better support rarer unicode characters like
- updated some of the install/update/backup help for all this, and some misc other stuff as well
- fixed misc bugs
next week
A lot of small stuff piled up over the holiday. I will spend a week or two trying to catch up and also planning out the client API, which will be my first big job of the year.
I hope you had a good Christmas and New Year. Mine were great, and I am looking forward to 2019. Let's keep pushing and see if we can do some fun stuff. Thank you for your support!