downloadstation enchacements

Possibility to set DownloadStation API version 2
This commit is contained in:
Renato
2024-01-10 11:09:21 +01:00
parent 130974127b
commit e5c3a2da20
3 changed files with 36 additions and 20 deletions

View File

@ -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 |

View File

@ -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',

View File

@ -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'}