Files
synology-drive-api/synology_drive_api/utils.py
2023-10-30 10:29:29 +08:00

76 lines
2.3 KiB
Python

import urllib.parse
import warnings
import functools
import simplejson as json
from selenium import webdriver
def get_local_ip_by_quick_connect_id(q_id):
"""
# if nas local ip changed, get ip according to quick_connect
# see https://quickconnect.to/
:param q_id: QuickConnect ID
:return:
"""
url = f"https://{q_id}.quickconnect.to/"
driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.get(url)
driver.implicitly_wait(20)
cookie = driver.get_cookies()
dict1 = cookie[2]
value1 = dict1['value']
return value1.split('ipv4.')[1].split('.wan')[0]
def form_urlencoded(data: dict) -> str:
"""
Generate urlencoded data for body data
:param data: ready for post data
:return: return form data
"""
data_list = []
for key, value in data.items():
value_encode = urllib.parse.quote(json.dumps(value) if not isinstance(value, str) else value, safe='')
# [key, '=', value_encode]
data_list.append(f"{key}={value_encode}")
urlencoded_data = '&'.join(data_list)
return urlencoded_data
def concat_drive_path(dest_path: str, end_point: str, default_folder: str = 'mydrive') -> str:
"""
Generate file path
:param dest_path: parent path
:param end_point: file_name or folder_name
:param default_folder: if dest_path is None, use your drive home folder instead
:return:
"""
if dest_path is None:
display_path = f"/{default_folder}/{end_point}"
elif dest_path.startswith('id'):
display_path = f"{dest_path}/{end_point}"
else:
# add start position /
dest_path = f"/{dest_path}" if not dest_path.startswith('/') else dest_path
# add end position /
dest_path = f"{dest_path}/" if not dest_path.endswith('/') else dest_path
display_path = f"{dest_path}{end_point}"
return display_path
def deprecate(alt_func_names):
def outer_wrapper(f):
@functools.wraps(f)
def inner(*args, **kwargs):
hint = ', '.join(alt_func_names)
warnings.warn(
f'[Deprecation] {f.__name__} will be deprecated in the future.'
f'Substitutions are: {hint}',
FutureWarning
)
return f(*args, **kwargs)
return inner
return outer_wrapper