mirror of
https://github.com/N4S4/synology-api.git
synced 2025-08-02 00:23:30 +00:00
downloadstation enchacements
Possibility to set DownloadStation API version 2
This commit is contained in:
19
README.md
19
README.md
@ -127,11 +127,16 @@ I will slowly implement more functions, Synology APIs are plenty, too many for m
|
|||||||
|
|
||||||
This wrapper cover the following APIs for now:
|
This wrapper cover the following APIs for now:
|
||||||
|
|
||||||
| DownloadStation |
|
| DownloadStation |
|
||||||
|-------------------------------|
|
|--------------------------------|
|
||||||
| SYNO.DownloadStation.Info |
|
| SYNO.DownloadStation.Info |
|
||||||
| SYNO.DownloadStation.Schedule |
|
| SYNO.DownloadStation.Schedule |
|
||||||
| SYNO.DownloadStation.Task |
|
| SYNO.DownloadStation.Task |
|
||||||
|
| SYNO.DownloadStation.Statistic |
|
||||||
|
| SYNO.DownloadStation.RSS.Site |
|
||||||
|
| SYNO.DownloadStation.RSS.Feed |
|
||||||
|
| SYNO.DownloadStation.BTSearch |
|
||||||
|
|
||||||
|
|
||||||
| FileStation |
|
| FileStation |
|
||||||
|----------------------------------|
|
|----------------------------------|
|
||||||
@ -314,6 +319,10 @@ To run the following functions you'll have to start the task with the start func
|
|||||||
|
|
||||||
#### DownloadStations functions:
|
#### DownloadStations functions:
|
||||||
|
|
||||||
|
For some of DownloadStation API there is the possibility to set version 2, ex. SYNO.DownloadStation.BTSearch,
|
||||||
|
if you encounter problems you might set ```download_st_version = 2``` during initialization.
|
||||||
|
|
||||||
|
|
||||||
| Function | Description |
|
| Function | Description |
|
||||||
|-----------------------|------------------------------------------|
|
|-----------------------|------------------------------------------|
|
||||||
| get_info() | Download Station info |
|
| get_info() | Download Station info |
|
||||||
|
2
setup.py
2
setup.py
@ -8,7 +8,7 @@ with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='synology-api',
|
name='synology-api',
|
||||||
version='0.6.3',
|
version='0.6.4',
|
||||||
packages=find_packages(exclude=['tests*']),
|
packages=find_packages(exclude=['tests*']),
|
||||||
license='MIT',
|
license='MIT',
|
||||||
description='Python Synology API Wrapper',
|
description='Python Synology API Wrapper',
|
||||||
|
@ -15,7 +15,8 @@ class DownloadStation:
|
|||||||
dsm_version: int = 7,
|
dsm_version: int = 7,
|
||||||
debug: bool = True,
|
debug: bool = True,
|
||||||
otp_code: Optional[str] = None,
|
otp_code: Optional[str] = None,
|
||||||
interactive_output: bool = True
|
interactive_output: bool = True,
|
||||||
|
download_st_version: int = None
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
self.session: syn.Authentication = syn.Authentication(ip_address, port, username, password, secure, cert_verify,
|
self.session: syn.Authentication = syn.Authentication(ip_address, port, username, password, secure, cert_verify,
|
||||||
@ -31,6 +32,12 @@ class DownloadStation:
|
|||||||
self.base_url: str = self.session.base_url
|
self.base_url: str = self.session.base_url
|
||||||
|
|
||||||
self.interactive_output: bool = interactive_output
|
self.interactive_output: bool = interactive_output
|
||||||
|
|
||||||
|
if download_st_version == 2:
|
||||||
|
self.download_st_version = '2'
|
||||||
|
else:
|
||||||
|
self.download_st_version = ''
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def logout(self) -> None:
|
def logout(self) -> None:
|
||||||
@ -104,7 +111,7 @@ class DownloadStation:
|
|||||||
offset: int = 0,
|
offset: int = 0,
|
||||||
limit: int = -1
|
limit: int = -1
|
||||||
) -> dict[str, object] | str:
|
) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': additional_param, 'limit': limit,
|
req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': additional_param, 'limit': limit,
|
||||||
@ -119,7 +126,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, req_param)
|
return self.request_data(api_name, api_path, req_param)
|
||||||
|
|
||||||
def tasks_info(self, task_id, additional_param: Optional[str | list[str]] = None) -> dict[str, object] | str:
|
def tasks_info(self, task_id, additional_param: Optional[str | list[str]] = None) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
req_param = {'version': info['maxVersion'], 'method': 'getinfo', 'id': task_id, 'additional': additional_param}
|
req_param = {'version': info['maxVersion'], 'method': 'getinfo', 'id': task_id, 'additional': additional_param}
|
||||||
@ -136,7 +143,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, req_param)
|
return self.request_data(api_name, api_path, req_param)
|
||||||
|
|
||||||
def create_task(self, uri, additional_param: Optional[dict[str, object]] = None) -> dict[str, object] | str:
|
def create_task(self, uri, additional_param: Optional[dict[str, object]] = None) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
req_param = {'version': info['maxVersion'], 'method': 'create', 'uri': uri}
|
req_param = {'version': info['maxVersion'], 'method': 'create', 'uri': uri}
|
||||||
@ -148,7 +155,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, req_param)
|
return self.request_data(api_name, api_path, req_param)
|
||||||
|
|
||||||
def delete_task(self, task_id: str, force: bool = False) -> dict[str, object] | str:
|
def delete_task(self, task_id: str, force: bool = False) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'delete', 'id': task_id,
|
param = {'version': info['maxVersion'], 'method': 'delete', 'id': task_id,
|
||||||
@ -160,7 +167,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def pause_task(self, task_id: str) -> dict[str, object] | str:
|
def pause_task(self, task_id: str) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'pause', 'id': task_id}
|
param = {'version': info['maxVersion'], 'method': 'pause', 'id': task_id}
|
||||||
@ -171,7 +178,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def resume_task(self, task_id: str) -> dict[str, object] | str:
|
def resume_task(self, task_id: str) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'resume', 'id': task_id}
|
param = {'version': info['maxVersion'], 'method': 'resume', 'id': task_id}
|
||||||
@ -182,7 +189,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def edit_task(self, task_id: str, destination: str = 'sharedfolder') -> dict[str, object] | str:
|
def edit_task(self, task_id: str, destination: str = 'sharedfolder') -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.Task'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.Task'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'edit', 'id': task_id, 'destination': destination}
|
param = {'version': info['maxVersion'], 'method': 'edit', 'id': task_id, 'destination': destination}
|
||||||
@ -232,7 +239,7 @@ class DownloadStation:
|
|||||||
offset: Optional[int] = None,
|
offset: Optional[int] = None,
|
||||||
limit: Optional[int] = None
|
limit: Optional[int] = None
|
||||||
) -> dict[str, object] | str:
|
) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.RSS.Feed'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.RSS.Feed'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'list', 'id': rss_id}
|
param = {'version': info['maxVersion'], 'method': 'list', 'id': rss_id}
|
||||||
@ -251,7 +258,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def start_bt_search(self, keyword: Optional[str] = None, module: str = 'all') -> dict[str, object] | str:
|
def start_bt_search(self, keyword: Optional[str] = None, module: str = 'all') -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.BTSearch'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.BTSearch'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'start'}
|
param = {'version': info['maxVersion'], 'method': 'start'}
|
||||||
@ -286,7 +293,7 @@ class DownloadStation:
|
|||||||
filter_category: Optional[str] = None,
|
filter_category: Optional[str] = None,
|
||||||
filter_title: Optional[str] = None
|
filter_title: Optional[str] = None
|
||||||
) -> dict[str, object] | str:
|
) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.BTSearch'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.BTSearch'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'list', 'taskid': taskid}
|
param = {'version': info['maxVersion'], 'method': 'list', 'taskid': taskid}
|
||||||
@ -304,7 +311,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def get_bt_search_category(self) -> dict[str, object] | str:
|
def get_bt_search_category(self) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.BTSearch'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.BTSearch'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'get'}
|
param = {'version': info['maxVersion'], 'method': 'get'}
|
||||||
@ -312,7 +319,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def clean_bt_search(self, taskid: Optional[str | list[str]] = None) -> dict[str, object] | str:
|
def clean_bt_search(self, taskid: Optional[str | list[str]] = None) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.BTSearch'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.BTSearch'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'clean', 'taskid': taskid}
|
param = {'version': info['maxVersion'], 'method': 'clean', 'taskid': taskid}
|
||||||
@ -329,7 +336,7 @@ class DownloadStation:
|
|||||||
return self.request_data(api_name, api_path, param)
|
return self.request_data(api_name, api_path, param)
|
||||||
|
|
||||||
def get_bt_module(self) -> dict[str, object] | str:
|
def get_bt_module(self) -> dict[str, object] | str:
|
||||||
api_name = 'SYNO.DownloadStation.BTSearch'
|
api_name = 'SYNO.DownloadStation' + self.download_st_version + '.BTSearch'
|
||||||
info = self.download_list[api_name]
|
info = self.download_list[api_name]
|
||||||
api_path = info['path']
|
api_path = info['path']
|
||||||
param = {'version': info['maxVersion'], 'method': 'getModule'}
|
param = {'version': info['maxVersion'], 'method': 'getModule'}
|
||||||
|
Reference in New Issue
Block a user