FIX PICKLE
This commit is contained in:
@@ -1,57 +1,35 @@
|
|||||||
import socket
|
import socket
|
||||||
import pickle
|
import json
|
||||||
import base64
|
import base64
|
||||||
import ipaddress
|
import ipaddress
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
|
||||||
def load_artwork_settings(settings_data):
|
def load_artwork_settings(settings_data):
|
||||||
try:
|
|
||||||
if not settings_data:
|
if not settings_data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
padding = len(settings_data) % 4
|
# Пробуем base64 + JSON
|
||||||
if padding:
|
try:
|
||||||
settings_data_padded = settings_data + '=' * (4 - padding)
|
raw = base64.b64decode(settings_data)
|
||||||
else:
|
return json.loads(raw)
|
||||||
settings_data_padded = settings_data
|
|
||||||
|
|
||||||
raw = base64.b64decode(settings_data_padded)
|
|
||||||
if raw[:2] in (b'\x80\x03', b'\x80\x04', b'\x80\x05', b'\x80\x02'):
|
|
||||||
settings = pickle.loads(raw)
|
|
||||||
if hasattr(settings, '__dict__'):
|
|
||||||
return settings.__dict__
|
|
||||||
elif isinstance(settings, dict):
|
|
||||||
return settings
|
|
||||||
else:
|
|
||||||
return {'data': str(settings)}
|
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
# Просто JSON
|
||||||
|
try:
|
||||||
|
return json.loads(settings_data)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Fallback — plain text description
|
||||||
|
return {'description': settings_data}
|
||||||
|
except:
|
||||||
return {'description': settings_data}
|
return {'description': settings_data}
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
return {'error': str(e)}
|
|
||||||
|
|
||||||
|
|
||||||
def save_artwork_description(description):
|
def save_artwork_description(description):
|
||||||
if not description:
|
if not description:
|
||||||
return None
|
return None
|
||||||
|
return json.dumps({'description': description})
|
||||||
try:
|
|
||||||
padding = len(description) % 4
|
|
||||||
if padding:
|
|
||||||
padded = description + '=' * (4 - padding)
|
|
||||||
else:
|
|
||||||
padded = description
|
|
||||||
|
|
||||||
raw = base64.b64decode(padded)
|
|
||||||
if raw[:2] in (b'\x80\x03', b'\x80\x04', b'\x80\x05', b'\x80\x02'):
|
|
||||||
return description
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return description
|
|
||||||
|
|
||||||
|
|
||||||
class ArtworkConfig:
|
class ArtworkConfig:
|
||||||
|
|||||||
Reference in New Issue
Block a user