Skip to content

Commit

Permalink
Added get split delivery data and downloads split apks.
Browse files Browse the repository at this point in the history
  • Loading branch information
GoneTone committed Sep 10, 2021
1 parent 9d49c86 commit 8bba864
Show file tree
Hide file tree
Showing 5 changed files with 159 additions and 13 deletions.
55 changes: 46 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ gpAPI.setCountryCode('tw')
gpAPI.setLanguageCode('zh-TW')
```

### Retrieving application details
### Get App Details

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -104,7 +104,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Retrieving application details in-bulk
### Get Bulk Details

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -115,7 +115,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Searching for an app
### App Search

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -126,7 +126,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Retrieving download data for an app
### Get Download Info

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -137,7 +137,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Retrieving the link to an app package
### Get Download Apk Url

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -148,7 +148,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Downloading an app package
### Download Apk

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -158,7 +158,44 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Retrieve additional files
### Get Split Delivery Data Info

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

const splitDeliveryDataInfo = await gpAPI.splitDeliveryDataInfo('com.supercell.clashofclans')
console.log(splitDeliveryDataInfo)
})
```

### Get Download Split Apks Name And Url

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

const downloadSplitApksNameAndUrl = await gpAPI.downloadSplitApksNameAndUrl('com.supercell.clashofclans')
console.log(downloadSplitApksNameAndUrl)
})
```

### Download Split Apks

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

await gpAPI.downloadSplitApks('com.supercell.clashofclans', 'save_folder')
})
```

PS:

- You can use [Split APKs Installer (SAI)](https://play.google.com/store/apps/details?id=com.aefyr.sai) this app to install split apks.
- Don’t forget to use `gpAPI.downloadApk()` to download the main apk, then install together.

### Get Additional File Info

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -169,7 +206,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Retrieving links to additional files
### Get Download Additional File Urls

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -180,7 +217,7 @@ gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) =
})
```

### Downloading the additional files
### Download Additional Files

```javascript
gpAPI.getGoogleToken('Your OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand Down
41 changes: 39 additions & 2 deletions README_ZH-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token)
})
```

### 取得下載 Apk 網址
### 取得下載 Apk 的網址

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand All @@ -158,6 +158,43 @@ gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token)
})
```

### 取得拆分交付資料資訊

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

const splitDeliveryDataInfo = await gpAPI.splitDeliveryDataInfo('com.supercell.clashofclans')
console.log(splitDeliveryDataInfo)
})
```

### 取得下載拆分 Apk 的名稱和網址

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

const downloadSplitApksNameAndUrl = await gpAPI.downloadSplitApksNameAndUrl('com.supercell.clashofclans')
console.log(downloadSplitApksNameAndUrl)
})
```

### 下載拆分 Apks

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
await gpAPI.googleAuth(token)

await gpAPI.downloadSplitApks('com.supercell.clashofclans', 'save_folder')
})
```

PS:

- 您可以使用 [Split APKs Installer (SAI)](https://play.google.com/store/apps/details?id=com.aefyr.sai) 這個 App 來安裝拆分的 Apks。
- 別忘了使用 `gpAPI.downloadApk()` 下載主 Apk,再一同安裝。

### 取得附加文件資訊

```javascript
Expand All @@ -169,7 +206,7 @@ gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token)
})
```

### 取得下載附加文件網址
### 取得下載附加文件的網址

```javascript
gpAPI.getGoogleToken('您的 OAuth2 Token', 'save/token.txt').then(async (token) => {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gonetone/google-play-api",
"version": "1.0.3",
"version": "1.1.0",
"description": "Access Google Play by logging in and making requests as an Android device!",
"main": "index.js",
"scripts": {
Expand Down
64 changes: 63 additions & 1 deletion src/GooglePlayAPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,69 @@ class GooglePlayAPI {
}
}

/**
* Get Split Delivery Data Info
*
* @param {String} packageName App Package Name
*
* @returns {Promise<Object>}
*/
async splitDeliveryDataInfo (packageName) {
try {
const downloadInfo = await this.downloadInfo(packageName)

// noinspection JSUnresolvedVariable
return downloadInfo.splitDeliveryData
} catch (e) {
throw Error(`Get "${packageName}" Split Delivery Data Info Failed: ${(typeof e.response !== 'undefined') ? e.response.data : e.message}`)
}
}

/**
* Get Download Split Apks Name And Url
*
* @param {String} packageName App Package Name
*
* @returns {Promise<Object>}
*/
async downloadSplitApksNameAndUrl (packageName) {
try {
const splitDeliveryData = await this.splitDeliveryDataInfo(packageName)

return map(splitDeliveryData, data => {
return {
name: data.name,
downloadUrl: data.downloadUrl
}
})
} catch (e) {
throw Error(`Get "${packageName}" Download Split Apks Name And Url Failed: ${(typeof e.response !== 'undefined') ? e.response.data : e.message}`)
}
}

/**
* Download Split Apks
*
* @param {String} packageName App Package Name
* @param {String} outputPath Output Save Path
* @param {String|null} outputFileNamePrefixe Output File Save Name Prefixe (Default App Package Name)
*
* @returns {Promise<void>}
*/
async downloadSplitApks (packageName, outputPath, outputFileNamePrefixe = null) {
try {
const fileName = outputFileNamePrefixe ?? packageName

const downloadSplitApksNameAndUrl = await this.downloadSplitApksNameAndUrl(packageName)
for (const data of downloadSplitApksNameAndUrl) {
// noinspection JSUnresolvedVariable
await downloadFile(data.downloadUrl, outputPath, `${fileName}-${data.name}.apk`)
}
} catch (e) {
throw Error(`Download "${packageName}" Split Apks Failed: ${(typeof e.response !== 'undefined') ? e.response.data : e.message}`)
}
}

/**
* Get Additional File Info
*
Expand Down Expand Up @@ -447,7 +510,6 @@ class GooglePlayAPI {
try {
const additionalFileInfo = await this.additionalFileInfo(packageName)

// noinspection JSUnresolvedVariable
return map(additionalFileInfo, 'downloadUrl')
} catch (e) {
throw Error(`Get "${packageName}" Download Additional File Urls Failed: ${(typeof e.response !== 'undefined') ? e.response.data : e.message}`)
Expand Down
10 changes: 10 additions & 0 deletions tests/GooglePlayAPI.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,16 @@ test('Get Download Apk Url', async () => {
expect(typeof downloadApkUrl).toBe('string')
}, 100000)

test('Get Split Delivery Data Info', async () => {
const splitDeliveryDataInfo = await gpAPI.splitDeliveryDataInfo('com.supercell.clashofclans')
expect(typeof splitDeliveryDataInfo).toBe('object')
}, 100000)

test('Get Download Split Apks Name And Url', async () => {
const downloadSplitApksNameAndUrl = await gpAPI.downloadSplitApksNameAndUrl('com.supercell.clashofclans')
expect(typeof downloadSplitApksNameAndUrl).toBe('object')
}, 100000)

test('Get Additional File Info', async () => {
const additionalFileInfo = await gpAPI.additionalFileInfo('com.github.android')
expect(typeof additionalFileInfo).toBe('object')
Expand Down

0 comments on commit 8bba864

Please sign in to comment.