# @kkboxorg/kkbox-javascript-developer-sdk

> KKBOX Open API developer SDK for JavaScript. Use it to easily access KKBOX open API to get various metadata about KKBOX's tracks, albums, artists, playlists and stations.

Latest version **1.0.1** (published 2017-11-28) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @kkboxorg/kkbox-javascript-developer-sdk
pnpm add @kkboxorg/kkbox-javascript-developer-sdk
yarn add @kkboxorg/kkbox-javascript-developer-sdk
bun add @kkboxorg/kkbox-javascript-developer-sdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2017-11-28 |
| First published | 2017-10-26 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 (+25 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 67 |
| Author | KKBOX |
| Maintainers | willyliu |
| Keywords | KKBOX, OpenAPI, Open, API |

## Links

- npm: https://www.npmjs.com/package/@kkboxorg/kkbox-javascript-developer-sdk
- Repository: https://github.com/KKBOX/OpenAPI-JavaScript
- Homepage: https://github.com/KKBOX/OpenAPI-JavaScript#readme
- Issues: https://github.com/KKBOX/OpenAPI-JavaScript/issues
- npm.io page: https://npm.io/package/@kkboxorg/kkbox-javascript-developer-sdk

## Dependencies (2)

- [axios](https://npm.io/package/axios.md) ^0.15.3
- [babel-polyfill](https://npm.io/package/babel-polyfill.md) ^6.23.0

## Recent versions

- 1.0.1 (latest) — 2017-11-28
- 1.0.0 — 2017-10-26

## README

# KKBOX Open API Developer SDK for JavaScript
The SDK for accessing various metadata of KKBOX tracks, albums, artists, playlists and stations.

### npm install
```
npm install @kkboxorg/kkbox-javascript-developer-sdk
```

### Source Install 
```
npm install
```

### Build SDK
```
npm run build
```

### Test
For testing, you should first browse [https://developer.kkbox.com/](https://developer.kkbox.com/) and create an developer account, then create an app to get client id and client secret for that account.

Then, create a file name `client_secrets.json`, put it in the `test` directory and write the client id and client secret in it. The content will be like:

```
{
    "kkbox_sdk": {
        "client_id": "YOUR CLIENT ID",
        "client_secret": "YOUR CLIENT SECRET"
    }
}
```

And then we can run the tests.

```
npm run test
```

## How to use the SDK
There are two classes Auth and Api and you should initialize an Auth object by client id and secret.

```
import {Auth} from 'kkbox-javascript-developer-sdk'

const auth = new Auth(client_id, client_secret)
```

Then use the auth object to get access token.

```
auth.clientCredentialsFlow.fetchAccessToken().then(response => {
    const access_token = response.data.access_token
})
```

After getting access token, use it to initialize Api object.

```
import {Api} from 'kkbox-javascript-developer-sdk'

const api = new Api(access_token)
```

Now you can use various fetcher object to fetch data.

```
api.searchFetcher.setSearchCriteria('五月天 派對動物', 'track').fetchSearchResult().then(response => {
	console.log(response.data)
})
```

Most methods return paged result and we can use the `fetchNextPage` method to get the next page of result.

```
api.searchFetcher.setSearchCriteria('五月天 派對動物', 'track').fetchSearchResult().then(response => {
    console.log(response.data)
	api.searchFetcher.fetchNextPage(response).then(response => {
        console.log(response.data)
    })
})
```

All the code.

```
import {Auth} from 'kkbox-javascript-developer-sdk'
import {Api} from 'kkbox-javascript-developer-sdk'

const auth = new Auth(client_id, client_secret)
auth.clientCredentialsFlow.fetchAccessToken().then(response => {
    const access_token = response.data.access_token
    const api = new Api(access_token)    
    api.searchFetcher.setSearchCriteria('五月天 派對動物', 'track').fetchSearchResult().then(response => {
	    console.log(response.data)
        api.searchFetcher.fetchNextPage(response).then(response => {
            console.log(response.data)
        })        
    })
})
```
### [API Documentation](https://kkbox.gelato.io)

---
_Source: https://npm.io/package/@kkboxorg/kkbox-javascript-developer-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
