From 0746dc2ab77fcc6543bb212e820ef032fd0894b0 Mon Sep 17 00:00:00 2001 From: Paul Friederichsen Date: Sun, 9 Jul 2023 05:08:32 -0500 Subject: [PATCH 1/4] Add support for gzip files --- docs/getting_started_files.md | 1 + hydrus/core/HydrusConstants.py | 11 ++++++++--- hydrus/core/HydrusFileHandling.py | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/getting_started_files.md b/docs/getting_started_files.md index 919f898e..deffc9a8 100644 --- a/docs/getting_started_files.md +++ b/docs/getting_started_files.md @@ -94,6 +94,7 @@ Now: * **application/vnd.rar** (.rar) * **application/zip** (.zip) * **application/x-7z-compressed** (.7z) +* **application/gzip** (.gz) Although some support is imperfect for the complicated filetypes. For the Windows and Linux built releases, hydrus now embeds an MPV player for video, audio and gifs, which provides smooth playback and audio, but some other environments may not support MPV and so will default when possible to the native hydrus software renderer, which does not support audio. When something does not render how you want, right-clicking on its thumbnail presents the option 'open externally', which will open the file in the appropriate default program (e.g. ACDSee, VLC). diff --git a/hydrus/core/HydrusConstants.py b/hydrus/core/HydrusConstants.py index 9d95b519..60cd2694 100644 --- a/hydrus/core/HydrusConstants.py +++ b/hydrus/core/HydrusConstants.py @@ -716,12 +716,13 @@ AUDIO_WAVPACK = 53 APPLICATION_SAI2 = 54 APPLICATION_KRITA = 55 IMAGE_SVG = 56 +APPLICATION_GZIP = 57 APPLICATION_OCTET_STREAM = 100 APPLICATION_UNKNOWN = 101 GENERAL_FILETYPES = { GENERAL_APPLICATION, GENERAL_AUDIO, GENERAL_IMAGE, GENERAL_VIDEO, GENERAL_ANIMATION } -SEARCHABLE_MIMES = { IMAGE_JPEG, IMAGE_PNG, IMAGE_APNG, IMAGE_GIF, IMAGE_WEBP, IMAGE_TIFF, IMAGE_ICON, IMAGE_SVG, APPLICATION_FLASH, VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z, AUDIO_M4A, AUDIO_MP3, AUDIO_REALMEDIA, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_TRUEAUDIO, AUDIO_WMA, VIDEO_WMV, AUDIO_MKV, AUDIO_MP4, AUDIO_WAVPACK } +SEARCHABLE_MIMES = { IMAGE_JPEG, IMAGE_PNG, IMAGE_APNG, IMAGE_GIF, IMAGE_WEBP, IMAGE_TIFF, IMAGE_ICON, IMAGE_SVG, APPLICATION_FLASH, VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z, APPLICATION_GZIP, AUDIO_M4A, AUDIO_MP3, AUDIO_REALMEDIA, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_TRUEAUDIO, AUDIO_WMA, VIDEO_WMV, AUDIO_MKV, AUDIO_MP4, AUDIO_WAVPACK } STORABLE_MIMES = set( SEARCHABLE_MIMES ).union( { APPLICATION_HYDRUS_UPDATE_CONTENT, APPLICATION_HYDRUS_UPDATE_DEFINITIONS } ) @@ -737,7 +738,7 @@ AUDIO = { AUDIO_M4A, AUDIO_MP3, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_WMA, AU VIDEO = { VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_WMV, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG } -APPLICATIONS = { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z } +APPLICATIONS = { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z, APPLICATION_GZIP } general_mimetypes_to_mime_groups = { GENERAL_APPLICATION : APPLICATIONS, @@ -760,7 +761,7 @@ for ( general_mime_type, mimes_in_type ) in general_mimetypes_to_mime_groups.ite MIMES_THAT_DEFINITELY_HAVE_AUDIO = tuple( [ APPLICATION_FLASH ] + list( AUDIO ) ) MIMES_THAT_MAY_HAVE_AUDIO = tuple( list( MIMES_THAT_DEFINITELY_HAVE_AUDIO ) + list( VIDEO ) ) -ARCHIVES = { APPLICATION_ZIP, APPLICATION_HYDRUS_ENCRYPTED_ZIP, APPLICATION_RAR, APPLICATION_7Z } +ARCHIVES = { APPLICATION_ZIP, APPLICATION_HYDRUS_ENCRYPTED_ZIP, APPLICATION_RAR, APPLICATION_7Z, APPLICATION_GZIP } MIMES_WITH_THUMBNAILS = set( IMAGES ).union( ANIMATIONS ).union( VIDEO ).union( { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_KRITA } ) @@ -804,6 +805,7 @@ mime_enum_lookup = { 'application/zip' : APPLICATION_ZIP, 'application/vnd.rar' : APPLICATION_RAR, 'application/x-7z-compressed' : APPLICATION_7Z, + 'application/gzip': APPLICATION_GZIP, 'application/json' : APPLICATION_JSON, 'application/cbor': APPLICATION_CBOR, 'application/hydrus-encrypted-zip' : APPLICATION_HYDRUS_ENCRYPTED_ZIP, @@ -862,6 +864,7 @@ mime_string_lookup = { APPLICATION_ZIP : 'zip', APPLICATION_RAR : 'rar', APPLICATION_7Z : '7z', + APPLICATION_GZIP: 'gzip', APPLICATION_WINDOWS_EXE : 'windows exe', APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip', APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content', @@ -924,6 +927,7 @@ mime_mimetype_string_lookup = { APPLICATION_ZIP : 'application/zip', APPLICATION_RAR : 'application/vnd.rar', APPLICATION_7Z : 'application/x-7z-compressed', + APPLICATION_GZIP: 'application/gzip', APPLICATION_WINDOWS_EXE : 'application/octet-stream', APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip', APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content', @@ -986,6 +990,7 @@ mime_ext_lookup = { APPLICATION_ZIP : '.zip', APPLICATION_RAR : '.rar', APPLICATION_7Z : '.7z', + APPLICATION_GZIP: '.gz', APPLICATION_WINDOWS_EXE : '.exe', APPLICATION_HYDRUS_ENCRYPTED_ZIP : '.zip.encrypted', APPLICATION_HYDRUS_UPDATE_CONTENT : '', diff --git a/hydrus/core/HydrusFileHandling.py b/hydrus/core/HydrusFileHandling.py index fb2ca2f5..fd685dc3 100644 --- a/hydrus/core/HydrusFileHandling.py +++ b/hydrus/core/HydrusFileHandling.py @@ -77,6 +77,7 @@ headers_and_mime.extend( [ ( ( ( 0, b'7z\xBC\xAF\x27\x1C' ), ), HC.APPLICATION_7Z ), ( ( ( 0, b'\x52\x61\x72\x21\x1A\x07\x00' ), ), HC.APPLICATION_RAR ), ( ( ( 0, b'\x52\x61\x72\x21\x1A\x07\x01\x00' ), ), HC.APPLICATION_RAR ), + ( ( ( 0, b'\x1f\x8b' ), ), HC.APPLICATION_GZIP ), ( ( ( 0, b'hydrus encrypted zip' ), ), HC.APPLICATION_HYDRUS_ENCRYPTED_ZIP ), ( ( ( 4, b'ftypmp4' ), ), HC.UNDETERMINED_MP4 ), ( ( ( 4, b'ftypisom' ), ), HC.UNDETERMINED_MP4 ), From c5eaa9a843ff1a962dda05892fcc3c0d73da899b Mon Sep 17 00:00:00 2001 From: Paul Friederichsen Date: Sun, 9 Jul 2023 07:27:47 -0500 Subject: [PATCH 2/4] Add basic XCF file support --- hydrus/client/caches/ClientCaches.py | 3 ++- hydrus/core/HydrusConstants.py | 9 +++++++-- hydrus/core/HydrusFileHandling.py | 1 + static/xcf.png | Bin 0 -> 45239 bytes 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 static/xcf.png diff --git a/hydrus/client/caches/ClientCaches.py b/hydrus/client/caches/ClientCaches.py index 1c40a885..3a215534 100644 --- a/hydrus/client/caches/ClientCaches.py +++ b/hydrus/client/caches/ClientCaches.py @@ -744,7 +744,7 @@ class ThumbnailCache( object ): self._special_thumbs = {} - names = [ 'hydrus', 'pdf', 'psd', 'clip', 'sai', 'krita', 'svg', 'audio', 'video', 'zip' ] + names = [ 'hydrus', 'pdf', 'psd', 'clip', 'sai', 'krita', 'xcf', 'svg', 'audio', 'video', 'zip' ] bounding_dimensions = self._controller.options[ 'thumbnail_dimensions' ] thumbnail_scale_type = self._controller.new_options.GetInteger( 'thumbnail_scale_type' ) @@ -862,6 +862,7 @@ class ThumbnailCache( object ): elif mime == HC.APPLICATION_PSD: return self._special_thumbs[ 'psd' ] elif mime == HC.APPLICATION_SAI2: return self._special_thumbs[ 'sai' ] elif mime == HC.APPLICATION_KRITA: return self._special_thumbs[ 'krita' ] + elif mime == HC.APPLICATION_XCF: return self._special_thumbs[ 'xcf' ] elif mime == HC.IMAGE_SVG: return self._special_thumbs[ 'svg' ] elif mime in HC.ARCHIVES: return self._special_thumbs[ 'zip' ] else: return self._special_thumbs[ 'hydrus' ] diff --git a/hydrus/core/HydrusConstants.py b/hydrus/core/HydrusConstants.py index 9d95b519..79c7286e 100644 --- a/hydrus/core/HydrusConstants.py +++ b/hydrus/core/HydrusConstants.py @@ -716,12 +716,13 @@ AUDIO_WAVPACK = 53 APPLICATION_SAI2 = 54 APPLICATION_KRITA = 55 IMAGE_SVG = 56 +APPLICATION_XCF = 57 APPLICATION_OCTET_STREAM = 100 APPLICATION_UNKNOWN = 101 GENERAL_FILETYPES = { GENERAL_APPLICATION, GENERAL_AUDIO, GENERAL_IMAGE, GENERAL_VIDEO, GENERAL_ANIMATION } -SEARCHABLE_MIMES = { IMAGE_JPEG, IMAGE_PNG, IMAGE_APNG, IMAGE_GIF, IMAGE_WEBP, IMAGE_TIFF, IMAGE_ICON, IMAGE_SVG, APPLICATION_FLASH, VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z, AUDIO_M4A, AUDIO_MP3, AUDIO_REALMEDIA, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_TRUEAUDIO, AUDIO_WMA, VIDEO_WMV, AUDIO_MKV, AUDIO_MP4, AUDIO_WAVPACK } +SEARCHABLE_MIMES = { IMAGE_JPEG, IMAGE_PNG, IMAGE_APNG, IMAGE_GIF, IMAGE_WEBP, IMAGE_TIFF, IMAGE_ICON, IMAGE_SVG, APPLICATION_FLASH, VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_XCF, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z, AUDIO_M4A, AUDIO_MP3, AUDIO_REALMEDIA, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_TRUEAUDIO, AUDIO_WMA, VIDEO_WMV, AUDIO_MKV, AUDIO_MP4, AUDIO_WAVPACK } STORABLE_MIMES = set( SEARCHABLE_MIMES ).union( { APPLICATION_HYDRUS_UPDATE_CONTENT, APPLICATION_HYDRUS_UPDATE_DEFINITIONS } ) @@ -737,7 +738,7 @@ AUDIO = { AUDIO_M4A, AUDIO_MP3, AUDIO_OGG, AUDIO_FLAC, AUDIO_WAVE, AUDIO_WMA, AU VIDEO = { VIDEO_AVI, VIDEO_FLV, VIDEO_MOV, VIDEO_MP4, VIDEO_WMV, VIDEO_MKV, VIDEO_REALMEDIA, VIDEO_WEBM, VIDEO_OGV, VIDEO_MPEG } -APPLICATIONS = { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z } +APPLICATIONS = { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_SAI2, APPLICATION_KRITA, APPLICATION_XCF, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z } general_mimetypes_to_mime_groups = { GENERAL_APPLICATION : APPLICATIONS, @@ -797,6 +798,7 @@ mime_enum_lookup = { 'application/clip' : APPLICATION_CLIP, 'application/sai2': APPLICATION_SAI2, 'application/x-krita': APPLICATION_KRITA, + 'image/x-xcf' : APPLICATION_XCF, 'application/octet-stream' : APPLICATION_OCTET_STREAM, 'application/x-yaml' : APPLICATION_YAML, 'PDF document' : APPLICATION_PDF, @@ -859,6 +861,7 @@ mime_string_lookup = { APPLICATION_CLIP : 'clip', APPLICATION_SAI2 : 'sai2', APPLICATION_KRITA : 'kra', + APPLICATION_XCF : 'xcf', APPLICATION_ZIP : 'zip', APPLICATION_RAR : 'rar', APPLICATION_7Z : '7z', @@ -921,6 +924,7 @@ mime_mimetype_string_lookup = { APPLICATION_CLIP : 'application/clip', APPLICATION_SAI2: 'application/sai2', APPLICATION_KRITA: 'application/x-krita', + APPLICATION_XCF : 'image/x-xcf', APPLICATION_ZIP : 'application/zip', APPLICATION_RAR : 'application/vnd.rar', APPLICATION_7Z : 'application/x-7z-compressed', @@ -983,6 +987,7 @@ mime_ext_lookup = { APPLICATION_CLIP : '.clip', APPLICATION_SAI2: '.sai2', APPLICATION_KRITA: '.kra', + APPLICATION_XCF : '.xcf', APPLICATION_ZIP : '.zip', APPLICATION_RAR : '.rar', APPLICATION_7Z : '.7z', diff --git a/hydrus/core/HydrusFileHandling.py b/hydrus/core/HydrusFileHandling.py index fb2ca2f5..3c130cf2 100644 --- a/hydrus/core/HydrusFileHandling.py +++ b/hydrus/core/HydrusFileHandling.py @@ -67,6 +67,7 @@ headers_and_mime.extend( [ ( ( ( 0, b'8BPS\x00\x02' ), ), HC.APPLICATION_PSD ), # PSB, which is basically PSD v2 and does giganto resolution ( ( ( 0, b'CSFCHUNK' ), ), HC.APPLICATION_CLIP ), ( ( ( 0, b'SAI-CANVAS' ), ), HC.APPLICATION_SAI2 ), + ( ( ( 0, b'gimp xcf ' ), ), HC.APPLICATION_XCF ), ( ( ( 38, b'application/x-krita' ), ), HC.APPLICATION_KRITA ), # important this comes before zip files because this is also a zip file ( ( ( 42, b'application/x-krita' ), ), HC.APPLICATION_KRITA ), # https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/master/data/freedesktop.org.xml.in#L2829 ( ( ( 58, b'application/x-krita' ), ), HC.APPLICATION_KRITA ), diff --git a/static/xcf.png b/static/xcf.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e4af884d4706ac905e4899df7a2a76ebd6ad35 GIT binary patch literal 45239 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�h(u)xhpI-X^^Y*7-deE-Ccd_+! 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 TILn{I00000NkvXXu0mjffO`&U literal 0 HcmV?d00001 From 85e9234dcc7743fdada2a2897fe025b5595cf59b Mon Sep 17 00:00:00 2001 From: Stafford Williams Date: Sat, 15 Jul 2023 23:41:01 +1000 Subject: [PATCH 3/4] fixes #1401 --- hydrus/client/networking/ClientLocalServerResources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hydrus/client/networking/ClientLocalServerResources.py b/hydrus/client/networking/ClientLocalServerResources.py index b627c1d8..cb0432b8 100644 --- a/hydrus/client/networking/ClientLocalServerResources.py +++ b/hydrus/client/networking/ClientLocalServerResources.py @@ -702,7 +702,7 @@ def ParseHashes( request: HydrusServerRequest.HydrusRequest ): if len( hash_ids_to_hashes ) > 0: - hashes.extend( hash_ids_to_hashes[ hash_id ] ) + hashes=[hash_ids_to_hashes[ hash_id ]] From f2ee7eee22663e7e33f44dd594ae8c84fc2d484d Mon Sep 17 00:00:00 2001 From: Hydrus Network Developer Date: Sat, 22 Jul 2023 13:05:40 -0500 Subject: [PATCH 4/4] Update hydrus/client/networking/ClientLocalServerResources.py Co-authored-by: Paul Friederichsen --- hydrus/client/networking/ClientLocalServerResources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hydrus/client/networking/ClientLocalServerResources.py b/hydrus/client/networking/ClientLocalServerResources.py index cb0432b8..fea3f921 100644 --- a/hydrus/client/networking/ClientLocalServerResources.py +++ b/hydrus/client/networking/ClientLocalServerResources.py @@ -702,7 +702,7 @@ def ParseHashes( request: HydrusServerRequest.HydrusRequest ): if len( hash_ids_to_hashes ) > 0: - hashes=[hash_ids_to_hashes[ hash_id ]] + hashes.append(hash_ids_to_hashes[ hash_id ])