Merge pull request #1398 from floogulinc/gzip-support

Add support for gzip files
This commit is contained in:
Hydrus Network Developer 2023-07-22 16:16:23 -05:00 committed by GitHub
commit a2fccb74f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View File

@ -96,6 +96,7 @@ Now:
* **application/vnd.rar** (.rar) * **application/vnd.rar** (.rar)
* **application/zip** (.zip) * **application/zip** (.zip)
* **application/x-7z-compressed** (.7z) * **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). 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).

View File

@ -717,12 +717,13 @@ APPLICATION_SAI2 = 54
APPLICATION_KRITA = 55 APPLICATION_KRITA = 55
IMAGE_SVG = 56 IMAGE_SVG = 56
APPLICATION_XCF = 57 APPLICATION_XCF = 57
APPLICATION_GZIP = 58
APPLICATION_OCTET_STREAM = 100 APPLICATION_OCTET_STREAM = 100
APPLICATION_UNKNOWN = 101 APPLICATION_UNKNOWN = 101
GENERAL_FILETYPES = { GENERAL_APPLICATION, GENERAL_AUDIO, GENERAL_IMAGE, GENERAL_VIDEO, GENERAL_ANIMATION } 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_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 } 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, 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 } ) STORABLE_MIMES = set( SEARCHABLE_MIMES ).union( { APPLICATION_HYDRUS_UPDATE_CONTENT, APPLICATION_HYDRUS_UPDATE_DEFINITIONS } )
@ -738,7 +739,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 } 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_XCF, 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, APPLICATION_ZIP }
general_mimetypes_to_mime_groups = { general_mimetypes_to_mime_groups = {
GENERAL_APPLICATION : APPLICATIONS, GENERAL_APPLICATION : APPLICATIONS,
@ -761,7 +762,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_DEFINITELY_HAVE_AUDIO = tuple( [ APPLICATION_FLASH ] + list( AUDIO ) )
MIMES_THAT_MAY_HAVE_AUDIO = tuple( list( MIMES_THAT_DEFINITELY_HAVE_AUDIO ) + list( VIDEO ) ) 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 } ) MIMES_WITH_THUMBNAILS = set( IMAGES ).union( ANIMATIONS ).union( VIDEO ).union( { IMAGE_SVG, APPLICATION_FLASH, APPLICATION_CLIP, APPLICATION_PSD, APPLICATION_KRITA } )
@ -807,6 +808,7 @@ mime_enum_lookup = {
'application/zip' : APPLICATION_ZIP, 'application/zip' : APPLICATION_ZIP,
'application/vnd.rar' : APPLICATION_RAR, 'application/vnd.rar' : APPLICATION_RAR,
'application/x-7z-compressed' : APPLICATION_7Z, 'application/x-7z-compressed' : APPLICATION_7Z,
'application/gzip': APPLICATION_GZIP,
'application/json' : APPLICATION_JSON, 'application/json' : APPLICATION_JSON,
'application/cbor': APPLICATION_CBOR, 'application/cbor': APPLICATION_CBOR,
'application/hydrus-encrypted-zip' : APPLICATION_HYDRUS_ENCRYPTED_ZIP, 'application/hydrus-encrypted-zip' : APPLICATION_HYDRUS_ENCRYPTED_ZIP,
@ -866,6 +868,7 @@ mime_string_lookup = {
APPLICATION_ZIP : 'zip', APPLICATION_ZIP : 'zip',
APPLICATION_RAR : 'rar', APPLICATION_RAR : 'rar',
APPLICATION_7Z : '7z', APPLICATION_7Z : '7z',
APPLICATION_GZIP: 'gzip',
APPLICATION_WINDOWS_EXE : 'windows exe', APPLICATION_WINDOWS_EXE : 'windows exe',
APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip', APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip',
APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content', APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content',
@ -929,6 +932,7 @@ mime_mimetype_string_lookup = {
APPLICATION_ZIP : 'application/zip', APPLICATION_ZIP : 'application/zip',
APPLICATION_RAR : 'application/vnd.rar', APPLICATION_RAR : 'application/vnd.rar',
APPLICATION_7Z : 'application/x-7z-compressed', APPLICATION_7Z : 'application/x-7z-compressed',
APPLICATION_GZIP: 'application/gzip',
APPLICATION_WINDOWS_EXE : 'application/octet-stream', APPLICATION_WINDOWS_EXE : 'application/octet-stream',
APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip', APPLICATION_HYDRUS_ENCRYPTED_ZIP : 'application/hydrus-encrypted-zip',
APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content', APPLICATION_HYDRUS_UPDATE_CONTENT : 'application/hydrus-update-content',
@ -992,6 +996,7 @@ mime_ext_lookup = {
APPLICATION_ZIP : '.zip', APPLICATION_ZIP : '.zip',
APPLICATION_RAR : '.rar', APPLICATION_RAR : '.rar',
APPLICATION_7Z : '.7z', APPLICATION_7Z : '.7z',
APPLICATION_GZIP: '.gz',
APPLICATION_WINDOWS_EXE : '.exe', APPLICATION_WINDOWS_EXE : '.exe',
APPLICATION_HYDRUS_ENCRYPTED_ZIP : '.zip.encrypted', APPLICATION_HYDRUS_ENCRYPTED_ZIP : '.zip.encrypted',
APPLICATION_HYDRUS_UPDATE_CONTENT : '', APPLICATION_HYDRUS_UPDATE_CONTENT : '',

View File

@ -89,6 +89,7 @@ headers_and_mime.extend( [
( ( ( 0, b'7z\xBC\xAF\x27\x1C' ), ), HC.APPLICATION_7Z ), ( ( ( 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\x00' ), ), HC.APPLICATION_RAR ),
( ( ( 0, b'\x52\x61\x72\x21\x1A\x07\x01\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 ), ( ( ( 0, b'hydrus encrypted zip' ), ), HC.APPLICATION_HYDRUS_ENCRYPTED_ZIP ),
( ( ( 4, b'ftypmp4' ), ), HC.UNDETERMINED_MP4 ), ( ( ( 4, b'ftypmp4' ), ), HC.UNDETERMINED_MP4 ),
( ( ( 4, b'ftypisom' ), ), HC.UNDETERMINED_MP4 ), ( ( ( 4, b'ftypisom' ), ), HC.UNDETERMINED_MP4 ),