Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 3.44 KB

README.md

File metadata and controls

51 lines (38 loc) · 3.44 KB

FanSyn

Fancy audio player for Synology DiskStation NAS content. This application arises from the need to find a better user experience and user interface compared to the commercial app provided by Synology: DSAudio. I hope it will be useful for many users!

🚧 Work in progress 🚧

Tech-stack

Utils

  • Detekt: Code smell analysis for Kotlin projects
  • Timber: Custom logger on top of Android's normal Log class

Architecture

The architecture used in this project is a minimal expression of the Flux architecture. Specifically, the implementation of the Mini open source repo is used. The following image briefly shows the components that make up the application architecture and how they communicate with the Mini components. You can read more about this architecture in its repository documentation.

Architecture

Third party dependencies

Synology API

Synology Inc. is a Taiwanese corporation that specializes in network-attached storage (NAS) appliances. This application needs to ask for the Synology API to login in platform, get the list of songs, stream the audio content, etc. Synology provides a developer center with API documentation and tools to facilitate the development of modules within the ecosystem.

Usage

In order to build and test the application, while the application is being developed, it is needed to specify two values in a settings.properties files:

  • Your Synology NAS DiskStation URL:
synologyApiBaseUrl=<YOUR_SYNOLOGY_DISKSTATION_URL>

You can use both the LAN IP or the QuickConnect URL. QuickConnectURL

  • The SID obtained in the login request response:
synologyLoginApiSid=<YOUR_SYNOLOGY_LOGIN_SID>

You can retrieve it in the response of the login request using the Synology NAS API and adding your account name and password:

<YOUR_SYNOLOGY_DISKSTATION_URL>webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=<YOUR_ACCOUNT>&passwd=<YOUR_PASSWORD>&format=cookie