hydrus/include/HydrusConstants.py

543 lines
20 KiB
Python
Raw Normal View History

2014-04-23 20:56:12 +00:00
import os
import sys
# dirs
BASE_DIR = sys.path[0]
2015-11-04 22:30:28 +00:00
if BASE_DIR == '':
BASE_DIR = os.getcwdu()
else:
try:
BASE_DIR = BASE_DIR.decode( 'utf-8' )
except:
pass
BIN_DIR = os.path.join( BASE_DIR, 'bin' )
DB_DIR = os.path.join( BASE_DIR, 'db' )
SERVER_FILES_DIR = os.path.join( DB_DIR, 'server_files' )
CLIENT_UPDATES_DIR = os.path.join( DB_DIR, 'client_updates' )
SERVER_UPDATES_DIR = os.path.join( DB_DIR, 'server_updates' )
2015-12-02 22:32:18 +00:00
HELP_DIR = os.path.join( BASE_DIR, 'help' )
INCLUDE_DIR = os.path.join( BASE_DIR, 'include' )
2015-11-04 22:30:28 +00:00
STATIC_DIR = os.path.join( BASE_DIR, 'static' )
2014-04-23 20:56:12 +00:00
#
PLATFORM_WINDOWS = False
PLATFORM_OSX = False
PLATFORM_LINUX = False
if sys.platform == 'win32': PLATFORM_WINDOWS = True
elif sys.platform == 'darwin': PLATFORM_OSX = True
elif sys.platform == 'linux2': PLATFORM_LINUX = True
2013-02-19 00:11:43 +00:00
import sqlite3
import traceback
import yaml
2013-08-07 22:25:18 +00:00
options = {}
2013-02-19 00:11:43 +00:00
# Misc
2015-06-24 22:10:14 +00:00
NETWORK_VERSION = 17
2016-08-31 19:55:14 +00:00
SOFTWARE_VERSION = 221
2013-02-19 00:11:43 +00:00
UNSCALED_THUMBNAIL_DIMENSIONS = ( 200, 200 )
HYDRUS_KEY_LENGTH = 32
UPDATE_DURATION = 100000
2015-10-21 21:53:10 +00:00
READ_BLOCK_SIZE = 256 * 1024
2013-02-19 00:11:43 +00:00
2013-12-04 22:44:16 +00:00
lifetimes = [ ( 'one month', 31 * 86400 ), ( 'three months', 3 * 31 * 86400 ), ( 'six months', 6 * 31 * 86400 ), ( 'one year', 12 * 31 * 86400 ), ( 'two years', 24 * 31 * 86400 ), ( 'five years', 60 * 31 * 86400 ), ( 'does not expire', None ) ]
2013-02-19 00:11:43 +00:00
# Enums
2015-10-14 21:02:25 +00:00
CONTENT_TYPE_MAPPINGS = 0
CONTENT_TYPE_TAG_SIBLINGS = 1
CONTENT_TYPE_TAG_PARENTS = 2
CONTENT_TYPE_FILES = 3
CONTENT_TYPE_RATINGS = 4
CONTENT_TYPE_MAPPING = 5
2016-05-18 20:07:14 +00:00
CONTENT_TYPE_DIRECTORIES = 6
2013-06-12 22:53:31 +00:00
2013-04-10 18:10:37 +00:00
CONTENT_UPDATE_ADD = 0
CONTENT_UPDATE_DELETE = 1
2015-09-23 21:21:02 +00:00
CONTENT_UPDATE_PEND = 2
CONTENT_UPDATE_RESCIND_PEND = 3
2013-04-10 18:10:37 +00:00
CONTENT_UPDATE_PETITION = 4
CONTENT_UPDATE_RESCIND_PETITION = 5
CONTENT_UPDATE_EDIT_LOG = 6
CONTENT_UPDATE_ARCHIVE = 7
CONTENT_UPDATE_INBOX = 8
CONTENT_UPDATE_RATING = 9
2013-06-12 22:53:31 +00:00
CONTENT_UPDATE_DENY_PEND = 11
CONTENT_UPDATE_DENY_PETITION = 12
2013-11-20 21:12:21 +00:00
CONTENT_UPDATE_ADVANCED = 13
2015-07-08 21:45:38 +00:00
CONTENT_UPDATE_UNDELETE = 14
2013-04-10 18:10:37 +00:00
2013-11-06 18:22:07 +00:00
content_update_string_lookup = {}
content_update_string_lookup[ CONTENT_UPDATE_ADD ] = 'add'
content_update_string_lookup[ CONTENT_UPDATE_DELETE ] = 'delete'
2015-09-23 21:21:02 +00:00
content_update_string_lookup[ CONTENT_UPDATE_PEND ] = 'pending'
content_update_string_lookup[ CONTENT_UPDATE_RESCIND_PEND ] = 'rescind pending'
2013-11-06 18:22:07 +00:00
content_update_string_lookup[ CONTENT_UPDATE_PETITION ] = 'petition'
content_update_string_lookup[ CONTENT_UPDATE_RESCIND_PETITION ] = 'rescind petition'
content_update_string_lookup[ CONTENT_UPDATE_EDIT_LOG ] = 'edit log'
content_update_string_lookup[ CONTENT_UPDATE_ARCHIVE ] = 'archive'
content_update_string_lookup[ CONTENT_UPDATE_INBOX ] = 'inbox'
content_update_string_lookup[ CONTENT_UPDATE_RATING ] = 'rating'
content_update_string_lookup[ CONTENT_UPDATE_DENY_PEND ] = 'deny pend'
content_update_string_lookup[ CONTENT_UPDATE_DENY_PETITION ] = 'deny petition'
2015-07-08 21:45:38 +00:00
content_update_string_lookup[ CONTENT_UPDATE_UNDELETE ] = 'undelete'
2013-11-06 18:22:07 +00:00
2013-07-17 20:56:13 +00:00
IMPORT_FOLDER_TYPE_DELETE = 0
IMPORT_FOLDER_TYPE_SYNCHRONISE = 1
2015-05-20 21:31:40 +00:00
EXPORT_FOLDER_TYPE_REGULAR = 0
EXPORT_FOLDER_TYPE_SYNCHRONISE = 1
2015-09-02 23:16:09 +00:00
HYDRUS_CLIENT = 0
HYDRUS_SERVER = 1
HYDRUS_TEST = 2
2013-02-19 00:11:43 +00:00
GET_DATA = 0
POST_DATA = 1
POST_PETITIONS = 2
RESOLVE_PETITIONS = 3
MANAGE_USERS = 4
GENERAL_ADMIN = 5
EDIT_SERVICES = 6
2014-10-01 22:58:32 +00:00
UNKNOWN_PERMISSION = 7
2013-02-19 00:11:43 +00:00
CREATABLE_PERMISSIONS = [ GET_DATA, POST_DATA, POST_PETITIONS, RESOLVE_PETITIONS, MANAGE_USERS, GENERAL_ADMIN ]
ADMIN_PERMISSIONS = [ RESOLVE_PETITIONS, MANAGE_USERS, GENERAL_ADMIN, EDIT_SERVICES ]
permissions_string_lookup = {}
permissions_string_lookup[ GET_DATA ] = 'get data'
permissions_string_lookup[ POST_DATA ] = 'post data'
permissions_string_lookup[ POST_PETITIONS ] = 'post petitions'
permissions_string_lookup[ RESOLVE_PETITIONS ] = 'resolve petitions'
permissions_string_lookup[ MANAGE_USERS ] = 'manage users'
permissions_string_lookup[ GENERAL_ADMIN ] = 'general administration'
permissions_string_lookup[ EDIT_SERVICES ] = 'edit services'
2014-10-01 22:58:32 +00:00
permissions_string_lookup[ UNKNOWN_PERMISSION ] = 'unknown'
2013-02-19 00:11:43 +00:00
TAG_REPOSITORY = 0
FILE_REPOSITORY = 1
LOCAL_FILE = 2
MESSAGE_DEPOT = 3
LOCAL_TAG = 5
LOCAL_RATING_NUMERICAL = 6
LOCAL_RATING_LIKE = 7
RATING_NUMERICAL_REPOSITORY = 8
RATING_LIKE_REPOSITORY = 9
2013-05-29 20:19:54 +00:00
COMBINED_TAG = 10
COMBINED_FILE = 11
2014-05-14 20:46:38 +00:00
LOCAL_BOORU = 12
2016-01-20 23:57:33 +00:00
IPFS = 13
2013-02-19 00:11:43 +00:00
SERVER_ADMIN = 99
NULL_SERVICE = 100
service_string_lookup = {}
service_string_lookup[ TAG_REPOSITORY ] = 'hydrus tag repository'
service_string_lookup[ FILE_REPOSITORY ] = 'hydrus file repository'
service_string_lookup[ LOCAL_FILE ] = 'hydrus local file service'
service_string_lookup[ MESSAGE_DEPOT ] = 'hydrus message depot'
2013-10-02 22:06:06 +00:00
service_string_lookup[ LOCAL_TAG ] = 'local tag service'
service_string_lookup[ LOCAL_RATING_NUMERICAL ] = 'local numerical rating service'
service_string_lookup[ LOCAL_RATING_LIKE ] = 'local like/dislike rating service'
service_string_lookup[ RATING_NUMERICAL_REPOSITORY ] = 'hydrus numerical rating repository'
service_string_lookup[ RATING_LIKE_REPOSITORY ] = 'hydrus like/dislike rating repository'
service_string_lookup[ COMBINED_TAG ] = 'virtual combined tag service'
service_string_lookup[ COMBINED_FILE ] = 'virtual combined file service'
2014-05-14 20:46:38 +00:00
service_string_lookup[ LOCAL_BOORU ] = 'hydrus local booru'
2016-01-20 23:57:33 +00:00
service_string_lookup[ IPFS ] = 'ipfs daemon'
2013-02-19 00:11:43 +00:00
service_string_lookup[ SERVER_ADMIN ] = 'hydrus server administration'
2013-10-02 22:06:06 +00:00
service_string_lookup[ NULL_SERVICE ] = 'null service'
2013-02-19 00:11:43 +00:00
RATINGS_SERVICES = [ LOCAL_RATING_LIKE, LOCAL_RATING_NUMERICAL, RATING_LIKE_REPOSITORY, RATING_NUMERICAL_REPOSITORY ]
REPOSITORIES = [ TAG_REPOSITORY, FILE_REPOSITORY, RATING_LIKE_REPOSITORY, RATING_NUMERICAL_REPOSITORY ]
2016-01-20 23:57:33 +00:00
RESTRICTED_SERVICES = list( REPOSITORIES ) + [ SERVER_ADMIN, MESSAGE_DEPOT ]
REMOTE_SERVICES = list( RESTRICTED_SERVICES ) + [ IPFS ]
2014-11-12 23:33:13 +00:00
TAG_SERVICES = [ LOCAL_TAG, TAG_REPOSITORY ]
2014-08-27 22:15:22 +00:00
LOCAL_SERVICES = [ LOCAL_FILE, LOCAL_TAG, LOCAL_RATING_LIKE, LOCAL_RATING_NUMERICAL, LOCAL_BOORU, COMBINED_FILE, COMBINED_TAG ]
2014-11-12 23:33:13 +00:00
NONEDITABLE_SERVICES = [ LOCAL_BOORU, LOCAL_FILE, LOCAL_TAG ]
2014-05-14 20:46:38 +00:00
ALL_SERVICES = list( REMOTE_SERVICES ) + list( LOCAL_SERVICES )
2013-02-19 00:11:43 +00:00
SERVICES_WITH_THUMBNAILS = [ FILE_REPOSITORY, LOCAL_FILE ]
DELETE_FILES_PETITION = 0
DELETE_TAG_PETITION = 1
BAN = 0
SUPERBAN = 1
CHANGE_ACCOUNT_TYPE = 2
2014-10-01 22:58:32 +00:00
ADD_TO_EXPIRES = 3
SET_EXPIRES = 4
2013-02-19 00:11:43 +00:00
CURRENT = 0
PENDING = 1
DELETED = 2
PETITIONED = 3
2013-05-29 20:19:54 +00:00
DELETED_PENDING = 4
2013-02-19 00:11:43 +00:00
HIGH_PRIORITY = 0
LOW_PRIORITY = 2
2016-04-20 20:42:21 +00:00
INTERRUPTABLE_PRIORITY = 4
2013-02-19 00:11:43 +00:00
SCORE_PETITION = 0
SERVICE_INFO_NUM_FILES = 0
SERVICE_INFO_NUM_INBOX = 1
SERVICE_INFO_NUM_LOCAL = 2
SERVICE_INFO_NUM_MAPPINGS = 3
SERVICE_INFO_NUM_DELETED_MAPPINGS = 4
SERVICE_INFO_NUM_DELETED_FILES = 5
SERVICE_INFO_NUM_THUMBNAILS = 6
SERVICE_INFO_NUM_THUMBNAILS_LOCAL = 7
SERVICE_INFO_TOTAL_SIZE = 8
SERVICE_INFO_NUM_NAMESPACES = 9
SERVICE_INFO_NUM_TAGS = 10
SERVICE_INFO_NUM_PENDING = 11
SERVICE_INFO_NUM_CONVERSATIONS = 12
SERVICE_INFO_NUM_UNREAD = 13
SERVICE_INFO_NUM_DRAFTS = 14
2013-05-29 20:19:54 +00:00
SERVICE_INFO_NUM_PENDING_MAPPINGS = 15
SERVICE_INFO_NUM_PETITIONED_MAPPINGS = 16
SERVICE_INFO_NUM_PENDING_FILES = 15
SERVICE_INFO_NUM_PETITIONED_FILES = 16
2013-06-12 22:53:31 +00:00
SERVICE_INFO_NUM_PENDING_TAG_SIBLINGS = 17
SERVICE_INFO_NUM_PETITIONED_TAG_SIBLINGS = 18
SERVICE_INFO_NUM_PENDING_TAG_PARENTS = 19
SERVICE_INFO_NUM_PETITIONED_TAG_PARENTS = 20
2014-05-14 20:46:38 +00:00
SERVICE_INFO_NUM_SHARES = 21
2013-02-19 00:11:43 +00:00
2013-04-10 18:10:37 +00:00
SERVICE_UPDATE_ACCOUNT = 0
SERVICE_UPDATE_DELETE_PENDING = 1
SERVICE_UPDATE_ERROR = 2
2014-03-05 22:44:02 +00:00
SERVICE_UPDATE_BEGIN_END = 3
2013-04-10 18:10:37 +00:00
SERVICE_UPDATE_RESET = 4
SERVICE_UPDATE_REQUEST_MADE = 5
SERVICE_UPDATE_LAST_CHECK = 6
2013-06-12 22:53:31 +00:00
SERVICE_UPDATE_NEWS = 7
2014-03-05 22:44:02 +00:00
SERVICE_UPDATE_NEXT_DOWNLOAD_TIMESTAMP = 8
SERVICE_UPDATE_NEXT_PROCESSING_TIMESTAMP = 9
2015-06-03 21:05:13 +00:00
SERVICE_UPDATE_SUBINDEX_COUNT = 10
2015-07-15 20:28:26 +00:00
SERVICE_UPDATE_PAUSE = 11
2013-04-10 18:10:37 +00:00
2013-02-19 00:11:43 +00:00
ADD = 0
DELETE = 1
EDIT = 2
2014-02-12 23:09:38 +00:00
SET = 3
2013-02-19 00:11:43 +00:00
APPROVE = 0
DENY = 1
GET = 0
POST = 1
OPTIONS = 2
APPLICATION_HYDRUS_CLIENT_COLLECTION = 0
IMAGE_JPEG = 1
IMAGE_PNG = 2
IMAGE_GIF = 3
IMAGE_BMP = 4
APPLICATION_FLASH = 5
APPLICATION_YAML = 6
IMAGE_ICON = 7
TEXT_HTML = 8
VIDEO_FLV = 9
2013-03-15 02:38:12 +00:00
APPLICATION_PDF = 10
2013-05-01 17:21:53 +00:00
APPLICATION_ZIP = 11
APPLICATION_HYDRUS_ENCRYPTED_ZIP = 12
2013-07-10 20:25:57 +00:00
AUDIO_MP3 = 13
VIDEO_MP4 = 14
2013-07-17 20:56:13 +00:00
AUDIO_OGG = 15
AUDIO_FLAC = 16
2013-08-14 20:21:49 +00:00
AUDIO_WMA = 17
VIDEO_WMV = 18
UNDETERMINED_WM = 19
2014-04-30 21:31:40 +00:00
VIDEO_MKV = 20
VIDEO_WEBM = 21
2015-06-03 21:05:13 +00:00
APPLICATION_JSON = 22
2016-02-24 21:42:54 +00:00
VIDEO_APNG = 23
UNDETERMINED_PNG = 24
2016-08-17 20:07:22 +00:00
VIDEO_MPEG = 25
2013-02-19 00:11:43 +00:00
APPLICATION_OCTET_STREAM = 100
APPLICATION_UNKNOWN = 101
2016-08-17 20:07:22 +00:00
ALLOWED_MIMES = ( IMAGE_JPEG, IMAGE_PNG, IMAGE_GIF, IMAGE_BMP, APPLICATION_FLASH, VIDEO_FLV, VIDEO_MP4, VIDEO_MKV, VIDEO_WEBM, VIDEO_MPEG, APPLICATION_PDF, AUDIO_MP3, AUDIO_OGG, AUDIO_FLAC, AUDIO_WMA, VIDEO_WMV )
SEARCHABLE_MIMES = ( IMAGE_JPEG, IMAGE_PNG, IMAGE_GIF, APPLICATION_FLASH, VIDEO_FLV, VIDEO_MP4, VIDEO_MKV, VIDEO_WEBM, VIDEO_MPEG, APPLICATION_PDF, AUDIO_MP3, AUDIO_OGG, AUDIO_FLAC, AUDIO_WMA, VIDEO_WMV )
2013-02-19 00:11:43 +00:00
IMAGES = ( IMAGE_JPEG, IMAGE_PNG, IMAGE_GIF, IMAGE_BMP )
2013-08-14 20:21:49 +00:00
AUDIO = ( AUDIO_MP3, AUDIO_OGG, AUDIO_FLAC, AUDIO_WMA )
2013-07-10 20:25:57 +00:00
2016-08-17 20:07:22 +00:00
VIDEO = ( VIDEO_FLV, VIDEO_MP4, VIDEO_WMV, VIDEO_MKV, VIDEO_WEBM, VIDEO_MPEG )
2013-07-10 20:25:57 +00:00
2016-08-17 20:07:22 +00:00
NATIVE_VIDEO = ( VIDEO_FLV, VIDEO_MP4, VIDEO_WMV, VIDEO_MKV, VIDEO_WEBM, VIDEO_MPEG )
2015-06-17 20:01:41 +00:00
2013-05-01 17:21:53 +00:00
APPLICATIONS = ( APPLICATION_FLASH, APPLICATION_PDF, APPLICATION_ZIP )
2013-03-15 02:38:12 +00:00
2013-08-14 20:21:49 +00:00
NOISY_MIMES = tuple( [ APPLICATION_FLASH ] + list( AUDIO ) + list( VIDEO ) )
2013-02-19 00:11:43 +00:00
2013-05-01 17:21:53 +00:00
ARCHIVES = ( APPLICATION_ZIP, APPLICATION_HYDRUS_ENCRYPTED_ZIP )
2016-08-17 20:07:22 +00:00
MIMES_WITH_THUMBNAILS = ( APPLICATION_FLASH, IMAGE_JPEG, IMAGE_PNG, IMAGE_GIF, IMAGE_BMP, VIDEO_FLV, VIDEO_MP4, VIDEO_WMV, VIDEO_MKV, VIDEO_WEBM, VIDEO_MPEG )
2013-02-19 00:11:43 +00:00
2013-07-10 20:25:57 +00:00
# mp3 header is complicated
2013-02-19 00:11:43 +00:00
mime_enum_lookup = {}
mime_enum_lookup[ 'collection' ] = APPLICATION_HYDRUS_CLIENT_COLLECTION
mime_enum_lookup[ 'image/jpe' ] = IMAGE_JPEG
mime_enum_lookup[ 'image/jpeg' ] = IMAGE_JPEG
mime_enum_lookup[ 'image/jpg' ] = IMAGE_JPEG
2013-07-17 20:56:13 +00:00
mime_enum_lookup[ 'image/x-png' ] = IMAGE_PNG
2013-02-19 00:11:43 +00:00
mime_enum_lookup[ 'image/png' ] = IMAGE_PNG
mime_enum_lookup[ 'image/gif' ] = IMAGE_GIF
mime_enum_lookup[ 'image/bmp' ] = IMAGE_BMP
mime_enum_lookup[ 'image' ] = IMAGES
mime_enum_lookup[ 'image/vnd.microsoft.icon' ] = IMAGE_ICON
mime_enum_lookup[ 'application/x-shockwave-flash' ] = APPLICATION_FLASH
mime_enum_lookup[ 'application/octet-stream' ] = APPLICATION_OCTET_STREAM
mime_enum_lookup[ 'application/x-yaml' ] = APPLICATION_YAML
2013-07-17 20:56:13 +00:00
mime_enum_lookup[ 'PDF document' ] = APPLICATION_PDF
2013-03-15 02:38:12 +00:00
mime_enum_lookup[ 'application/pdf' ] = APPLICATION_PDF
2013-05-01 17:21:53 +00:00
mime_enum_lookup[ 'application/zip' ] = APPLICATION_ZIP
2015-06-03 21:05:13 +00:00
mime_enum_lookup[ 'application/json' ] = APPLICATION_JSON
2013-05-01 17:21:53 +00:00
mime_enum_lookup[ 'application/hydrus-encrypted-zip' ] = APPLICATION_HYDRUS_ENCRYPTED_ZIP
2013-03-15 02:38:12 +00:00
mime_enum_lookup[ 'application' ] = APPLICATIONS
2013-07-10 20:25:57 +00:00
mime_enum_lookup[ 'audio/mp3' ] = AUDIO_MP3
2013-07-17 20:56:13 +00:00
mime_enum_lookup[ 'audio/ogg' ] = AUDIO_OGG
mime_enum_lookup[ 'audio/flac' ] = AUDIO_FLAC
2013-08-14 20:21:49 +00:00
mime_enum_lookup[ 'audio/x-ms-wma' ] = AUDIO_WMA
2013-02-19 00:11:43 +00:00
mime_enum_lookup[ 'text/html' ] = TEXT_HTML
2016-02-24 21:42:54 +00:00
mime_enum_lookup[ 'video/png' ] = VIDEO_APNG
2013-02-19 00:11:43 +00:00
mime_enum_lookup[ 'video/x-flv' ] = VIDEO_FLV
2013-08-14 20:21:49 +00:00
mime_enum_lookup[ 'video/mp4' ] = VIDEO_MP4
2016-08-17 20:07:22 +00:00
mime_enum_lookup[ 'video/mpeg' ] = VIDEO_MPEG
2013-08-14 20:21:49 +00:00
mime_enum_lookup[ 'video/x-ms-wmv' ] = VIDEO_WMV
2014-04-30 21:31:40 +00:00
mime_enum_lookup[ 'video/x-matroska' ] = VIDEO_MKV
mime_enum_lookup[ 'video/webm' ] = VIDEO_WEBM
2013-08-14 20:21:49 +00:00
mime_enum_lookup[ 'video' ] = VIDEO
2013-02-19 00:11:43 +00:00
mime_enum_lookup[ 'unknown mime' ] = APPLICATION_UNKNOWN
mime_string_lookup = {}
mime_string_lookup[ APPLICATION_HYDRUS_CLIENT_COLLECTION ] = 'collection'
mime_string_lookup[ IMAGE_JPEG ] = 'image/jpg'
mime_string_lookup[ IMAGE_PNG ] = 'image/png'
mime_string_lookup[ IMAGE_GIF ] = 'image/gif'
mime_string_lookup[ IMAGE_BMP ] = 'image/bmp'
mime_string_lookup[ IMAGES ] = 'image'
mime_string_lookup[ IMAGE_ICON ] = 'image/vnd.microsoft.icon'
mime_string_lookup[ APPLICATION_FLASH ] = 'application/x-shockwave-flash'
mime_string_lookup[ APPLICATION_OCTET_STREAM ] = 'application/octet-stream'
mime_string_lookup[ APPLICATION_YAML ] = 'application/x-yaml'
2015-06-03 21:05:13 +00:00
mime_string_lookup[ APPLICATION_JSON ] = 'application/json'
2013-03-15 02:38:12 +00:00
mime_string_lookup[ APPLICATION_PDF ] = 'application/pdf'
2013-05-01 17:21:53 +00:00
mime_string_lookup[ APPLICATION_ZIP ] = 'application/zip'
mime_string_lookup[ APPLICATION_HYDRUS_ENCRYPTED_ZIP ] = 'application/hydrus-encrypted-zip'
2013-03-15 02:38:12 +00:00
mime_string_lookup[ APPLICATIONS ] = 'application'
2013-07-10 20:25:57 +00:00
mime_string_lookup[ AUDIO_MP3 ] = 'audio/mp3'
2013-07-17 20:56:13 +00:00
mime_string_lookup[ AUDIO_OGG ] = 'audio/ogg'
mime_string_lookup[ AUDIO_FLAC ] = 'audio/flac'
2013-08-14 20:21:49 +00:00
mime_string_lookup[ AUDIO_WMA ] = 'audio/x-ms-wma'
2013-07-24 20:26:00 +00:00
mime_string_lookup[ AUDIO ] = 'audio'
2013-02-19 00:11:43 +00:00
mime_string_lookup[ TEXT_HTML ] = 'text/html'
2016-02-24 21:42:54 +00:00
mime_string_lookup[ VIDEO_APNG ] = 'video/png'
2013-02-19 00:11:43 +00:00
mime_string_lookup[ VIDEO_FLV ] = 'video/x-flv'
2013-08-14 20:21:49 +00:00
mime_string_lookup[ VIDEO_MP4 ] = 'video/mp4'
2016-08-17 20:07:22 +00:00
mime_string_lookup[ VIDEO_MPEG ] = 'video/mpeg'
2013-08-14 20:21:49 +00:00
mime_string_lookup[ VIDEO_WMV ] = 'video/x-ms-wmv'
2014-04-30 21:31:40 +00:00
mime_string_lookup[ VIDEO_MKV ] = 'video/x-matroska'
mime_string_lookup[ VIDEO_WEBM ] = 'video/webm'
2013-08-14 20:21:49 +00:00
mime_string_lookup[ VIDEO ] = 'video'
mime_string_lookup[ UNDETERMINED_WM ] = 'audio/x-ms-wma or video/x-ms-wmv'
2013-02-19 00:11:43 +00:00
mime_string_lookup[ APPLICATION_UNKNOWN ] = 'unknown mime'
mime_ext_lookup = {}
mime_ext_lookup[ APPLICATION_HYDRUS_CLIENT_COLLECTION ] = '.collection'
mime_ext_lookup[ IMAGE_JPEG ] = '.jpg'
mime_ext_lookup[ IMAGE_PNG ] = '.png'
mime_ext_lookup[ IMAGE_GIF ] = '.gif'
mime_ext_lookup[ IMAGE_BMP ] = '.bmp'
mime_ext_lookup[ IMAGE_ICON ] = '.ico'
mime_ext_lookup[ APPLICATION_FLASH ] = '.swf'
mime_ext_lookup[ APPLICATION_OCTET_STREAM ] = '.bin'
mime_ext_lookup[ APPLICATION_YAML ] = '.yaml'
2015-06-03 21:05:13 +00:00
mime_ext_lookup[ APPLICATION_JSON ] = '.json'
2013-03-15 02:38:12 +00:00
mime_ext_lookup[ APPLICATION_PDF ] = '.pdf'
2013-05-01 17:21:53 +00:00
mime_ext_lookup[ APPLICATION_ZIP ] = '.zip'
mime_ext_lookup[ APPLICATION_HYDRUS_ENCRYPTED_ZIP ] = '.zip.encrypted'
2013-07-10 20:25:57 +00:00
mime_ext_lookup[ AUDIO_MP3 ] = '.mp3'
2013-07-17 20:56:13 +00:00
mime_ext_lookup[ AUDIO_OGG ] = '.ogg'
mime_ext_lookup[ AUDIO_FLAC ] = '.flac'
2013-08-14 20:21:49 +00:00
mime_ext_lookup[ AUDIO_WMA ] = '.wma'
2013-02-19 00:11:43 +00:00
mime_ext_lookup[ TEXT_HTML ] = '.html'
2016-02-24 21:42:54 +00:00
mime_ext_lookup[ VIDEO_APNG ] = '.png'
2013-02-19 00:11:43 +00:00
mime_ext_lookup[ VIDEO_FLV ] = '.flv'
2013-08-14 20:21:49 +00:00
mime_ext_lookup[ VIDEO_MP4 ] = '.mp4'
2016-08-17 20:07:22 +00:00
mime_ext_lookup[ VIDEO_MPEG ] = '.mpeg'
2013-08-14 20:21:49 +00:00
mime_ext_lookup[ VIDEO_WMV ] = '.wmv'
2014-04-30 21:31:40 +00:00
mime_ext_lookup[ VIDEO_MKV ] = '.mkv'
mime_ext_lookup[ VIDEO_WEBM ] = '.webm'
2013-02-19 00:11:43 +00:00
mime_ext_lookup[ APPLICATION_UNKNOWN ] = ''
#mime_ext_lookup[ 'application/x-rar-compressed' ] = '.rar'
ALLOWED_MIME_EXTENSIONS = [ mime_ext_lookup[ mime ] for mime in ALLOWED_MIMES ]
2015-06-24 22:10:14 +00:00
PREDICATE_TYPE_TAG = 0
PREDICATE_TYPE_NAMESPACE = 1
PREDICATE_TYPE_PARENT = 2
PREDICATE_TYPE_WILDCARD = 3
PREDICATE_TYPE_SYSTEM_EVERYTHING = 4
PREDICATE_TYPE_SYSTEM_INBOX = 5
PREDICATE_TYPE_SYSTEM_ARCHIVE = 6
PREDICATE_TYPE_SYSTEM_UNTAGGED = 7
PREDICATE_TYPE_SYSTEM_NUM_TAGS = 8
PREDICATE_TYPE_SYSTEM_LIMIT = 9
PREDICATE_TYPE_SYSTEM_SIZE = 10
PREDICATE_TYPE_SYSTEM_AGE = 11
PREDICATE_TYPE_SYSTEM_HASH = 12
PREDICATE_TYPE_SYSTEM_WIDTH = 13
PREDICATE_TYPE_SYSTEM_HEIGHT = 14
PREDICATE_TYPE_SYSTEM_RATIO = 15
PREDICATE_TYPE_SYSTEM_DURATION = 16
PREDICATE_TYPE_SYSTEM_MIME = 17
PREDICATE_TYPE_SYSTEM_RATING = 18
PREDICATE_TYPE_SYSTEM_SIMILAR_TO = 19
PREDICATE_TYPE_SYSTEM_LOCAL = 20
PREDICATE_TYPE_SYSTEM_NOT_LOCAL = 21
PREDICATE_TYPE_SYSTEM_NUM_WORDS = 22
PREDICATE_TYPE_SYSTEM_FILE_SERVICE = 23
PREDICATE_TYPE_SYSTEM_NUM_PIXELS = 24
PREDICATE_TYPE_SYSTEM_DIMENSIONS = 25
SYSTEM_PREDICATES = [ PREDICATE_TYPE_SYSTEM_EVERYTHING, PREDICATE_TYPE_SYSTEM_INBOX, PREDICATE_TYPE_SYSTEM_ARCHIVE, PREDICATE_TYPE_SYSTEM_UNTAGGED, PREDICATE_TYPE_SYSTEM_NUM_TAGS, PREDICATE_TYPE_SYSTEM_LIMIT, PREDICATE_TYPE_SYSTEM_SIZE, PREDICATE_TYPE_SYSTEM_AGE, PREDICATE_TYPE_SYSTEM_HASH, PREDICATE_TYPE_SYSTEM_WIDTH, PREDICATE_TYPE_SYSTEM_HEIGHT, PREDICATE_TYPE_SYSTEM_RATIO, PREDICATE_TYPE_SYSTEM_DURATION, PREDICATE_TYPE_SYSTEM_MIME, PREDICATE_TYPE_SYSTEM_RATING, PREDICATE_TYPE_SYSTEM_SIMILAR_TO, PREDICATE_TYPE_SYSTEM_LOCAL, PREDICATE_TYPE_SYSTEM_NOT_LOCAL, PREDICATE_TYPE_SYSTEM_NUM_WORDS, PREDICATE_TYPE_SYSTEM_FILE_SERVICE, PREDICATE_TYPE_SYSTEM_NUM_PIXELS, PREDICATE_TYPE_SYSTEM_DIMENSIONS ]
2013-03-27 20:02:51 +00:00
2014-02-12 23:09:38 +00:00
SITE_TYPE_DEVIANT_ART = 0
SITE_TYPE_GIPHY = 1
SITE_TYPE_PIXIV = 2
SITE_TYPE_BOORU = 3
SITE_TYPE_TUMBLR = 4
SITE_TYPE_HENTAI_FOUNDRY = 5
SITE_TYPE_NEWGROUNDS = 6
2015-10-07 21:56:22 +00:00
SITE_TYPE_NEWGROUNDS_MOVIES = 7
SITE_TYPE_NEWGROUNDS_GAMES = 8
SITE_TYPE_HENTAI_FOUNDRY_ARTIST = 9
SITE_TYPE_HENTAI_FOUNDRY_ARTIST_PICTURES = 10
SITE_TYPE_HENTAI_FOUNDRY_ARTIST_SCRAPS = 11
SITE_TYPE_HENTAI_FOUNDRY_TAGS = 12
SITE_TYPE_PIXIV_ARTIST_ID = 13
SITE_TYPE_PIXIV_TAG = 14
2015-10-14 21:02:25 +00:00
SITE_TYPE_DEFAULT = 15
2013-04-10 18:10:37 +00:00
2014-09-03 20:26:49 +00:00
site_type_string_lookup = {}
2015-10-14 21:02:25 +00:00
site_type_string_lookup[ SITE_TYPE_DEFAULT ] = 'default'
2014-09-03 20:26:49 +00:00
site_type_string_lookup[ SITE_TYPE_BOORU ] = 'booru'
site_type_string_lookup[ SITE_TYPE_DEVIANT_ART ] = 'deviant art'
site_type_string_lookup[ SITE_TYPE_GIPHY ] = 'giphy'
site_type_string_lookup[ SITE_TYPE_HENTAI_FOUNDRY ] = 'hentai foundry'
2015-10-07 21:56:22 +00:00
site_type_string_lookup[ SITE_TYPE_HENTAI_FOUNDRY_ARTIST ] = 'hentai foundry artist'
site_type_string_lookup[ SITE_TYPE_HENTAI_FOUNDRY_ARTIST_PICTURES ] = 'hentai foundry artist pictures'
site_type_string_lookup[ SITE_TYPE_HENTAI_FOUNDRY_ARTIST_SCRAPS ] = 'hentai foundry artist scraps'
site_type_string_lookup[ SITE_TYPE_HENTAI_FOUNDRY_TAGS ] = 'hentai foundry tags'
2014-09-03 20:26:49 +00:00
site_type_string_lookup[ SITE_TYPE_NEWGROUNDS ] = 'newgrounds'
2015-10-07 21:56:22 +00:00
site_type_string_lookup[ SITE_TYPE_NEWGROUNDS_GAMES ] = 'newgrounds games'
site_type_string_lookup[ SITE_TYPE_NEWGROUNDS_MOVIES ] = 'newgrounds movies'
2014-09-03 20:26:49 +00:00
site_type_string_lookup[ SITE_TYPE_PIXIV ] = 'pixiv'
2015-10-07 21:56:22 +00:00
site_type_string_lookup[ SITE_TYPE_PIXIV_ARTIST_ID ] = 'pixiv artist id'
site_type_string_lookup[ SITE_TYPE_PIXIV_TAG ] = 'pixiv tag'
2014-09-03 20:26:49 +00:00
site_type_string_lookup[ SITE_TYPE_TUMBLR ] = 'tumblr'
2013-02-19 00:11:43 +00:00
# request checking
BANDWIDTH_CONSUMING_REQUESTS = set()
2015-06-17 20:01:41 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( LOCAL_BOORU, GET, 'gallery' ) )
BANDWIDTH_CONSUMING_REQUESTS.add( ( LOCAL_BOORU, GET, 'page' ) )
BANDWIDTH_CONSUMING_REQUESTS.add( ( LOCAL_BOORU, GET, 'file' ) )
BANDWIDTH_CONSUMING_REQUESTS.add( ( LOCAL_BOORU, GET, 'thumbnail' ) )
2015-06-03 21:05:13 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( TAG_REPOSITORY, GET, 'content_update_package' ) )
2015-09-09 22:04:39 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( TAG_REPOSITORY, GET, 'immediate_content_update_package' ) )
2015-06-03 21:05:13 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( TAG_REPOSITORY, GET, 'service_update_package' ) )
BANDWIDTH_CONSUMING_REQUESTS.add( ( TAG_REPOSITORY, POST, 'content_update_package' ) )
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, GET, 'content_update_package' ) )
2013-02-19 00:11:43 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, GET, 'file' ) )
2015-09-09 22:04:39 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, GET, 'immediate_content_update_package' ) )
2015-06-03 21:05:13 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, GET, 'service_update_package' ) )
2013-02-19 00:11:43 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, GET, 'thumbnail' ) )
2015-06-03 21:05:13 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, POST, 'content_update_package' ) )
2013-02-19 00:11:43 +00:00
BANDWIDTH_CONSUMING_REQUESTS.add( ( FILE_REPOSITORY, POST, 'file' ) )
# default options
DEFAULT_LOCAL_FILE_PORT = 45865
2014-07-16 20:50:18 +00:00
DEFAULT_LOCAL_BOORU_PORT = 45866
2013-02-19 00:11:43 +00:00
DEFAULT_SERVER_ADMIN_PORT = 45870
DEFAULT_SERVICE_PORT = 45871
DEFAULT_OPTIONS = {}
DEFAULT_OPTIONS[ SERVER_ADMIN ] = {}
DEFAULT_OPTIONS[ SERVER_ADMIN ][ 'max_monthly_data' ] = None
DEFAULT_OPTIONS[ SERVER_ADMIN ][ 'max_storage' ] = None
DEFAULT_OPTIONS[ SERVER_ADMIN ][ 'message' ] = 'hydrus server administration service'
2013-11-06 18:22:07 +00:00
DEFAULT_OPTIONS[ SERVER_ADMIN ][ 'upnp' ] = None
2013-02-19 00:11:43 +00:00
DEFAULT_OPTIONS[ FILE_REPOSITORY ] = {}
DEFAULT_OPTIONS[ FILE_REPOSITORY ][ 'max_monthly_data' ] = None
DEFAULT_OPTIONS[ FILE_REPOSITORY ][ 'max_storage' ] = None
DEFAULT_OPTIONS[ FILE_REPOSITORY ][ 'log_uploader_ips' ] = False
DEFAULT_OPTIONS[ FILE_REPOSITORY ][ 'message' ] = 'hydrus file repository'
2013-11-06 18:22:07 +00:00
DEFAULT_OPTIONS[ FILE_REPOSITORY ][ 'upnp' ] = None
2013-02-19 00:11:43 +00:00
DEFAULT_OPTIONS[ TAG_REPOSITORY ] = {}
DEFAULT_OPTIONS[ TAG_REPOSITORY ][ 'max_monthly_data' ] = None
DEFAULT_OPTIONS[ TAG_REPOSITORY ][ 'message' ] = 'hydrus tag repository'
2013-11-06 18:22:07 +00:00
DEFAULT_OPTIONS[ TAG_REPOSITORY ][ 'upnp' ] = None
2013-02-19 00:11:43 +00:00
DEFAULT_OPTIONS[ MESSAGE_DEPOT ] = {}
DEFAULT_OPTIONS[ MESSAGE_DEPOT ][ 'max_monthly_data' ] = None
DEFAULT_OPTIONS[ MESSAGE_DEPOT ][ 'max_storage' ] = None
DEFAULT_OPTIONS[ MESSAGE_DEPOT ][ 'message' ] = 'hydrus message depot'
2013-11-06 18:22:07 +00:00
DEFAULT_OPTIONS[ MESSAGE_DEPOT ][ 'upnp' ] = None
2013-02-19 00:11:43 +00:00
2014-08-13 22:18:12 +00:00
SERVER_ADMIN_KEY = 'server admin'
2013-10-02 22:06:06 +00:00
2013-11-27 18:27:11 +00:00
def construct_python_tuple( self, node ): return tuple( self.construct_sequence( node ) )
def represent_python_tuple( self, data ): return self.represent_sequence( u'tag:yaml.org,2002:python/tuple', data )
yaml.SafeLoader.add_constructor( u'tag:yaml.org,2002:python/tuple', construct_python_tuple )
2014-02-12 23:09:38 +00:00
yaml.SafeDumper.add_representer( tuple, represent_python_tuple )
# for some reason, sqlite doesn't parse to int before this, despite the column affinity
# it gives the register_converter function a bytestring :/
def integer_boolean_to_bool( integer_boolean ): return bool( int( integer_boolean ) )
2013-11-27 18:27:11 +00:00
2013-02-19 00:11:43 +00:00
# sqlite mod
sqlite3.register_adapter( dict, yaml.safe_dump )
2013-03-15 02:38:12 +00:00
sqlite3.register_adapter( list, yaml.safe_dump )
2014-02-12 23:09:38 +00:00
sqlite3.register_adapter( tuple, yaml.safe_dump )
sqlite3.register_adapter( bool, int )
2013-02-19 00:11:43 +00:00
sqlite3.register_converter( 'BLOB_BYTES', str )
sqlite3.register_converter( 'INTEGER_BOOLEAN', integer_boolean_to_bool )
2014-02-12 23:09:38 +00:00
sqlite3.register_converter( 'TEXT_YAML', yaml.safe_load )