Skip to main content

Python Synology API Wrapper

Project description

synology-api Pepy Total Downloads Website

GitHub last commit GitHub License

Synology Wrapper

If you find yourself here, most probably you are trying to develop something for your NAS, this wrapper might come to your help to build your script.

I would like to specify that I do this for hobby as is my passion and in my little free time.

Said this, there is no warranties chained and this library is provided "As Is", you will find many things can be simplified, and I slowly will but feel free to Contribute.

Premise

I've tried this wrapper only with python3. I do not know if it actually runs with previous versions

Before opening an issue make sure you do your own research, if you are not sure, write me.

Installation

The package is distributed via pip3, but it can also be installed from source.

pip3 install synology-api

or

pip3 install git+https://github.com/N4S4/synology-api

Basic Usage

Here is a basic example on how to use the package, check Getting Started - Basic Usage for more details.

from synology_api.filestation import FileStation
from synology_api.downloadstation import DownloadStation

fs = FileStation(
    'Synology Ip',
    'Synology Port',
    'Username',
    'Password',
    secure=False,
    cert_verify=False,
    dsm_version=7,
    debug=True,
    otp_code=None
)

ds = DownloadStation(
    'Synology Ip',
    'Synology Port',
    'Username',
    'Password',
    secure=False,
    cert_verify=False,
    dsm_version=7,
    debug=True,
    otp_code=None
)

fs_info = fs.get_info()
ds_info = ds.get_info()

For NAS devices reachable through QuickConnect, pass the NAS QuickConnect ID instead of an IP address and port. QuickConnect uses HTTPS automatically.

fs = FileStation(
    quickconnect_id='QuickConnect ID',
    username='Username',
    password='Password',
    cert_verify=False,
    dsm_version=7,
    debug=True,
    otp_code=None
)

Async Client (beta)

Every existing synology-api class can be made async with a single wrapper — no extra dependencies:

import asyncio
from synology_api.filestation import FileStation
from synology_api.async_client import AsyncClient

async def main():
    fs = AsyncClient(FileStation("192.168.1.x", "5001", "admin", "pass",
                                  secure=True, cert_verify=False, dsm_version=7))

    # All methods automatically awaitable
    info = await fs.get_info()
    files = await fs.get_file_list("/home")

    # Run parallel calls
    a, b, c = await asyncio.gather(
        fs.get_file_list("/home"),
        fs.get_file_list("/photo"),
        fs.get_file_list("/music"),
    )

asyncio.run(main())

Check the Async Client documentation for details.

Available Functions

At the moment there are around +300 APIs implemented with countless methods for each, the majority is not documented, but some are.

You can find a exhaustive list here: APIs - Supported APIs

Feeling kind?

If this code helps and you wish to support me:

Community

See Related projects

If you want to show your project in this section, write me.

Bugs

Maybe?

I hate bugs..

Well report them please (if you'll ever use this code)

Conclusions

There is still a lot to implement.

The code is probably in some parts twisted, I will try to optimize it at best.

Contributing

Just Don't Be Scared. Check Contribute - Contribution 101 for useful information.

Author

  • Renato Visaggio - Initial Work - N4S4

Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

synology_api-0.9.1.tar.gz (279.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synology_api-0.9.1-py3-none-any.whl (276.3 kB view details)

Uploaded Python 3

File details

Details for the file synology_api-0.9.1.tar.gz.

File metadata

  • Download URL: synology_api-0.9.1.tar.gz
  • Upload date:
  • Size: 279.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for synology_api-0.9.1.tar.gz
Algorithm Hash digest
SHA256 97325e5f623b8f74e741f665abcb95aca46d32d09e93451ea9d0e0132e095237
MD5 b441247a773040ad8e224436ed61d054
BLAKE2b-256 ac501e560e0c1b0c423e14de3a73d58bd5fc66c595a2040b2fae319d6be408a1

See more details on using hashes here.

File details

Details for the file synology_api-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: synology_api-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 276.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for synology_api-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 94351eabab49dd5259b8766d8468b645c0fbee35534639246c40bcd59012fed6
MD5 b1bc1cf2f1c19915de20f69fdd94643b
BLAKE2b-256 b01bb097e335cacddbd5de40071a07435cbcbcf2561be23917ff721b17202d91

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page