Merge pull request #1387 from floogulinc/sai2

Add support for sai2 files
This commit is contained in:
Hydrus Network Developer 2023-07-01 13:04:20 -05:00 committed by GitHub
commit 5241008b2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 13 additions and 4 deletions

View File

@ -90,6 +90,7 @@ Now:
* **application/pdf** (.pdf)
* **application/x-photoshop** (.psd)
* **application/clip** (.clip)
* **application/sai2** (.sai2)
* **application/vnd.rar** (.rar)
* **application/zip** (.zip)
* **application/x-7z-compressed** (.7z)

View File

@ -16,7 +16,7 @@ Currently importable filetypes are:
* images - jpg, gif (including animated), png (including animated!), tiff, webp, bmp
* video - webm, mp4, mpeg, avi, mov, mkv, flv, wmv
* audio - mp3, flac, ogg, wma
* misc - swf, pdf, psd, zip, rar, 7z
* misc - swf, pdf, psd, clip, sai2, zip, rar, 7z
On the Windows and Linux builds, an MPV window is embedded to play video and audio smoothly. For files like pdf, which cannot currently be viewed in the client, it is easy to launch any file with your OS's default program.

View File

@ -744,7 +744,7 @@ class ThumbnailCache( object ):
self._special_thumbs = {}
names = [ 'hydrus', 'pdf', 'psd', 'clip', 'audio', 'video', 'zip' ]
names = [ 'hydrus', 'pdf', 'psd', 'clip', 'sai', 'audio', 'video', 'zip' ]
bounding_dimensions = self._controller.options[ 'thumbnail_dimensions' ]
thumbnail_scale_type = self._controller.new_options.GetInteger( 'thumbnail_scale_type' )
@ -860,6 +860,7 @@ class ThumbnailCache( object ):
elif mime in HC.VIDEO: return self._special_thumbs[ 'video' ]
elif mime == HC.APPLICATION_PDF: return self._special_thumbs[ 'pdf' ]
elif mime == HC.APPLICATION_PSD: return self._special_thumbs[ 'psd' ]
elif mime == HC.APPLICATION_SAI2: return self._special_thumbs[ 'sai' ]
elif mime in HC.ARCHIVES: return self._special_thumbs[ 'zip' ]
else: return self._special_thumbs[ 'hydrus' ]

View File

@ -713,12 +713,13 @@ UNDETERMINED_MP4 = 50
APPLICATION_CBOR = 51
APPLICATION_WINDOWS_EXE = 52
AUDIO_WAVPACK = 53
APPLICATION_SAI2 = 54
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, 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_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, 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_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 } )
@ -734,7 +735,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 = { APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z }
APPLICATIONS = { APPLICATION_FLASH, APPLICATION_PSD, APPLICATION_CLIP, APPLICATION_SAI2, APPLICATION_PDF, APPLICATION_ZIP, APPLICATION_RAR, APPLICATION_7Z }
general_mimetypes_to_mime_groups = {
GENERAL_APPLICATION : APPLICATIONS,
@ -791,6 +792,7 @@ mime_enum_lookup = {
'application/x-photoshop' : APPLICATION_PSD,
'image/vnd.adobe.photoshop' : APPLICATION_PSD,
'application/clip' : APPLICATION_CLIP,
'application/sai2': APPLICATION_SAI2,
'application/octet-stream' : APPLICATION_OCTET_STREAM,
'application/x-yaml' : APPLICATION_YAML,
'PDF document' : APPLICATION_PDF,
@ -850,6 +852,7 @@ mime_string_lookup = {
APPLICATION_PDF : 'pdf',
APPLICATION_PSD : 'photoshop psd',
APPLICATION_CLIP : 'clip',
APPLICATION_SAI2 : 'sai2',
APPLICATION_ZIP : 'zip',
APPLICATION_RAR : 'rar',
APPLICATION_7Z : '7z',
@ -909,6 +912,7 @@ mime_mimetype_string_lookup = {
APPLICATION_PDF : 'application/pdf',
APPLICATION_PSD : 'application/x-photoshop',
APPLICATION_CLIP : 'application/clip',
APPLICATION_SAI2: 'application/sai2',
APPLICATION_ZIP : 'application/zip',
APPLICATION_RAR : 'application/vnd.rar',
APPLICATION_7Z : 'application/x-7z-compressed',
@ -968,6 +972,7 @@ mime_ext_lookup = {
APPLICATION_PDF : '.pdf',
APPLICATION_PSD : '.psd',
APPLICATION_CLIP : '.clip',
APPLICATION_SAI2: '.sai2',
APPLICATION_ZIP : '.zip',
APPLICATION_RAR : '.rar',
APPLICATION_7Z : '.7z',

View File

@ -64,6 +64,7 @@ headers_and_mime.extend( [
( ( ( 0, b'8BPS\x00\x01' ), ), HC.APPLICATION_PSD ),
( ( ( 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'PK\x03\x04' ), ), HC.APPLICATION_ZIP ),
( ( ( 0, b'PK\x05\x06' ), ), HC.APPLICATION_ZIP ),
( ( ( 0, b'PK\x07\x08' ), ), HC.APPLICATION_ZIP ),

View File

@ -23,6 +23,7 @@ mimes_to_default_thumbnail_paths = collections.defaultdict( lambda: os.path.join
mimes_to_default_thumbnail_paths[ HC.APPLICATION_PDF ] = os.path.join( HC.STATIC_DIR, 'pdf.png' )
mimes_to_default_thumbnail_paths[ HC.APPLICATION_PSD ] = os.path.join( HC.STATIC_DIR, 'psd.png' )
mimes_to_default_thumbnail_paths[ HC.APPLICATION_CLIP ] = os.path.join( HC.STATIC_DIR, 'clip.png' )
mimes_to_default_thumbnail_paths[ HC.APPLICATION_SAI2 ] = os.path.join( HC.STATIC_DIR, 'sai.png' )
for mime in HC.AUDIO:

BIN
static/sai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB