Skip to main content

Python library for the Synology DiskStation APIs

Project description

synopy

Python library for the Synology DiskStation APIs

Description

This project aims to support as many web APIs for the Synology NAS DiskStations, as possible.

Right now the only official API specifications published by Synology(that I know of) are:

  1. the Download Station API here
  2. the File Station API here

This is alpha software and there might be dramatic changes between releases, until it reaches a stable state.

Usage

Let's see some examples.

DownloadStationInfo API

# SYNO.DownloadStation.Info namespace
from synopy.base import Connection
from synopy.api import DownloadStationInfo

# Set up a connection
conn = Connection('http', 'dsm.localdomain', port=5000)
# Authenticate and get an 'sid' cookie
conn.authenticate('admin', 'mypasswd')

# Create an instance of the DownloadStationInfo API
dsinfo_api = DownloadStationInfo(conn, version=1)
# Make a 'getinfo' query
resp = dsinfo_api.get_info()

print(resp.payload)

{
    u'data':
        {
            u'is_manager': True,
            u'version': 2480,
            u'version_string': u'3.4-2480'
        },
    u'success': True
 }

DownloadStationTask API

# SYNO.DownloadStation.Task namespace
from synopy.api import DownloadStationTask

dstask_api = DownloadStationTask(conn, version=1)
# Use the 'list' query method to see the running tasks
resp = dstask_api.list()

print(resp.payload)
{
    u'data':
        {
            u'offeset': 0, # That's not my typo ;)
            u'tasks': [{u'id': u'dbid_6',
                        u'size': u'3260371830',
                        u'status': u'paused',   # <--- it's paused :(
                        u'status_extra': None,
                        u'title': u'TOTALLY.LEGAL.TORRENT.ISO',
                        u'type': u'bt',
                        u'username': u'admin'}],
            u'total': 1
        },
    u'success': True
}

# Let's put it to work!
resp = dstask_api.resume(id='dbid_6')

print(resp.payload)
{
    u'data': [{u'error': 0, u'id': u'dbid_6'}],
    u'success': True
}

# Let's check if indeed the task resumed, but ask for additional info
resp = dstask_api.list(additional='detail,file')
print(resp.payload)
{
    u'data':
        {
            u'offeset': 0,
            u'tasks':
                [{u'additional':
                    {u'detail':
                        {u'connected_leechers': 4,
                         u'connected_seeders': 41,
                         u'create_time': u'1395142482',
                         u'destination': u'DSMFiles/Downloads',
                         u'priority': u'auto',
                         u'total_peers': 0,
                         u'uri': u'magnet:?xt=really_long_magnet_link_here'},
                         u'file': [
                            {u'filename': u'Torrent Downloaded From Legal Torrents.txt',
                             u'priority': u'normal',u'size': u'353',u'size_downloaded': u'353'},
                            {u'filename': u'legaltorrent.iso',u'priority': u'normal',
                             u'size': u'3260370944',u'size_downloaded': u'1872580608'},
                            {u'filename': u'nfo.nfo',u'priority': u'normal',u'size': u'533',
                             u'size_downloaded': u'533'}]
                        },
                     u'id': u'dbid_6',
                     u'size': u'3260371830',
                     u'status': u'downloading',  # <--- yay! :)
                     u'status_extra': None,
                     u'title': u'TOTALLY.LEGAL.TORRENT.ISO',
                     u'type': u'bt',
                     u'username': u'admin'
                    }
                ],
            u'total': 1
        },
    u'success': True
}

Notes

More to come!

Project details


Download files

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

Files for synopy, version 0.0.0.post1
Filename, size File type Python version Upload date Hashes
Filename, size synopy-0.0.0.post1-py2.py3-none-any.whl (7.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size synopy-0.0.0.post1.tar.gz (5.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page