115 Commits
v21 ... v23

Author SHA1 Message Date
github-actions[bot]
79965ac73d Update git tree hash 2021-06-29 05:27:37 +00:00
StageGuard
ee925ccc72 new feature & version 23 2021-06-29 13:27:06 +08:00
github-actions[bot]
fe4263fc0d Update git tree hash 2021-06-05 16:02:01 +00:00
StageGuard
7a658a9291 upload user shared sheet. 2021-06-06 00:01:12 +08:00
github-actions[bot]
e91a30536e Update git tree hash 2021-05-25 05:56:21 +00:00
StageGuard
ef0b92b7a3 Upload user shared sheet. 2021-05-25 13:55:48 +08:00
github-actions[bot]
c9c957efae Update git tree hash 2021-05-09 11:59:10 +00:00
StageGuard
9619a912a7 Upload user shared sheets. 2021-05-09 19:58:36 +08:00
github-actions[bot]
5db393be2e Update git tree hash 2021-05-09 11:19:01 +00:00
StageGuard
6e5d34c4ec Merge branch 'master' of github.com:StageGuard/SkyAutoPlayerScript into master 2021-05-09 19:18:24 +08:00
StageGuard
0af7dfef95 Upload user shared sheets. 2021-05-09 19:18:16 +08:00
github-actions[bot]
3a3d46539b Update git tree hash 2021-05-02 04:15:02 +00:00
StageGuard
7b5f6fbbf2 Upload user shared sheet. 2021-05-02 12:14:23 +08:00
StageGuard
d3f46df074 update workflow 2021-05-02 12:03:57 +08:00
github-actions[bot]
81cde4b7a2 Update git tree hash 2021-04-26 23:03:37 +00:00
StageGuard
c3b1eb0101 Merge branch 'master' of github.com:StageGuard/SkyAutoPlayerScript into master 2021-04-27 07:03:08 +08:00
StageGuard
bb878c5581 test workflow 2021-04-27 07:03:03 +08:00
github-actions[bot]
05cd1e8692 Update git tree hash 2021-04-26 12:22:59 +00:00
StageGuard
2a1e8a6fac test workflow 2021-04-26 20:22:19 +08:00
github-actions[bot]
43e18fbe60 Update git tree hash 2021-04-26 12:15:06 +00:00
StageGuard
38e59830f0 Test workflow 2021-04-26 20:14:23 +08:00
github-actions[bot]
3e8a31f9a2 Update git tree hash 2021-04-26 12:05:43 +00:00
StageGuard
7f7aeab1ea Update workflow 2021-04-26 20:05:06 +08:00
StageGuard
bd8a7d0429 I forget to git pull(X 2021-04-26 20:04:55 +08:00
StageGuard
9f443c01d7 Upload user shared sheet 2021-04-26 15:47:47 +08:00
github-actions[bot]
2fb30a51bb Update git tree hash 2021-04-24 02:35:21 +00:00
StageGuard
64508c41fb remove redundant line break in gitVersion 2021-04-24 10:34:48 +08:00
github-actions[bot]
3405e8d01b Update git tree hash 2021-04-24 01:50:57 +00:00
StageGuard
d8e8af591d *** 2021-04-24 09:49:50 +08:00
StageGuard
5feb691108 fk u @sand4rt 2021-04-24 09:47:56 +08:00
StageGuard
4caa1e08cc i dont know why i should commit it 2021-04-24 09:34:13 +08:00
StageGuard
5270d46b39 ??? 2021-04-24 09:31:12 +08:00
StageGuard
5f793165d2 Update workflow 2021-04-20 14:53:28 +08:00
github-actions[bot]
276f73887c Update git tree hash 2021-04-20 06:45:04 +00:00
StageGuard
8d22952980 Update workflow 2021-04-20 14:44:10 +08:00
StageGuard
ba200fcc3b Add action that auto sync repo to gitee 2021-04-19 13:49:40 +08:00
StageGuard
6145094332 Upload user shared sheets. & Reformat encoding. 2021-04-19 13:08:37 +08:00
StageGuard
1fe47af144 Upload user shared sheets. & Reformat encoding. 2021-04-19 13:06:58 +08:00
StageGuard
9fc9aa9383 Update gitVersion 2021-03-30 17:53:08 +08:00
StageGuard
662b1b5b8f wo shi ge san bing 2021-03-30 17:52:33 +08:00
StageGuard
90764f9ddd Update gitVersion 2021-03-30 17:42:20 +08:00
StageGuard
aecc5683d1 override name in sheet file. 2021-03-30 17:41:47 +08:00
StageGuard
4116a387b8 Upload user shared sheets 2021-03-30 17:41:02 +08:00
StageGuard
e7270bac2a Update README.md 2021-03-28 18:28:05 +08:00
StageGuard
6202bfe046 fix social link desc 2021-03-18 16:52:03 +08:00
StageGuard
70bdb18519 fix social link desc 2021-03-18 16:51:48 +08:00
StageGuard
94f04bf4be update user shared sheets. 2021-03-18 16:48:35 +08:00
StageGuard
ba919201ac update user shared sheets. 2021-03-18 16:48:16 +08:00
StageGuard
f7a995a6fc update gitVersion 2021-03-07 10:09:05 +08:00
StageGuard
6c7abdeec3 update user shared sheets 2021-03-07 10:07:20 +08:00
StageGuard
3c6fbf998f typo 2021-02-28 11:30:54 +08:00
StageGuard
6d4f694535 improve translation 2021-02-25 11:40:13 +08:00
StageGuard
dba53ba8aa improve translation 2021-02-25 11:39:50 +08:00
StageGuard
5972f6afef beautiful badge 2021-02-25 11:22:42 +08:00
StageGuard
6eb6c89cba upload user shared sheet. 2021-02-24 16:52:49 +08:00
StageGuard
9fa6f03a36 upload user shared sheet. 2021-02-24 16:52:32 +08:00
StageGuard
605ab7ba1b update user_agreement 2021-02-24 16:43:54 +08:00
StageGuard
14015d32d1 remove gitee source 2021-02-24 16:24:45 +08:00
StageGuard
c3e337d8b3 remove gitee source 2021-02-24 16:24:25 +08:00
StageGuard
0bf2a612c2 update gitVersion 2021-02-24 15:43:50 +08:00
StageGuard
b6a259b6ce update .gitignore 2021-02-24 14:51:41 +08:00
StageGuard
1699065b50 update .gitignore 2021-02-24 14:25:28 +08:00
StageGuard
52df50f618 Add codefactor badage and contribution tip. 2021-02-22 20:23:15 +08:00
StageGuard
fc0d773cfe Correct info 2021-02-08 21:29:57 +08:00
StageGuard
adb40120b2 Upload user shared sheets. 2021-02-08 21:28:40 +08:00
StageGuard
e031e7206a Separate English and Chinese in README.md 2021-01-29 14:02:05 +08:00
StageGuard
1dedb59383 Upload user shared sheet. 2021-01-19 23:05:08 +08:00
StageGuard
745c7f4553 upload user shared sheets. 2021-01-18 20:44:35 +08:00
StageGuard
fa45e5b380 Upload user shared sheets. 2021-01-10 00:07:40 +08:00
StageGuard
231726a627 nothing to say 2021-01-08 13:35:13 +08:00
StageGuard
2dc3dc776e Upload user shared sheet 2021-01-03 15:38:49 +08:00
StageGuard
f01999b861 Upload user shared sheets. 2021-01-02 18:00:28 +08:00
StageGuard
05a36fc5f6 Fix error while prasing songnotes 2021-01-02 17:43:03 +08:00
StageGuard
ded30f266e Fix error while prasing songnotes 2021-01-02 17:42:37 +08:00
StageGuard
4aa6bc9e5d close window when click social link 2021-01-02 17:31:13 +08:00
StageGuard
bf9bb40868 close window when click social link 2021-01-02 17:30:37 +08:00
StageGuard
f70f3ac9eb fix mail link 2021-01-02 17:28:18 +08:00
StageGuard
8524a2835a Add mail link support 2021-01-02 17:24:10 +08:00
StageGuard
b6a0865731 Add mail link support 2021-01-02 17:23:46 +08:00
StageGuard
051695afe6 Upload resource 2021-01-02 17:19:15 +08:00
StageGuard
26ee689227 Upload user shared sheet && Add mail link support 2021-01-02 17:04:38 +08:00
StageGuard
91192550d9 Add resources 2021-01-02 16:30:48 +08:00
StageGuard
f311028dfe Update copyright time 2021-01-01 00:12:27 +08:00
StageGuard
d609f8d93a Update copyright time 2021-01-01 00:10:19 +08:00
StageGuard
64cc564759 Upload user shared sheet. 2020-12-31 16:55:29 +08:00
StageGuard
7396e87a28 Merge branch 'master' of github.com:StageGuard/SkyAutoPlayerScript into master 2020-12-31 11:54:08 +08:00
StageGuard
edd6ff08a5 Upload user shared sheet. 2020-12-31 11:53:54 +08:00
StageGuard
191c860c20 Update README.md 2020-12-28 11:00:05 +08:00
StageGuard
858710ba2a Fix linebreak 2020-12-27 23:38:27 +08:00
StageGuard
1ceaa898df rewrite README.md 2020-12-27 23:35:09 +08:00
StageGuard
91efbd8f33 rewrite README.md 2020-12-27 23:32:51 +08:00
StageGuard
9d5fc4655b rewrite README.md 2020-12-27 23:26:13 +08:00
StageGuard
480a6e90ab Upload user shared sheet. 2020-12-27 21:35:21 +08:00
StageGuard
c407471e09 Change diamond suspension color 2020-12-23 20:04:37 +08:00
StageGuard
a08a46eccc Change diamond suspension color 2020-12-23 20:04:05 +08:00
StageGuard
60c9eae07d Change diamond suspension style 2020-12-23 19:57:51 +08:00
StageGuard
c987172e63 Change 2020-12-23 19:57:10 +08:00
StageGuard
c5a1ac2040 Change 2020-12-23 19:57:04 +08:00
StageGuard
a1b910112c change range 2020-12-23 12:24:11 +08:00
StageGuard
214fdcc051 change range 2020-12-23 12:23:49 +08:00
StageGuard
d591f00b2d change range 2020-12-23 12:22:22 +08:00
StageGuard
6e1d3dbca5 change range 2020-12-23 12:21:56 +08:00
StageGuard
38b1070cd4 change range 2020-12-23 12:18:54 +08:00
StageGuard
a9a82dfeb4 change range 2020-12-23 12:18:24 +08:00
StageGuard
52883882b9 Update version 22 2020-12-22 23:50:57 +08:00
StageGuard
6688fddbff Update version 22 2020-12-22 23:50:30 +08:00
StageGuard
9132a29653 Test upgrade language 2020-12-22 20:08:51 +08:00
StageGuard
ea984627b6 Update note 2020-12-22 20:05:21 +08:00
StageGuard
754ff3ec65 Script can update language version 2020-12-22 19:59:47 +08:00
StageGuard
6a364f8f4d Script can update language version 2020-12-22 19:59:20 +08:00
StageGuard
b35e13f52e Update lang 2020-12-22 19:57:43 +08:00
StageGuard
fba6f91a69 Add version property for language 2020-12-22 19:46:18 +08:00
StageGuard
d2c2fd0cf6 Merge branch 'master' of github.com:StageGuard/SkyAutoPlayerScript into master 2020-12-22 19:27:46 +08:00
StageGuard
7345ea7afd Add version property for language 2020-12-22 19:26:37 +08:00
StageGuard
c3f28c7f2a Update contribute-translation.md 2020-12-22 19:17:09 +08:00
62 changed files with 2257 additions and 931 deletions

48
.github/workflows/syncToGitee.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Auto update commit and sync to gitee
on: [ push, delete, create ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
if: github.actor != 'github-actions[bot]'
with:
persist-credentials: true
- name: Update commit hash to gitVersion
if: github.actor != 'github-actions[bot]'
run: |
git show -s --format=%H | awk 'NR == 1 {p = $0} NR > 1 {print p; p = $0} END{printf p}' > gitVersion
- name: Push commit
uses: EndBug/add-and-commit@v7.1.2
if: github.actor != 'github-actions[bot]'
with:
add: gitVersion
author_name: github-actions[bot]
author_email: 41898282+github-actions[bot]@users.noreply.github.com
message: Update git tree hash
push: true
# - name: Sync to mirror file server
# uses: sand4rt/ftp-deployer@v1.3
# if: github.actor != 'github-actions[bot]'
# with:
# sftp: false
# host: ${{ secrets.FTP_MIRROR_DESTINATION }}
# port: ${{ secrets.FTP_MIRROR_PORT }}
# username: ${{ secrets.FTP_MIRROR_USERNAME }}
# password: ${{ secrets.FTP_MIRROR_SECRET }}
# remote_folder: ${{ secrets.FTP_MIRROR_ROOT_PATH }}
# local_folder: .
# cleanup: true
# exclude: '[".git/**", ".github/**", "source/**", "*.md", "gitVersion"]'
# pasive: false
- name: Sync to Gitee repo
uses: wearerequired/git-mirror-action@master
if: github.actor != 'github-actions[bot]'
env:
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
source-repo: git@github.com:StageGuard/SkyAutoPlayerScript.git
destination-repo: git@gitee.com:stageguard/SkyAutoPlayerScript.git

3
.gitignore vendored
View File

@@ -3,3 +3,6 @@
rhino.jar
update.sh
updateSharedSheets.js
stageguard
encSheetAndPush.sh
encSheetList.js

246
README-en.md Normal file
View File

@@ -0,0 +1,246 @@
# SkyAutoPlayerScript
A script to play Sheets generated by [SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio) automatically in game Sky with accessibility services using Auto.js
[![shared sheet](https://badgen.net/badge/shared%20sheets/146%20in%20total/green)](shared_sheets/) [![sheet contributors](https://badgen.net/badge/sheet%20contributors/29/pink)](#shared-sheets) [![Hosted in](https://badgen.net/badge/CDN/jsDelivr?icon=jsdelivr)](https://www.jsdelivr.com/)
## Feature
There are many features in SkyAutoPlayerScript compared to other auto player scripts.
* Friendly GUI, no code edit, fluent UI animation.
* Multi-functional player control panel with **pause**, **progress control** and **speed control**.
* Set key coordinates by yourself with guidance, avoiding key offset when playing.
* There are many excellent online [shared sheets](https://github.com/StageGuard/SkyAutoPlayerScript/tree/master/shared_sheets).
* Automatically update script.
* [Multi-language support](#translation).
* ...
## Usage
1. Download release `4.1.1 Alpha2 (461) -> armeabi-v7a` in [`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
2. Turn on **Accessibility service** and allow **Display pop-up window** permission for Auto.js
3. Create a new script file in Auto.js. Copy the code below and run!
```javascript
"ui";
"use strict";
var emitter = events.emitter(threads.currentThread());
threads.start(function() {
emitter.emit("evaluate", (function(){
var resp = http.get("https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/source/SkyAutoplayer.js");
if(resp.statusCode >= 200 && resp.statusCode < 300) {
return resp.body.string();
} else {
resp = http.get("https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + http.get("https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/gitVersion").body.string() + "/source/SkyAutoplayer.js");
if(resp.statusCode >= 200 && resp.statusCode < 300) {
return resp.body.string();
} else {
return "console.show();console.log(\"Failed to load script\")";
}
}
}()));
});
emitter.on('evaluate', function(s){
eval(s);
});
```
## Clear data
`SkyAutoPlayerScript` will store data while running, if you want to delete all data, please run the code below in Auto.js
```
storages.remove("StageGuard:SkyAutoPlayer:Config");
files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
```
# Upload sheets
SkyAutoplayerScript will load online shared sheets from the file `shared_sheets.json` in this repository and it is convenient to download and play.
If you want to let sheets that transcribed by yourself or permitted to reprint shown on the list, you can do one of the following ways:
### 1. Pull Request
You can clone this repository, put your sheet file into `shared_sheets` folder and add a new item in `shared_sheets.json` :
```javascript
{
//sheet name
"name": "Vicetone - Nevada",
//sheet file name in shared_sheets folder
"file": "Nevada.txt",
//transcriber
"author": "StageGuard",
//short description about this sheet
"desc": "Nevada SkyStudio钢琴版。\n内包含<u>比较复杂的和弦</u>,不适合手弹(笑\n你可以在SkyStudio的练习模式试试[狗头]",
//BPM in sheet file
"bpm": 497,
//key count(a 15 key sheet or 8 key sheet)
"keyCount": 15,
//pitch level in sheet file
"pitchLevel": 3,
//note count
//length of array songNotes in sheet file
"noteCount": 1308,
//your social link
//you can add many links if you want
"social": [
{
//platform code name, currently support github, twitter, douyin(tiktok) and coolapk
"platform": "github",
//social platform name
"name": "GitHub",
//social link
"link": "https://github.com/StageGuard/"
}
]
},
```
After finishing, you need to create a new `pull request` and wait it to be merged.
> Attention: Before creating a new `pull request` , make sure your local repository is up-to-date!
### 2. If you are not familiar with Github...
Just mail your sheet file to [beamiscool@qq.com](mailto:beamiscool@qq.com) and don't forget the sheet description !
# Attention!
### Before using this script, you must read the following notes!
1. SkyAutoplayerScript is not fully tested, if you meet a bug, please PM CoolApk@StageGuard or create a new issue.
2. **SkyAutoplayerScript is a free and open source project. If you want to use it for commercial purposes, please add the link refers to this repository.**
3. **Shared sheets is not under the protection of LGPL-2.1, if you want to reprint shared sheets to other platforms, please contact sheet transcriber by yourself!**
4. The script is just for entertainment and it is not suitable to use it in formal occasion.
5. Script just gives you a short-time sense of satisfaction and do not make you progress.
6. This script is just a "player" and no built-in sheets, you must download [SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio) to make sheets.
7. The script will not support decrypt sheet, including **SkyStudio encrypted sheet** or **encrypted js** etc.....<br>And the repository will also not accept encrypted sheet.
<details> <summary>Issues </summary>
# Use it to make profits: [#1](https://github.com/StageGuard/SkyAutoPlayerScript/issues/1)
# Embezzle shared sheets:
Gitee user [嗨游圈(@vipssp)](https://gitee.com/vipssp) upload all shared sheets in [/shared_sheets](https://github.com/StageGuard/SkyAutoPlayerScript/tree/master/shared_sheets) **without permission** to his [Gitee repository](https://gitee.com/vipssp/SkyAutoPlayerScript/)
He also doesn't delete these sheets from his repository after [notification](https://gitee.com/vipssp/SkyAutoPlayerScript/commit/197925a71ff9cc6248be682a55406fc5814b12d7#note_3637784).
I decide to pin him in README.md after communicating with some sheet sharer.
<table>
<tr>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-8-40.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-9-57.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-44-4.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-10-12-499_com.coolapk.market.jpg" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-11-23-671_com.coolapk.market.jpg" />
</td>
</tr>
</table>
</details>
# Contribution
Welcome everyone to contribute this project, including pull request, issue, new feature request or translation.
### ⚠WARNING
CodeFactor Evaluation: [![CodeFactor](https://www.codefactor.io/repository/github/stageguard/skyautoplayerscript/badge)](https://www.codefactor.io/repository/github/stageguard/skyautoplayerscript)
Because of the limitation of Auto.js, it is impossible to extract functions and method so all functions are defined in a single file. Also, my coding skill is poor, so it is `a little hard` to understand source code.
## Contributor
### SkyAutoPlayerScript
[@tiaod](https://github.com/tiaod)
### Shared sheets
CoolApk [@Aex技术总监](http://www.coolapk.com/u/1286879)<br>
CoolApk [@夏卡卡卡](http://www.coolapk.com/u/2313452)<br>
CoolApk [@深空失忆か](http://www.coolapk.com/u/3005974)<br>
Douyin [@子哲啊🌈(zizhe1880689503)](https://v.douyin.com/J9gUaVE/)<br>
CoolApk [@你们很有趣呢](http://www.coolapk.com/u/2416229)<br>
CoolApk [@情如风雪无常](http://www.coolapk.com/u/643670)<br>
CoolApk [@慕疵](http://www.coolapk.com/u/3286967)<br>
CoolApk [@社区最弱萌新](http://www.coolapk.com/u/3291313)<br>
CoolApk [@九方辰](http://www.coolapk.com/u/634078)<br>
CoolApk [@北极马可罗尼](http://www.coolapk.com/u/463478)<br>
Bilibili [@UTF16](https://space.bilibili.com/623364258)<br>
CoolApk [@Syngenex](http://www.coolapk.com/u/1093421)<br>
Twitter [Phoebe@huunhut1217](https://mobile.twitter.com/huunhut1217)<br>
CoolApk [@终究是错付了](http://www.coolapk.com/u/2293899)<br>
CoolApk [@DesperatU](http://www.coolapk.com/u/1075889)<br>
CoolApk [@明明酱](http://www.coolapk.com/u/1706128)<br>
CoolApk [@cxk的篮球](http://www.coolapk.com/u/1090769)<br>
CoolApk [@头条乀](http://www.coolapk.com/u/1192320)<br>
CoolApk [@Alusias](http://www.coolapk.com/u/808787)<br>
[chikin](mailto:2869826936@qq.com)<br>
CoolApk [@温茶予君](http://www.coolapk.com/u/1212499)<br>
CoolApk [@落红难相聚](http://www.coolapk.com/u/2082465)<br>
CoolApk [@bugjump233](http://www.coolapk.com/u/3294062)<br>
CoolApk [@阿基米德的船](http://www.coolapk.com/u/3283016)<br>
[2087131113@qq.com](mailto:2087131113@qq.com)<br>
CoolApk [@皮皮小猪猪](http://www.coolapk.com/u/5352224)<br>
CoolApk [@DoubleGGe](http://www.coolapk.com/u/7728656)<br>
[恋上猫的鱼~](mailto:shi1177121232@foxmail.com)<br>
[依稀(濒死动物)](mailto:3423451308@qq.com)<br>
## Translation
SkyAutoplayerScript version 21 has supported multi-language and can also fetch online language list, follow [contribute-translation.md](contribute-translation.md) (English) guide to contribute translation.
### Contributor
None
# Icon from:
[Iconfont-阿里巴巴矢量图标库](https://www.iconfont.cn/)
# Thanks to:
[projectXero](https://gitee.com/projectXero) (Provide `ListAdapter` used in Rhino)
# LICENSE
```
SkyAutoPlayer (Auto.js script)
Copyright © 2020-2021 StageGuard
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
```

205
README.md
View File

@@ -1,59 +1,32 @@
# 关于脚本倒卖的问题: [#1](https://github.com/StageGuard/SkyAutoPlayerScript/issues/1)
# 耻辱柱
Gitee 用户[嗨游圈(@vipssp)](https://gitee.com/vipssp)在未经乐谱上传者的同意下私自盗用 SkyAutoplayerScript 与 Gitee 的[同步镜像](https://gitee.com/stageguard/SkyAutoPlayerScript)。
在经过[通知](https://gitee.com/vipssp/SkyAutoPlayerScript/commit/197925a71ff9cc6248be682a55406fc5814b12d7#note_3637784)后仍未及时删除盗用的乐谱,在于一些乐谱原作者沟通后,决定将其挂在此 README.md 首部,以告示。
<table>
<tr>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-8-40.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-9-57.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-44-4.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-10-12-499_com.coolapk.market.jpg" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-11-23-671_com.coolapk.market.jpg" />
</td>
</tr>
</table>
# SkyAutoPlayerScript
A script to play Sheets generated by SkyStudio automatically in game Sky with accessibility services using Auto.js
</br>使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)导出的曲谱
English: [README-en.md](README-en.md)
使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏 [SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio) 导出的曲谱
[![shared sheet](https://badgen.net/badge/shared%20sheets/146%20in%20total/green)](shared_sheets/) [![sheet contributors](https://badgen.net/badge/sheet%20contributors/29/pink)](#共享乐谱) [![Hosted in](https://badgen.net/badge/CDN/jsDelivr?icon=jsdelivr)](https://www.jsdelivr.com/)
~~不会进一步支持原神的21键琴和上传21键位的共享乐谱反正15键又不是不能弹。~~
## 特性
相比于其他脚本SkyAutoPlayerScript拥有以下优势
相比于其他脚本SkyAutoPlayerScript 拥有以下优势
* 全GUI操作无需编辑任何代码流畅的UI动画。
* 完整的弹奏控制面板,支持**暂停** **进度控制** **倍速控制**等
* 自设定键位坐标,避免按压琴键的偏移问题
* 在线[共享乐谱](https://github.com/StageGuard/SkyAutoPlayerScript/tree/master/shared_sheets),有许多优质乐谱。</br>~~(甚至有的乐谱复杂到根本无法手弹)~~
* 多功能的弹奏控制面板,支持**暂停** **进度控制** **倍速控制**等
* 通过引导自设定键位坐标,避免按压琴键的偏移问题
* 在线[共享乐谱](https://github.com/StageGuard/SkyAutoPlayerScript/tree/master/shared_sheets),有许多优质乐谱。
* 自动更新及时修复BUG无需担心版本过时问题。
* [多语言支持](#翻译)。
* ...
## 使用(Usage)
## 使用
<br>①Auto.js`4.1.1 Alpha2 (461)`版本下载: [`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
<br>Download `Auto.js`[`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
<br>手机请下载`autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
<br>Please download `autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
<br>②为Auto.js开启**无障碍服务**和**悬浮窗权限**。
<br>Turn on **Accessibility service** and allow **Display pop-up window** permission for Auto.js
<br>③在Auto.js中新建一个脚本并粘贴以下代码并运行
<br>Create a new script file in Auto.js. Copy the code below and run!
1. Auto.js `4.1.1 Alpha2 (461) -> armeabi-v7a` 版本下载: [`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
2. 为Auto.js开启**无障碍服务**和**悬浮窗权限**。
3.Auto.js中新建一个脚本并粘贴以下代码并运行:
```javascript
"ui";
@@ -79,84 +52,140 @@ emitter.on('evaluate', function(s){
});
```
在Auto.js版本`4.1.1 Alpha2 (461)`中测试通过,不保证其他版本的兼容性(取决于其他版本相对于此版本的API是否有`breaking changes`)
在Auto.js版本 `4.1.1 Alpha2 (461)` 中测试通过,**不保证其他版本的兼容性**(取决于其他版本相对于此版本的API是否有`breaking changes`)
## 清除数据(Clear data)
## 清除数据
`SkyAutoPlayerScript`在使用过程中会产生本地数据存储若想全部删除请使用Auto.js执行以下代码
<br>`SkyAutoPlayerScript` will store some data while using, if you want to delete all data, please run the code below in Auto.js
`SkyAutoPlayerScript` 在使用过程中会产生本地数据存储若想全部删除请使用Auto.js执行以下代码
```
storages.remove("StageGuard:SkyAutoPlayer:Config");
files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
```
<br>
# 上传乐谱
你可以fork本仓库将你要上传的乐谱添加至`shared_sheets`文件夹,并按照以下要求在`shared_sheets.json`添加项目
SkyAutoplayerScript 可以从这个仓库中的 `shared_sheets.json` 读取在线共享乐谱列表并可以方便地下载和弹奏。
你可以通过以下两种方式的任意一种方式来让你自制或经过原作者授权转载的乐谱在这个列表显示:
### 1. Pull Request
你可以克隆这个仓库,将你的乐谱添加到 `shared_sheets` 文件夹中,并按照以下要求在 `shared_sheets.json` 中添加新的项目:
```javascript
{
//乐谱名称
"name": "SheetName",
//乐谱文件名(于shared_sheets文件夹中)
"file": "SheetName.txt",
//你的id
"author": "Author",
"name": "Vicetone - Nevada",
//文件名
"file": "Nevada.txt",
//乐谱作者
"author": "StageGuard",
//乐谱简介
"desc": "This is a description about my sheet",
//乐谱BPM
"bpm" : 320,
//暂时没用
"suggested_instrument": 1,
//乐谱键位数(8键或15键)
"desc": "Nevada SkyStudio钢琴版。\n内包含<u>比较复杂的和弦</u>,不适合手弹(笑\n你可以在SkyStudio的练习模式试试[狗头]",
//乐谱文件中的BPM
"bpm": 497,
//乐谱的键位数目(它是一个 15 键位乐谱还是 8 键位乐谱)
"keyCount": 15,
//乐谱音高
"pitchLevel": 0
//乐谱文件中的音高
"pitchLevel": 3,
//键的数目
//乐谱文件中数组 songNotes 的长度
"noteCount": 1308,
//你的社交链接
//你可以添加多个
"social": [
{
//社交平台名称代号,现在支持 github, twitter, douyin(tiktok) and coolapk
"platform": "github",
//社交平台名称
"name": "GitHub",
//社交连接
"link": "https://github.com/StageGuard/"
}
]
},
```
修改完成后,申请`Pull Request`等待merge即可。
修改完成后,申请 `Pull Request` ,等待 merge 即可。
> 请注意:在申请`Pull Request`之前请确保你的SkyAutoPlayerScript仓库已同步至最新,以免出现意外问题!
> 请注意:在申请`Pull Request`之前请确保你本地的 仓库已同步至最新,以免出现意外问题!
或通过发送乐谱到邮箱[beamiscool@qq.com](mailto:beamiscool@qq.com)
### 2. 如果你不是很懂 Github...
<br>
只需要把乐谱发送到邮箱 [beamiscool@qq.com](mailto:beamiscool@qq.com) 来交给我就行啦!别忘了附带乐谱简介!
# 注意
# 注意!
### 请仔细阅读以下使用须知!
1. 未充分测试若遇到BUG请酷安私信@StageGuard或新建Issue来反馈BUG
2. **SkyAutoPlayer是完全免费且开源的软件/脚本([https://github.com/StageGuard/SkyAutoPlayerScript](https://github.com/StageGuard/SkyAutoPlayerScript))使用SkyAutoPlayer盈利的同时请标注源项目链接。**
2. **SkyAutoplayerScript是完全免费且开源的软件/脚本([https://github.com/StageGuard/SkyAutoPlayerScript](https://github.com/StageGuard/SkyAutoPlayerScript)),使用 SkyAutoplayerScript 盈利的同时请标注源项目链接。**
3. **共享乐谱不遵守LGPL-2.1协议如您想在SkyAutoPlayer以外使用这些乐谱请自行找乐谱作者授权**
4. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思)若因使用本脚本所出现了一些不友好的问题与脚本作者StageGuard无关。
5. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。
6. 本脚本只是一个"弹奏机"并不内置曲谱请在GooglePlay下载[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)编谱。
6. 本脚本只是一个"弹奏机",并不内置曲谱,请在 GooglePlay 下载 [SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio) 编谱。
7. 本脚本不会增加解密乐谱功能,包括但不限于**加密的SkyStudio乐谱****加密的JS**等,也不接受加密乐谱的共享。
<details> <summary>针对上述第2, 3条出现的问题</summary>
# 关于脚本倒卖的问题: [#1](https://github.com/StageGuard/SkyAutoPlayerScript/issues/1)
# 耻辱柱
Gitee 用户[嗨游圈(@vipssp)](https://gitee.com/vipssp)在**未经乐谱上传者的同意下私自盗用** SkyAutoplayerScript 于 Gitee 的[同步镜像](https://gitee.com/stageguard/SkyAutoPlayerScript)到它的 [Gitee 仓库](https://gitee.com/vipssp/SkyAutoPlayerScript/)。
在经过[通知](https://gitee.com/vipssp/SkyAutoPlayerScript/commit/197925a71ff9cc6248be682a55406fc5814b12d7#note_3637784)后仍未及时删除盗用的乐谱,在于一些乐谱原作者沟通后,决定将其挂在此 README.md 首部,以告示。
<table>
<tr>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-8-40.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-9-57.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/2020-12-19_0-44-4.PNG" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-10-12-499_com.coolapk.market.jpg" />
</td>
<td align="center" height="200">
<img src="https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/resources/static/Screenshot_2020-12-19-00-11-23-671_com.coolapk.market.jpg" />
</td>
</tr>
</table>
</details>
# 贡献
欢迎任何人贡献本项目包括但不限于Pull RequestIssueNew feature request 或者 贡献翻译。
欢迎任何人贡献本项目,包括但不限于 Pull RequestIssueNew feature request 或者 贡献翻译。
### ⚠️警告
CodeFactor 代码评估: [![CodeFactor](https://www.codefactor.io/repository/github/stageguard/skyautoplayerscript/badge)](https://www.codefactor.io/repository/github/stageguard/skyautoplayerscript)
由于 Auto.js 的限制,无法将不同的功能分离,所以所有功能都在一个文件实现;再加上我糟糕的代码技能,源码会非常难读。
## 贡献者名单(按照首次贡献时间排序)
## 贡献者
### SkyAutoPlayerScript
[@tiaod](https://github.com/tiaod)<br>
<br>
[@tiaod](https://github.com/tiaod)
### 共享乐谱
酷安[@Aex技术总监](http://www.coolapk.com/u/1286879)<br>
酷安[@夏卡卡卡](http://www.coolapk.com/u/2313452)<br>
酷安[@深空失忆か](http://www.coolapk.com/u/3005974)<br>
抖音@子哲啊🌈(zizhe1880689503)<br>
抖音[@子哲啊🌈(zizhe1880689503)](https://v.douyin.com/J9gUaVE/)<br>
酷安[@你们很有趣呢](http://www.coolapk.com/u/2416229)<br>
酷安[@情如风雪无常](http://www.coolapk.com/u/643670)<br>
酷安[@慕疵](http://www.coolapk.com/u/3286967)<br>
@@ -165,39 +194,45 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
酷安[@北极马可罗尼](http://www.coolapk.com/u/463478)<br>
哔哩哔哩[@UTF16](https://space.bilibili.com/623364258)<br>
酷安[@Syngenex](http://www.coolapk.com/u/1093421)<br>
Twitter[Phoebe@huunhut1217](https://mobile.twitter.com/huunhut1217)<br>
Twitter [Phoebe@huunhut1217](https://mobile.twitter.com/huunhut1217)<br>
酷安[@终究是错付了](http://www.coolapk.com/u/2293899)<br>
酷安[@DesperatU](http://www.coolapk.com/u/1075889)<br>
酷安[@明明酱](http://www.coolapk.com/u/1706128)<br>
酷安[@cxk的篮球](http://www.coolapk.com/u/1090769)<br>
酷安[@头条乀](http://www.coolapk.com/u/1192320)<br>
<br>
酷安[@Alusias](http://www.coolapk.com/u/808787)<br>
[chikin](mailto:2869826936@qq.com)<br>
酷安[@温茶予君](http://www.coolapk.com/u/1212499)<br>
酷安[@落红难相聚](http://www.coolapk.com/u/2082465)<br>
酷安[@bugjump233](http://www.coolapk.com/u/3294062)<br>
酷安[@阿基米德的船](http://www.coolapk.com/u/3283016)<br>
[2087131113@qq.com](mailto:2087131113@qq.com)<br>
酷安[@皮皮小猪猪](http://www.coolapk.com/u/5352224)<br>
酷安[@DoubleGGe](http://www.coolapk.com/u/7728656)<br>
[恋上猫的鱼~](mailto:shi1177121232@foxmail.com)<br>
[依稀(濒死动物)](mailto:3423451308@qq.com)<br>
## 翻译
SkyAutoplayerScript 在版本 21 已支持多语言并可以在线获取语言列表,你可以查看 [contribute-translation.md](contribute-translation.md) (English) 来了解如何贡献翻译。
SkyAutoplayerScript version 21 has supported multi-language and can also fetch online language list, follow [contribute-translation.md](contribute-translation.md) (English) guide to contribute translation.
### 贡献者:
### 贡献者
# 图标来源
[Iconfont-阿里巴巴矢量图标库](https://www.iconfont.cn/)
<br>
# 鸣谢
[projectXero](https://gitee.com/projectXero) (提供适用于Rhino的`ListAdapter`)
<br>
# 许可证协议
```
SkyAutoPlayer (Auto.js script)
Copyright © 2020 StageGuard
Copyright © 2020-2021 StageGuard
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public

View File

@@ -4,9 +4,11 @@ Follow [Issue#4](https://github.com/StageGuard/SkyAutoPlayerScript/issues/4) req
It can also fetch online language list [source/language_list.json](https://github.com/StageGuard/SkyAutoPlayerScript/blob/master/source/language_list.json). So if you want to translate SkyAutoplayerScript into another language, please follow the steps below.
## Translate to a new language
- Clone this repository.
- Create a new file in **resources/language_pack/xx_XX.json**, the file name must be standard language code (e.g. zh_CN or en_US).
- You can refer to **resources/language_pack/en_US.json** to translate.
- You can refer to [resources/language_pack/en_US.json](https://github.com/StageGuard/SkyAutoPlayerScript/blob/master/resources/language_pack/en_US.json) to translate.
- Modify **source/language_list.json**:
```js
@@ -27,4 +29,13 @@ It can also fetch online language list [source/language_list.json](https://githu
After merging, your language will be shown in Setting-Language list.
## Fix a wrong translation
- Clone this repository.
- Correct wrong translations.
- Update `version` number(+1) of target language in language file and [source/language_list.json](https://github.com/StageGuard/SkyAutoPlayerScript/blob/master/source/language_list.json).
- Create a new pull request.
After merging, SkyAutoplayerScript will notify users who uses this language to update.
I would appreciate it if you could contribute translation!

View File

@@ -1 +1 @@
2429897df58cc98ee3e9803ecc021fb1d43a02ac
ee925ccc72fd29cd49c380fb1182790afb55e8eb

View File

@@ -1,6 +1,7 @@
{
"name": "English (US)",
"code": "en_US",
"version": 5,
"content": {
"launch_tip_in_content": "If you can't see a diamond popup dialog,<br>make sure that Auto.js is allowed to <u><b>display pop-up window</u></b><br><br><br>Version <b>4.1.1 Alpha2</b> is recommended.<br><b>4.1.1 Alpha2</b> Download: <a href=https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2>https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2</a>",
"launch_tip_force_exit": "FORCE EXIT",
@@ -40,14 +41,14 @@
"page_lc_load_failed_r3": "Are any syntax error in this sheet.",
"page_lc_loading_sheet": "Loading: {0} total({1} failed)",
"page_sc_title": "Shared heet",
"page_sc_title": "Shared sheet",
"page_sc_navigation_title": "SHARED",
"page_sc_downloading": "Downloading...",
"page_sc_analyzing": "Parsing...",
"page_sc_download_success": "Download successful: {0}\nPlease press refresh button in local sheet page.",
"page_sc_download_failed": "Failed to download {0}: {1}",
"page_sc_upload_title": "How to upload your local sheet",
"page_sc_upload_desc": "There are two ways\n\nMail to beamiscool@qq.com with attachment file.\n(Sheet description is optional.)\n\n②Pull request to StageGuard/SkyAutoplayerScript\n\nPM to @StageGuard in CoolApk with sheet link.\nPut your sheet file to shared_sheets folder and modify shared_sheets.json\n\nWarning: If the sheet is not translated or composed by yourself, you must gain the permission of original composer or translator.\n\nWelcome to expand the shared sheet list!",
"page_sc_upload_desc": "There are three ways\n\n1. Mail to beamiscool@qq.com with attachment file.\n(Sheet description is optional.)\n\n2. Create a pull request to StageGuard/SkyAutoplayerScript\n\n3. PM to @StageGuard in CoolApk with sheet link.\nPut your sheet file to shared_sheets folder and modify shared_sheets.json\n\nWarning: If the sheet is not translated or composed by yourself, you must gain the permission of original composer or translator.\n\nWelcome to expand the shared sheet list!",
"page_sc_upload_open_coolapk": "Open CoolApk",
"page_sc_upload_open_github": "Open GitHub",
"page_sc_upload_ca_not_exist": "Application CookApk is not installed on your device",
@@ -77,6 +78,7 @@
"page_setting_changelog_title": "Changelog",
"page_setting_exit_script": "Exit",
"page_setting_language": "Language",
"page_setting_chord_delay": "Delay of each chord key",
"gui_player_panel_tip": "Drag the title text of the title bar to move the suspension window of the performance control panel.",
"gui_player_penel_analyzing": "Parsing...",
@@ -102,7 +104,14 @@
"res_use_language": "Use language: {0}",
"res_language_dialog_title": "Choose language",
"res_language_download_failed": "Failed to download language pack: {0}",
"res_language_dialog_tip": "Your language is not on the list?<br>Welcome to translate the script:<br><a href=>https://github.com/StageGuard/SkyAutoPlayerScript</a>",
"res_language_failed_fetch_online_list": "Failed to fetch online language list"
"res_language_dialog_tip": "Your language is not on the list?<br>Welcome to translate the script:<br><a href=>https://github.com/StageGuard/SkyAutoPlayerScript/blob/master/contribute-translation.md</a>",
"res_language_failed_fetch_online_list": "Failed to fetch online language list",
"res_language_update_needed": "Language pack need to be updated, please go to setting->language and click current language again to upgrade.",
"page_setting_no_popup_play": "Close panel in playing",
"page_setting_no_popup_play_interval": "Interval to play when close panel",
"no_popup_play_warning_title": "WARNING",
"no_popup_play_warning": "You have enabled \"Close panel in playing\" opinion!\nPlay without control panel is <b>extremely dangerous</b>.\n\nWhen popup notification or bubble chat appears, script may touch these popup window by mistake. At this time, script is still running(or playing) and is <b>uninterrupted</b>. You have no way to stop playing but wait.\n<b>Script touch in other pages may causes irreparable harm.</b>\n\nBesides, record play process is uesless and doesn't give you sense of satisfaction.\n\nI have already warned you that if there is any loss or dispute caused by using this function, it has nothing to do with the SkyAutoplayer script and the script author StageGuard.\nIf continue, please click the confirm button, or otherwise click the Cancel button.\n\nps. \"Random and continuate play\" will not work.",
"no_popup_play_tip": "Script will start playing in {0} seconds."
}
}

View File

@@ -1,6 +1,7 @@
{
"name": "简体中文",
"code": "zh_CN",
"version": 5,
"content": {
"launch_tip_in_content": "当你发现什么事情都没有发生时<br>也许你应该看看是否授予了Auto.js<u><b>悬浮窗权限</u></b><br><br><br>建议使用 <b>4.1.1 Alpha2</b> 版本!<br><b>4.1.1 Alpha2</b> 版本下载: <a href=https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2>https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2</a>",
"launch_tip_force_exit": "强制退出",
@@ -47,7 +48,7 @@
"page_sc_download_success": "下载完成: {0}\n请在本地曲谱页面刷新",
"page_sc_download_failed": "下载 {0} 失败: {1}",
"page_sc_upload_title": "如何上传乐谱",
"page_sc_upload_desc": "共有种方式可以上传乐谱:\n\n酷安私信@StageGuard发送时请附带简介曲谱链接(百度云或其他云盘都可)\n在github fork StageGuard/SkyAutoplayerScript\n在shared_sheets文件夹添加你的曲谱并按照格式修改shared_sheets.json\n并提出 Pull Request 合并申请\n\n注若是转载转载请注明原作者同意\n\n如果所有人都白嫖那么这个列表将永远也不会扩充",
"page_sc_upload_desc": "共有种方式可以上传乐谱:\n\n1. 酷安私信@StageGuard发送时请附带简介曲谱链接(百度云或其他云盘都可)\n2. 在github fork StageGuard/SkyAutoplayerScript\n在shared_sheets文件夹添加你的曲谱并按照格式修改shared_sheets.json\n并提出 Pull Request 合并申请。\n\n3. 发送乐谱文件到 beamiscool@qq.com\n\n注若是转载转载请注明原作者同意\n\n如果所有人都白嫖那么这个列表将永远也不会扩充",
"page_sc_upload_open_coolapk": "打开酷安",
"page_sc_upload_open_github": "打开 Github",
"page_sc_upload_ca_not_exist": "无法打开酷安,应用不存在!",
@@ -77,6 +78,7 @@
"page_setting_changelog_title": "更新日志",
"page_setting_exit_script": "结束脚本运行",
"page_setting_language": "语言",
"page_setting_chord_delay": "和弦按压延迟",
"gui_player_panel_tip": "拖动标题栏的标题文字来移动弹奏控制面板悬浮窗。",
"gui_player_penel_analyzing": "解析中...",
@@ -102,7 +104,14 @@
"res_use_language": "使用语言: {0}",
"res_language_dialog_title": "选择语言",
"res_language_download_failed": "语言下载失败:{0}",
"res_language_dialog_tip": "找不到你的语言?欢迎贡献翻译:<br><a href=>https://github.com/StageGuard/SkyAutoPlayerScript</a>",
"res_language_failed_fetch_online_list": "无法获取在线语言列表"
"res_language_dialog_tip": "找不到你的语言?欢迎贡献翻译:<br><a href=>https://github.com/StageGuard/SkyAutoPlayerScript/blob/master/contribute-translation.md</a>",
"res_language_failed_fetch_online_list": "无法获取在线语言列表",
"res_language_update_needed": "语言需要更新,请前往设置界面重新点击当前语言来更新",
"page_setting_no_popup_play": "弹奏不显示悬浮窗",
"page_setting_no_popup_play_interval": "无悬浮窗弹奏开始间隔",
"no_popup_play_warning_title": "警告",
"no_popup_play_warning": "您已经开启\"弹奏不显示悬浮窗\"选项!\n弹奏不受弹奏面板控制是<b>非常危险的</b>。\n\n当出现顶部悬浮通知(例如QQ消息)或气泡对话时,脚本可能会误触消息并开启其他软件,此时脚本依旧在运行中(弹奏中)且<b>无法被打断</b>。也就是说除了等待弹奏完成以外,没有任何办法终止弹奏。\n<b>脚本在其他界面的误触可能会对您造成不可挽回的损失!</b>\n\n另外使用此功能且录屏不会使你获得任何成就感。\n\n我已经警告过你了若因使用此功能造成了损失或纠纷与 SkyAutoPlayer 脚本和脚本作者 StageGuard 无关,请悉知。\n若继续使用请点击确认按钮否则请点击取消按钮。\n\n注意使用此功能时\"连续随机播放\"功能将不会生效。",
"no_popup_play_tip": "将在 {0} 秒后开始弹奏。"
}
}

BIN
resources/mail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1,5 +1,802 @@
{
"sheets": [
{
"name": "浪流连",
"file": "浪流连.txt",
"author": "依稀(濒死动物)",
"desc": "<a href=mailto:3423451308@qq.com>@依稀(濒死动物)<a/> 分享乐谱 浪流连",
"bpm": 500,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 267,
"social": [
{
"platform": "mail",
"name": "3423451308@qq.com",
"link": "3423451308@qq.com"
}
]
},
{
"name": "雨之歌",
"file": "雨之歌.txt",
"author": "恋上猫的鱼~",
"desc": "<a href=mailto:shi1177121232@foxmail.com>@恋上猫的鱼~<a/> 分享乐谱 雨之歌\n动画《少女终末旅行》插曲",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 349,
"social": [
{
"platform": "mail",
"name": "shi1177121232@foxmail.com",
"link": "shi1177121232@foxmail.com"
}
]
},
{
"name": "青花瓷",
"file": "青花瓷.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 青花瓷",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 9,
"noteCount": 86,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "虹之间",
"file": "虹之间.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 虹之间",
"bpm": 280,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 10,
"noteCount": 205,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "粉刷匠",
"file": "粉刷匠.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 粉刷匠",
"bpm": 383,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 7,
"noteCount": 48,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "等你下课",
"file": "等你下课.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 等你下课",
"bpm": 295,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 8,
"noteCount": 229,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "病变",
"file": "病变.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 病变",
"bpm": 454,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 4,
"noteCount": 544,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "外婆的澎湖湾",
"file": "外婆的澎湖湾.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 外婆的澎湖湾",
"bpm": 383,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 9,
"noteCount": 397,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "告白气球",
"file": "告白气球.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 告白气球",
"bpm": 358,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 11,
"noteCount": 203,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "晴天",
"file": "晴天.txt",
"author": "酷安@DoubleGGe",
"desc": "酷安 <a href=http://www.coolapk.com/u/7728656>@DoubleGGe<a/> 分享乐谱 晴天",
"bpm": 300,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 490,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/7728656"
}
]
},
{
"name": "宾克斯的美酒",
"file": "宾克斯的美酒.txt",
"author": "酷安@DoubleGGe",
"desc": "酷安 <a href=http://www.coolapk.com/u/7728656>@DoubleGGe<a/> 分享乐谱 宾克斯的美酒",
"bpm": 330,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 3,
"noteCount": 298,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/7728656"
}
]
},
{
"name": "江南",
"file": "江南.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 江南",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 10,
"noteCount": 90,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "她说",
"file": "她说.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 她说",
"bpm": 318,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 187,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "北京东路的日子",
"file": "北京东路的日子.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 北京东路的日子",
"bpm": 368,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 391,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "修炼爱情",
"file": "修炼爱情.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 修炼爱情",
"bpm": 250,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 3,
"noteCount": 121,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "不能说的秘密",
"file": "不能说的秘密.txt",
"author": "酷安@皮皮小猪猪",
"desc": "酷安 <a href=http://www.coolapk.com/u/5352224>@皮皮小猪猪<a/> 分享乐谱 不能说的秘密",
"bpm": 288,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 7,
"noteCount": 173,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/5352224"
}
]
},
{
"name": "ムーンライト伝説(月光传说)",
"file": "月光传说.txt",
"author": "2087131113@qq.com",
"desc": "<a href=mailto:2087131113@qq.com>2087131113@qq.com<a/> 分享乐谱 ムーンライト伝説(月光传说)\n美少女戦士セーラームーン(《美少女战士》)主题曲",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 3,
"noteCount": 763,
"social": [
{
"platform": "mail",
"name": "2087131113@qq.com",
"link": "2087131113@qq.com"
}
]
},
{
"name": "Pachelbel's CanonD大调卡农",
"file": "Pachelbel's CanonD大调卡农.txt",
"author": "酷安@阿基米德的船",
"desc": "酷安 <a href=http://www.coolapk.com/u/3283016>@阿基米德的船<a/> 分享乐谱 Pachelbel's CanonD大调卡农",
"bpm": 800,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 2,
"noteCount": 1250,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3283016"
}
]
},
{
"name": "缘之空-遠い空へ",
"file": "-遠い空へ.txt",
"author": "酷安@cxk的篮球",
"desc": "酷安 <a href=http://www.coolapk.com/u/1090769>@cxk的篮球<a/> 分享乐谱 缘之空-遠い空へ",
"bpm": 440,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 2,
"noteCount": 1087,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/1090769"
}
]
},
{
"name": "灰澈 - 星茶会",
"file": "星茶会高音钢琴C调.txt",
"author": "酷安@阿基米德的船",
"desc": "酷安 <a href=http://www.coolapk.com/u/3283016>@阿基米德的船<a/> 分享乐谱 灰澈 - 星茶会\n使用高音钢琴在C调环境弹奏。",
"bpm": 870,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 1190,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3283016"
}
]
},
{
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
"file": "いつも何度でも (「千と千尋の神隠し」主題歌)F调.txt",
"author": "酷安@阿基米德的船",
"desc": "酷安 <a href=http://www.coolapk.com/u/3283016>@阿基米德的船<a/> 分享乐谱 いつも何度でも \n(「千と千尋の神隠し」主題歌) (F调)",
"bpm": 470,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 5,
"noteCount": 1270,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3283016"
}
]
},
{
"name": "old memory",
"file": "old memory.txt",
"author": "酷安@cxk的篮球",
"desc": "酷安 <a href=http://www.coolapk.com/u/1090769>@cxk的篮球<a/> 分享乐谱 old memory",
"bpm": 400,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 2,
"noteCount": 344,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/1090769"
}
]
},
{
"name": "保罗·塞内维尔 - 梦中的婚礼",
"file": "梦中的婚礼.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 保罗·塞内维尔 - 梦中的婚礼(Paul de Senneville - Mariage d'amour)",
"bpm": 272,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 10,
"noteCount": 342,
"social": [
{
"platform": "coolapk",
"name": "酷安@落红难相聚",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "LemonC调",
"file": "Lemon(C调).txt",
"author": "酷安@阿基米德的船",
"desc": "酷安 <a href=http://www.coolapk.com/u/3283016>@阿基米德的船<a/> 分享乐谱 LemonC调",
"bpm": 342,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 1097,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3283016"
}
]
},
{
"name": "打上花火",
"file": "打上花火.txt",
"author": "酷安@阿基米德的船",
"desc": "酷安 <a href=http://www.coolapk.com/u/3283016>@阿基米德的船<a/> 分享乐谱 打上花火",
"bpm": 385,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 6,
"noteCount": 1449,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3283016"
}
]
},
{
"name": "两只老虎爱跳舞",
"file": "两只老虎爱跳舞.txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安 <a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/> 分享乐谱 两只老虎爱跳舞\nὂfὈ3ἿbἻ6\n嘿 吔~",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 117,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2313452"
}
]
},
{
"name": "わたてん☆5 - 気ままな天使ーたち",
"file": "気ままな天使ーたち.txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安 <a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/> 分享乐谱 わたてん☆5 - 気ままな天使ーたち",
"bpm": 504,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 6,
"noteCount": 779,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2313452"
}
]
},
{
"name": "水源小樱 - 白月光与朱砂痣",
"file": "白月光与朱砂痣.txt",
"author": "酷安@bugjump233",
"desc": "酷安 <a href=http://www.coolapk.com/u/3294062>@bugjump233<a/> 分享乐谱 水源小樱 - 白月光与朱砂痣",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 215,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/3294062"
}
]
},
{
"name": "Toby Fox - The World Revolving",
"file": "TheWorldRevolving.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 Toby Fox - The World Revolving(天旋地转)\n游戏 《Deltarune》 原声带",
"bpm": 720,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 11,
"noteCount": 664,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "拜尔 - 踩到猫儿",
"file": "踩到猫儿.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 拜尔 - 踩到猫儿",
"bpm": 440,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 108,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "烟斗斜桥",
"file": "烟斗斜桥.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享原创乐谱 烟斗斜桥",
"bpm": 320,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 309,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "Cécile Corbel - Arrietty's Song",
"file": "Arrietty's_Song.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 Cécile Corbel - Arrietty's Song\n动画电影《借东西的小人阿莉埃蒂》主题曲\n(アニメ映画「借りぐらしのアリエッティ」主題歌)",
"bpm": 430,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 631,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "莫文蔚 - 慢慢喜欢你",
"file": "慢慢喜欢你.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 莫文蔚 - 慢慢喜欢你",
"bpm": 310,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 7,
"noteCount": 238,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "久石譲 - 海の見える街",
"file": "海の見える街.txt",
"author": "酷安@落红难相聚",
"desc": "酷安 <a href=http://www.coolapk.com/u/2082465>@落红难相聚<a/> 分享乐谱 久石譲 - 海の見える街\n动画电影《魔女宅急便》插曲",
"bpm": 404,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 6,
"noteCount": 515,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2082465"
}
]
},
{
"name": "金莎 - 星月神话",
"file": "星月神话.txt",
"author": "酷安@箬枫",
"desc": "酷安 <a href=http://www.coolapk.com/u/844564>@箬枫<a/> 分享乐谱 星月神话",
"bpm": 220,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 220,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/844564"
}
]
},
{
"name": "Rick Astley - Never Gonna Give You Up",
"file": "Never_Gonna_Give_You_Up.txt",
"author": "StageGuard",
"desc": "豪 俊 金 曲 放 送",
"bpm": 454,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 1,
"noteCount": 330,
"social": [
{
"platform": "github",
"name": "GitHub",
"link": "https://github.com/StageGuard"
},
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/1790774"
}
]
},
{
"name": "上田麗奈 - リテラチュア",
"file": "リテラチュア(双手简谱).txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安 <a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/> 分享乐谱 上田麗奈 - リテラチュア\nTV动画《魔女之旅》片头曲\n<b>双手简谱版本。</b>",
"bpm": 472,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 4,
"noteCount": 2422,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2313452"
}
]
},
{
"name": "周兴哲 - 永不失联的爱",
"file": "永不失联的爱.txt",
"author": "酷安@温茶予君",
"desc": "酷安 <a href=http://www.coolapk.com/u/1212499>@温茶予君<a/> 分享乐谱 周兴哲 - 永不失联的爱",
"bpm": 340,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 363,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/1212499"
}
]
},
{
"name": "上田麗奈 - リテラチュア",
"file": "リテラチュア.txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安 <a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/> 分享乐谱 上田麗奈 - リテラチュア\nTV动画《魔女之旅》片头曲",
"bpm": 472,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 4,
"noteCount": 467,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2313452"
}
]
},
{
"name": "新闻联播ED",
"file": "新闻联播ED.txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安 <a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/> 分享乐谱 新闻联播ED",
"bpm": 304,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 2,
"noteCount": 252,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/2313452"
}
]
},
{
"name": "シルエット(Silhouette)",
"file": "Silhouette.txt",
"author": "chikin",
"desc": "<a href=mailto:2869826936@qq.com>@chikin<a/> 分享乐谱 シルエット(Silhouette)\n【火影忍者疾风传】 OP 16 シルエット(Silhouette)",
"bpm": 350,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 1631,
"social": [
{
"platform": "mail",
"name": "2869826936@qq.com",
"link": "2869826936@qq.com"
}
]
},
{
"name": "のみこ/Masayoshi Minoshima - Bad Apple",
"file": "Bad_Apple.txt",
"author": "酷安@箬枫",
"desc": "酷安 <a href=http://www.coolapk.com/u/844564>@箬枫<a/> 分享乐谱 のみこ/Masayoshi Minoshima - Bad Apple",
"bpm": 240,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 563,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/844564"
}
]
},
{
"name": "新年好",
"file": "新年好.txt",
"author": "酷安@头条乀",
"desc": "酷安 <a href=http://www.coolapk.com/u/1192320>@头条乀<a/> 分享乐谱 新年好",
"bpm": 200,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 30,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/1192320"
}
]
},
{
"name": "仙剑问情",
"file": "仙剑问情.txt",
"author": "酷安@Alusias",
"desc": "酷安 <a href=http://www.coolapk.com/u/808787>@Alusias<a/> 分享乐谱 仙剑问情",
"bpm": 282,
"suggested_instrument": 1,
"keyCount": 15,
"pitchLevel": 0,
"noteCount": 174,
"social": [
{
"platform": "coolapk",
"name": "酷安",
"link": "http://www.coolapk.com/u/808787"
}
]
},
{
"name": "铃儿响叮当",
"file": "铃儿响叮当.txt",

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/Bad_Apple.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/她说.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/新年好.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/晴天.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/江南.txt Normal file

Binary file not shown.

BIN
shared_sheets/浪流连.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/病变.txt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/粉刷匠.txt Normal file

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/虹之间.txt Normal file

Binary file not shown.

Binary file not shown.

BIN
shared_sheets/雨之歌.txt Normal file

Binary file not shown.

BIN
shared_sheets/青花瓷.txt Normal file

Binary file not shown.

View File

@@ -2,7 +2,7 @@
"use strict";
/*
SkyAutoPlayer (Auto.js script)
Copyright © 2020 StageGuard
Copyright © 2020-2021 StageGuard
Contact :
(QQ: 1355416608)
(Email: beamiscool@qq.com)
@@ -29,13 +29,13 @@
const user_agreements =
"请仔细阅读以下使用须知!\n\n" +
"未充分测试若遇到BUG请酷安私信@StageGuard或在github中的StageGuard/SkyAutoPlayerScript新建Issue来反馈BUG\n\n" +
"1. SkyAutoPlayer(以下简称\"本脚本\")是完全免费且开源的软件/脚本(https://github.com/StageGuard/SkyAutoPlayerScript)禁止使用本脚本作为盈利用途!\n若你是从其他渠道购买获得的本脚本那么就说明你被骗了\n\n" +
"2. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思)若因使用本脚本所出现了一些不友好的问题与脚本作者StageGuard(以下简称\"作者\")无关。\n\n" +
"3. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。\n\n" +
"4. 脚本只是一个\"弹奏机\"并不内置曲谱请在GooglePlay下载SkyStudio编谱。\n\n" +
"5. 本脚本不会增加解密乐谱功能包括但不限于加密的SkyStudio乐谱加密的JS等也不接受加密乐谱的共享。\n\n" +
"6. 本脚本的发行遵守LGPL-2.1协议,若你不了解协议内容,请访问 https://www.gnu.org/licenses 查看"
"1. 未充分测试若遇到BUG请酷安私信@StageGuard或新建Issue来反馈BUG\n\n" +
"2. SkyAutoplayerScript是完全免费且开源的软件/脚本(https://github.com/StageGuard/SkyAutoPlayerScript)使用 SkyAutoplayerScript 盈利的同时请标注源项目链接。\n\n" +
"3. 共享乐谱不遵守LGPL-2.1协议如您想在SkyAutoPlayer以外使用这些乐谱请自行找乐谱作者授权\n\n" +
"4. 脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思)若因使用本脚本所出现了一些不友好的问题与脚本作者StageGuard无关。\n\n" +
"5. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。\n\n" +
"6. 本脚本只是一个\"弹奏机\",并不内置曲谱,请在 GooglePlay 下载 SkyStudio 编谱。\n\n" +
"7. 本脚本的发行遵守LGPL-2.1协议,若你不了解协议内容,请访问 https://www.gnu.org/licenses 查看"
;
//Script global scope
@@ -105,7 +105,7 @@ sheetmgr = {
downloadAndLoad: function(file, extraData, listener) {
listener({status:1});
config.fetchRepoFile("shared_sheets/" + file, null, function(body) {
config.fetchRepoFile("shared_sheets/" + file, function(body) {
var sheet = files.join(sheetmgr.rootDir, files.getNameWithoutExtension(file) + (function(length) {
var string = "0123456789abcde";
var stringBuffer = new java.lang.StringBuffer();
@@ -121,6 +121,7 @@ sheetmgr = {
listener({status:2});
data.author = extraData.author;
data.keyCount = extraData.keyCount;
data.name = extraData.name;
return "[" + JSON.stringify(data) + "]";
}()), sheetmgr.encoding);
parsed = eval(parsed)[0];
@@ -128,7 +129,7 @@ sheetmgr = {
sheetmgr.cachedLocalSheetList.push(parsed);
listener({status:3});
}, function (msg) {
listener({status:-1, msg: "获取 " + remoteHost + " 失败,原因:" + resp.statusMessage});
listener({status:-1, msg: "获取 " + extraData.name + " 失败,原因:" + resp.statusMessage});
});
},
@@ -161,7 +162,7 @@ sheetmgr = {
}
},
__internal_fetchOnlineSharedSheets: function() {
config.fetchRepoFile("shared_sheets.json", config.values.gitVersion, function(body) {
config.fetchRepoFile("shared_sheets.json", function(body) {
sheetmgr.cachedOnlineSharedSheetInfoList = body.json().sheets;
});
},
@@ -170,9 +171,9 @@ sheetmgr = {
var r = [];
var t_time = 0;
var t_sets = [];
const regexp = /^(\d)Key(\d{1,})$/;
const regexp = /^(?:\d)?Key(\d{1,})$/;
for(var i in raw) {
var key = Number(raw[i].key.replace(regexp, "$2"));
var key = Number(raw[i].key.replace(regexp, "$1"));
if(raw[i].time != t_time) {
r.push({time: t_time, keys: t_sets});
t_sets = [];
@@ -276,10 +277,11 @@ sheetplayer = {
var executor = java.util.concurrent.Executors.newCachedThreadPool();
var tragetRunnable = new java.lang.Runnable({
run: function() {
var gestureMap = [];
var gestureMap = [], delay = 0;
sheetplayer.notes[sheetplayer.currentNote].keys.map(function(e, i) {
var keyCoordinates = sheetplayer.keyCount == 15 ? [config.values.key_coordinates15[e][0], config.values.key_coordinates15[e][1]] : [config.values.key_coordinates8[e][0], config.values.key_coordinates8[e][1]];
gestureMap.push([0, 25, keyCoordinates, keyCoordinates]);
delay += config.values.chordDelay;
gestureMap.push([delay, 25, keyCoordinates, keyCoordinates]);
});
gestureMap = sheetplayer.toSource(gestureMap);
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
@@ -299,6 +301,7 @@ sheetplayer = {
// 播放完自动下一首
if(!(sheetplayer.currentNote < sheetplayer.noteCount)) {
if(!config.values.noPopupPlay) {
if(config.values.autoPlay && gui.player_panel.isShowing) {
gui.player_panel.__internal_dismiss();
sheetplayer.stop();
@@ -319,6 +322,10 @@ sheetplayer = {
} else {
sheetplayer.stop();
}
} else {
sheetplayer.stop();
gui.main.show(0);
}
}
});
},
@@ -382,7 +389,7 @@ config = {
_global_storage: null,
values: {
currentVersion: 21,
currentVersion: 23,
gitVersion: "",
key_coordinates15: [],
@@ -398,7 +405,11 @@ config = {
tipOnAndroidR: true,
theme: "dark",
autoPlay: false,
lang: "zh_CN"
lang: "zh_CN",
chordDelay: 0,
noPopupPlay: false,
noPopupPlayWarning: true,
intervalSecondsPlayInNoPopupMode: 5,
},
bitmaps: {},
@@ -460,11 +471,12 @@ config = {
page_sc_download_success: "下载完成: {0}\n请在本地曲谱页面刷新",
page_sc_download_failed: "下载 {0} 失败: {1}",
page_sc_upload_title: "如何上传乐谱",
page_sc_upload_desc: "共有种方式可以上传乐谱:\n\n" +
"酷安私信@StageGuard发送时请附带简介曲谱链接(百度云或其他云盘都可)\n" +
"在github fork StageGuard/SkyAutoplayerScript\n" +
page_sc_upload_desc: "共有种方式可以上传乐谱:\n\n" +
"1. 酷安私信@StageGuard发送时请附带简介曲谱链接(百度云或其他云盘都可)\n" +
"2. 在github fork StageGuard/SkyAutoplayerScript\n" +
"在shared_sheets文件夹添加你的曲谱并按照格式修改shared_sheets.json\n" +
"并提出 Pull Request 合并申请\n\n" +
"3. 发送乐谱文件到 beamiscool@qq.com\n\n" +
"注:若是转载转载请注明原作者同意\n\n" +
"如果所有人都白嫖,那么这个列表将永远也不会扩充",
page_sc_upload_open_coolapk: "打开酷安",
@@ -489,6 +501,8 @@ config = {
page_setting_set_15key_coordinate: "设置15键盘键位坐标",
page_setting_key_coordinate_saved: "坐标设置已保存至存储!",
page_setting_random_and_continuate_play: "连续随机播放",
page_setting_no_popup_play: "弹奏不显示悬浮窗",
page_setting_no_popup_play_interval: "无悬浮窗弹奏开始间隔",
page_setting_show_broken_sheet: "显示加载失败的乐谱",
page_setting_show_storage_tip_on_android11: "启动脚本时显示存储提示",
page_setting_set_theme: "设置主题色",
@@ -502,6 +516,7 @@ config = {
page_setting_changelog_title: "更新日志",
page_setting_exit_script: "结束脚本运行",
page_setting_language: "语言",
page_setting_chord_delay: "和弦按压延迟",
gui_player_panel_tip: "拖动标题栏的标题文字来移动弹奏控制面板悬浮窗。",
gui_player_penel_analyzing: "解析中...",
@@ -528,7 +543,19 @@ config = {
res_language_download_failed: "语言下载失败:{0}",
res_language_dialog_tip: "找不到你的语言?欢迎贡献翻译:<br><a href=>https://github.com/StageGuard/SkyAutoPlayerScript</a>",
res_language_failed_fetch_online_list: "无法获取在线语言列表",
res_language_dialog_title: "选择语言"
res_language_dialog_title: "选择语言",
res_language_update_needed: "语言需要更新,请前往设置界面重新点击当前语言来更新",
no_popup_play_warning_title: "警告",
no_popup_play_warning: "您已经开启\"弹奏不显示悬浮窗\"选项!\n" +
"弹奏不受弹奏面板控制是<b>非常危险的</b>。\n\n" +
"当出现顶部悬浮通知(例如QQ消息)或气泡对话时,脚本可能会误触消息并开启其他软件,此时脚本依旧在运行中(弹奏中)且<b>无法被打断</b>。也就是说除了等待弹奏完成以外,没有任何办法终止弹奏。\n" +
"<b>脚本在其他界面的误触可能会对您造成不可挽回的损失!</b>\n\n" +
"另外,使用此功能且录屏不会使你获得任何成就感。\n\n" +
"我已经警告过你了,若因使用此功能造成了损失或纠纷,与 SkyAutoPlayer 脚本和脚本作者 StageGuard 无关,请悉知。\n" +
"若继续使用,请点击确认按钮,否则请点击取消按钮。\n\n" +
"注意:使用此功能时,\"连续随机播放\"功能将不会生效。",
no_popup_play_tip: "将在 {0} 秒后开始弹奏。"
},
},
@@ -538,11 +565,24 @@ config = {
var langs = files.listDir(langPath)
for(var i in langs) {
var code = files.getNameWithoutExtension(langs[i]);
if(code == this.values.lang) {
if(code == this.values.lang && code != "zh_CN") {
try {
var content = JSON.parse(files.read(langPath + langs[i]));
this.languages[content.code] = content.content;
listener(String.format(this.languages[content.code].res_use_language, content.name));
threads.start(function() {
config.fetchRepoFile("source/language_list.json", function(body) {
var onlineList = JSON.parse(body.string()).list;
for(var i in onlineList) {
if(onlineList[i].code == content.code) {
if(onlineList[i].version > content.version) {
toast(config.languages[config.values.lang].res_language_update_needed);
return;
}
}
}
}, null);
})
return;
} catch (e) {
listener(new Error("加载 " + code + " 语言时出错:" + e))
@@ -561,12 +601,12 @@ config = {
updateStaticUIText: function() {
//一些静态文字的修改(我最会写垃圾代码了.jpg)
gui.main.views[0].title = config.languages[config.values.lang].page_lc_title,
gui.main.views[0].navigation_title = config.languages[config.values.lang].page_lc_navigation_title
gui.main.views[1].title = config.languages[config.values.lang].page_sc_title,
gui.main.views[1].navigation_title = config.languages[config.values.lang].page_sc_navigation_title
gui.main.views[2].title = config.languages[config.values.lang].page_lc_title,
gui.main.views[2].navigation_title = config.languages[config.values.lang].page_setting_navigation_title
gui.main.views[0].title = config.languages[config.values.lang].page_lc_title;
gui.main.views[0].navigation_title = config.languages[config.values.lang].page_lc_navigation_title;
gui.main.views[1].title = config.languages[config.values.lang].page_sc_title;
gui.main.views[1].navigation_title = config.languages[config.values.lang].page_sc_navigation_title;
gui.main.views[2].title = config.languages[config.values.lang].page_lc_title;
gui.main.views[2].navigation_title = config.languages[config.values.lang].page_setting_navigation_title;
gui.run(function(){
global_prompt_contentView.setText(android.text.Html.fromHtml(config.languages[config.values.lang].launch_tip_in_content));
});
@@ -589,6 +629,10 @@ config = {
this.values.theme = this._global_storage.get("theme", this.values.theme);
this.values.autoPlay = this._global_storage.get("auto_play", this.values.autoPlay);
this.values.lang = this._global_storage.get("language", this.values.lang)
this.values.chordDelay = this._global_storage.get("chordDelay", this.values.chordDelay)
this.values.noPopupPlay = this._global_storage.get("no_popup_play", this.values.noPopupPlay)
this.values.noPopupPlayWarning = this._global_storage.get("no_popup_play_warning", this.values.noPopupPlayWarning)
this.values.intervalSecondsPlayInNoPopupMode = this._global_storage.get("interval_seconds_play", this.values.intervalSecondsPlayInNoPopupMode)
try {
android.os.Build.VERSION_CODES.R
sheetmgr.rootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/sheets/";
@@ -610,7 +654,7 @@ config = {
var periodVersion = this._global_storage.get("version", this.values.currentVersion);
var currentVersion = this.values.currentVersion;
if(periodVersion < currentVersion) {
config.fetchRepoFile("update_log.txt", this.values.gitVersion, function(body) {
config.fetchRepoFile("update_log.txt", function(body) {
gui.dialogs.showConfirmDialog({
title: config.languages[config.values.lang].res_updated,
text: String.format(config.languages[config.values.lang].res_updated_detail, currentVersion, periodVersion, body.string()),
@@ -625,8 +669,7 @@ config = {
},
fetchResources: function(listener) {
var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/";
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png", "search.png", "note.png", "user.png", "piano.png", "clock.png"/*, "filter.png"*/, "coolapk.png", "douyin.png", "github.png", "twitter.png", "bilibili.png"];
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png", "search.png", "note.png", "user.png", "piano.png", "clock.png"/*, "filter.png"*/, "coolapk.png", "douyin.png", "github.png", "twitter.png", "bilibili.png", "mail.png"];
var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/bitmaps/";
var downloadQueue = [];
var tryCount = 1;
@@ -639,7 +682,7 @@ config = {
try {
listener(String.format(config.languages[config.values.lang].res_loading_detail, element));
config.bitmaps[files.getNameWithoutExtension(absolutePath)] = android.graphics.Bitmap.createBitmap(android.graphics.BitmapFactory.decodeFile(absolutePath));
} catch(e) {
} catch (e) {
listener(String.format(config.languages[config.values.lang].res_loading_error, element));
downloadQueue.push(element);
}
@@ -661,7 +704,7 @@ config = {
var iterator = 0;
tmpQueue.map(function(element, i) {
listener(String.format(config.languages[config.values.lang].res_downloading, element));
config.fetchRepoFile("resources/" + element, config.values.gitVersion, function(body) {
config.fetchRepoFile("resources/" + element, function(body) {
var absolutePath = files.join(localRootDir, element);
files.create(absolutePath);
files.writeBytes(absolutePath, body.bytes());
@@ -683,42 +726,30 @@ config = {
listener(config.languages[config.values.lang].res_download_successful);
java.lang.Thread.sleep(1000); //为了方便看清
}
} catch(error) {
listener(new Error(String.format(config.languages[config.values.lang].res_error_while_downloading, error)));
} catch (e) {
listener(new Error(String.format(config.languages[config.values.lang].res_error_while_downloading, e)));
}
},
//jsdelivr cdn需要指定repo版本, gitee和github则不用
//fetch顺序为 gitee raw content → jsdelivr cdn → github raw content
fetchRepoFile: function(path, gitVersion, successCbk, failCbk) {
//就用最蠢的if来判断吧
fetchRepoFile: function(path, successCbk, failCbk) {
var repos = [
"https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + config.values.gitVersion + "/" + path,
"https://dl.skyautoplayerscript.stageguard.top/" + path,
"https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/" + path,
"https://raw.githubusercontent.com/StageGuard/SkyAutoPlayerScript/master/" + path
];
var errorCollector = new String();
for(var i in repos) {
try {
var resp = http.get(encodeURI("https://gitee.com/stageguard/SkyAutoPlayerScript/raw/master/" + path));
var resp = http.get(encodeURI(repos[i]));
if(resp.statusCode >= 200 && resp.statusCode < 300) {
successCbk(resp.body);
return;
} else {
var errorCollector = resp.statusCode + ": " + resp.statusMessage + "\n";
resp = http.get(encodeURI("https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript" + (gitVersion == null ? "" : ("@" + gitVersion)) + "/" + path));
if(resp.statusCode >= 200 && resp.statusCode < 300) {
successCbk(resp.body);
return;
} else {
errorCollector += resp.statusCode + ": " + resp.statusMessage + "\n";
resp = http.get(encodeURI("https://raw.githubusercontent.com/StageGuard/SkyAutoPlayerScript/master/" + path));
if(resp.statusCode >= 200 && resp.statusCode < 300) {
successCbk(resp.body);
return;
} else {
errorCollector += resp.statusCode + ": " + resp.statusMessage + "\n";
} else errorCollector += "Failed on " + repo[i] + ": " + resp.statusCode + ": " + resp.statusMessage + "\n";
} catch (e) { errorCollector += "Failed on " + repo[i] + ": " + e + "\n"; }
}
if(failCbk != null) failCbk(errorCollector);
}
}
}
} catch(e) {
if(failCbk != null) failCbk(e);
}
},
updateBitmapTheme: function() {
@@ -1711,15 +1742,15 @@ gui = {
cx: 0,
cy: 0,
width: dp * 35,
height: dp * 35,
width: dp * 40,
height: dp * 40,
show: function s() { gui.run(function(){
if(!gui.suspension.isShowing) {
gui.suspension._global_base = new android.widget.TextView(ctx);
gui.suspension._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(gui.suspension.width, gui.suspension.height));
gui.suspension._global_base.setText("\u27e1");
gui.suspension._global_base.setTextColor(android.graphics.Color.parseColor("#FFFFD1"));
gui.suspension._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(gui.suspension.width - dp * 5, gui.suspension.height - dp * 5));
gui.suspension._global_base.setText("\u2726");
gui.suspension._global_base.setTextColor(android.graphics.Color.parseColor("#FFF6D7"));
gui.suspension._global_base.setShadowLayer(dp * 3, 0, 0, android.graphics.Color.parseColor("#390c1a"));
gui.suspension._global_base.setTextSize(30);
gui.suspension._global_base.setOnTouchListener(new android.view.View.OnTouchListener({
@@ -2075,8 +2106,32 @@ gui = {
s.play.setBackgroundDrawable(gui.utils.ripple_drawable(s.play.getMeasuredWidth(), s.play.getMeasuredHeight(), "rect"));
s.play.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {
if(config.values.noPopupPlay) {
if(!config.values.noPopupPlayWarning) {
gui.player_panel.noPopupPlayClick()
} else {
gui.dialogs.showConfirmDialog({
title: config.languages[config.values.lang].no_popup_play_warning_title,
text: android.text.Html.fromHtml(config.languages[config.values.lang].no_popup_play_warning.replace(new RegExp("\x0a", "gi"), "<br>")),
canExit: false,
buttons: [
config.languages[config.values.lang].button_confirm,
config.languages[config.values.lang].button_cancel
],
skip: function(checked) {
config.values.noPopupPlayWarning = config.save("no_popup_play_warning", !checked);
},
callback: function(id) {
if(id == 0) {
gui.player_panel.noPopupPlayClick()
}
}
});
}
} else {
sheetplayer.play(gui.player_panel.refreshStatus);
}
}
}));
s.play.setEnabled(false);
s.play.setClickable(false);
@@ -2209,6 +2264,13 @@ gui = {
});
});},
noPopupPlayClick: function() {
gui.player_panel.__internal_dismiss();
toast(String.format(config.languages[config.values.lang].no_popup_play_tip, config.values.intervalSecondsPlayInNoPopupMode));
(new android.os.Handler()).postDelayed(function() {
sheetplayer.play();
}, config.values.intervalSecondsPlayInNoPopupMode * 1000);
},
__internal_dismiss: function() { gui.run(function(){
if (gui.player_panel.isShowing) {
gui.player_panel.isShowing = false;
@@ -2258,6 +2320,7 @@ gui = {
type: "item",
name: content.name,
code: content.code,
version: content.version,
local: true,
content: content.content
});
@@ -2323,20 +2386,8 @@ gui = {
onItemClick: function(parent, view, pos, id) {
var item = listAdapterController.get(pos);
if(item.type == "item") {
if(item.local) {
config.languages[item.code] = item.content;
config.values.lang = config.save("language", item.code);
toast(String.format(config.languages[config.values.lang].res_use_language, item.name));
gui.main.__internal_dismiss();
gui.suspension.show();
config.updateStaticUIText();
gui.utils.value_animation("Float", 1.0, 0, 125, new android.view.animation.DecelerateInterpolator(), function(anim) {
langDialog.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(langDialog);
});
} else {
threads.start(function() {
config.fetchRepoFile("resources/language_pack/" + item.code + ".json", null, function(body) {
var fetchOnline = function() {
config.fetchRepoFile("resources/language_pack/" + item.code + ".json", function(body) {
var lf = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/lang/" + item.code + ".json";
files.create(lf)
files.writeBytes(lf, body.bytes());
@@ -2354,8 +2405,32 @@ gui = {
}, function(msg) {
toast(String.format(config.languages[config.values.lang].res_language_download_failed, msg));
});
}
if(item.local) {
var isOutdateVersion = false;
for(var i in onlineList) {
if(onlineList[i].code == item.code) {
if(onlineList[i].version > item.version) isOutdateVersion = true;
}
}
if(isOutdateVersion) {
threads.start(fetchOnline);
} else {
config.languages[item.code] = item.content;
config.values.lang = config.save("language", item.code);
toast(String.format(config.languages[config.values.lang].res_use_language, item.name));
gui.main.__internal_dismiss();
gui.suspension.show();
config.updateStaticUIText();
gui.utils.value_animation("Float", 1.0, 0, 125, new android.view.animation.DecelerateInterpolator(), function(anim) {
langDialog.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(langDialog);
});
}
} else {
threads.start(fetchOnline);
}
}
}
}));
@@ -2372,9 +2447,10 @@ gui = {
baseLayout.addView(prompt);
var langDialog = gui.dialogs.showDialog(baseLayout, -2, -2, null, true);
var onlineList = [];
threads.start(function() {
config.fetchRepoFile("source/language_list.json", null, function(body) {
var onlineList = JSON.parse(body.string()).list;
config.fetchRepoFile("source/language_list.json", function(body) {
onlineList = JSON.parse(body.string()).list;
gui.run(function() {
var __listArray = listAdapterController.getArray();
var loadingProgress = __listArray[__listArray.length - 1].v_prog
@@ -2390,6 +2466,7 @@ gui = {
type: "item",
name: onlineList[i].name,
code: onlineList[i].code,
version: onlineList[i].version,
local: false,
});
}
@@ -2615,6 +2692,13 @@ gui.dialogs.showProgressDialog(function(o) {
}
}());
case "bilibili": return "#FB7299";
case "mail": return (function(){
if(config.values.theme == "light") {
return "#24292E";
} else {
return "#FFFFFF";
}
}());
}
}
var filterBitmap = function(bitmap, replacedColor) {
@@ -2651,7 +2735,7 @@ gui.dialogs.showProgressDialog(function(o) {
socialImage.setImageBitmap(filterBitmap(config.bitmaps[item.social[0].platform], android.graphics.Color.parseColor(colorPicker(item.social[0].platform))));
socialLayout.addView(socialImage);
var socialPrompt1 = new android.widget.TextView(ctx);
socialPrompt1.setText(android.text.Html.fromHtml(("在 <font color=" + colorPicker(item.social[0].platform) + ">" + item.social[0].name +"</font> 查看作者")));
socialPrompt1.setText(android.text.Html.fromHtml(("在 <font color=" + colorPicker(item.social[0].platform) + ">" + item.social[0].name + "</font> 查看作者")));
socialPrompt1.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, dp * 34));
socialPrompt1.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
socialPrompt1.setTextColor(gui.config.colors[config.values.theme].text);
@@ -2660,8 +2744,14 @@ gui.dialogs.showProgressDialog(function(o) {
socialLayout.setBackgroundDrawable(gui.utils.ripple_drawable(socialLayout.getMeasuredWidth(), socialLayout.getMeasuredHeight(), "rect"));
socialLayout.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {
if(item.social[0].platform == "mail") {
app.sendEmail({email: item.social[0].link})
} else {
app.openUrl(item.social[0].link);
}
gui.main.__internal_dismiss();
gui.suspension.show();
}
}));
} else {
for(var i in item.social) {
@@ -2675,9 +2765,14 @@ gui.dialogs.showProgressDialog(function(o) {
socialImage.setBackgroundDrawable(gui.utils.ripple_drawable(socialImage.getMeasuredWidth(), socialImage.getMeasuredHeight(), "rect"));
socialImage.setOnClickListener(new android.view.View.OnClickListener({
onClick: function(view) {
print(view.getId())
if(item.social[view.getId()].platform == "mail") {
app.sendEmail({email: item.social[view.getId()].link})
} else {
app.openUrl(item.social[view.getId()].link);
}
gui.main.__internal_dismiss();
gui.suspension.show();
}
}));
socialLayout.addView(socialImage);
}
@@ -3126,7 +3221,7 @@ gui.dialogs.showProgressDialog(function(o) {
element.download.setBackgroundDrawable(gui.utils.ripple_drawable(element.download.getMeasuredWidth(), element.download.getMeasuredHeight(), "rect"));
element.download.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() { threads.start(function() {
if(!element.isShowingStatusBar) sheetmgr.downloadAndLoad(element.file, {author: element.author, keyCount: element.keyCount}, function(r) {
if(!element.isShowingStatusBar) sheetmgr.downloadAndLoad(element.file, {author: element.author, keyCount: element.keyCount, name: element.name}, function(r) {
switch(r.status) {
case 1: {
gui.run(function() {
@@ -3460,6 +3555,29 @@ gui.dialogs.showProgressDialog(function(o) {
onClick: function(checked) {
config.values.autoPlay = config.save("auto_play", checked);
}
}, {
type: "checkbox",
name: config.languages[config.values.lang].page_setting_no_popup_play,
check: config.values.noPopupPlay,
onClick: function(checked) {
config.values.noPopupPlay = config.save("no_popup_play", checked);
}
}, {
type: "seekbar",
name: config.languages[config.values.lang].page_setting_no_popup_play_interval,
value: config.values.intervalSecondsPlayInNoPopupMode,
range: [3, 15],
onChangeUp: function(value) {
config.values.intervalSecondsPlayInNoPopupMode = config.save("interval_seconds_play", value);
}
}, {
type: "seekbar",
name: config.languages[config.values.lang].page_setting_chord_delay,
value: config.values.chordDelay,
range: [0, 100],
onChangeUp: function(value) {
config.values.chordDelay = config.save("chordDelay", value);
}
}, {
type: "checkbox",
name: config.languages[config.values.lang].page_setting_show_broken_sheet,
@@ -3511,7 +3629,7 @@ gui.dialogs.showProgressDialog(function(o) {
name: config.languages[config.values.lang].page_setting_show_license,
onClick: function(v) {
threads.start(function() {
config.fetchRepoFile("LICENSE", null, function(body) {
config.fetchRepoFile("LICENSE", function(body) {
gui.dialogs.showConfirmDialog({
title: "GNU GENERAL PUBLIC LICENSE",
text: body.string(),
@@ -3526,7 +3644,7 @@ gui.dialogs.showProgressDialog(function(o) {
name: config.languages[config.values.lang].page_setting_show_changelog,
onClick: function(v) {
threads.start(function() {
config.fetchRepoFile("update_log.txt", null, function(body) {
config.fetchRepoFile("update_log.txt", function(body) {
gui.dialogs.showConfirmDialog({
title: config.languages[config.values.lang].page_setting_changelog_title,
text: body.string(),
@@ -3550,7 +3668,7 @@ gui.dialogs.showProgressDialog(function(o) {
try {
android.os.Build.VERSION_CODES.R
} catch (e) {
sList.list.splice(6, 1);
sList.list.splice(9, 1);
}
return sList.list;
}()), function self(element) {
@@ -3607,6 +3725,43 @@ gui.dialogs.showProgressDialog(function(o) {
}));
element.v_relative.addView(element.v_checkbox);
break;
case "seekbar":
element.v_title = new android.widget.TextView(ctx);
element.v_title.setId(114);
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_TOP);
element.v_title.setTextSize(14);
element.v_title.setTextColor(gui.config.colors[config.values.theme].text);
element.v_title.setText(element.name);
element.v_relative.addView(element.v_title);
element.v_disp = new android.widget.TextView(ctx);
element.v_disp.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
element.v_disp.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_disp.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 25, dp * 10);
element.v_disp.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
element.v_disp.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_TOP);
element.v_disp.setTextSize(12);
element.v_disp.setTextColor(gui.config.colors[config.values.theme].sec_text);
element.v_disp.setText(String(Math.round(element.value)));
element.v_relative.addView(element.v_disp);
element.v_seek = android.widget.SeekBar(ctx);
element.v_seek.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, -2));
element.v_seek.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 114);
element.v_seek.setMax(100);
element.v_seek.setProgress(element.value / (element.range[1] - element.range[0]) * 100);
element.v_seek.setOnSeekBarChangeListener(new android.widget.SeekBar.OnSeekBarChangeListener({
onProgressChanged: function(sb, prog) {
element.v_disp.setText(String(Math.round(sb.getProgress() / 100 * (element.range[1] - element.range[0]) + element.range[0])));
},
onStopTrackingTouch: function(sb) {
element.onChangeUp(sb.getProgress() / 100 * (element.range[1] - element.range[0]) + element.range[0]);
},
}));
element.v_relative.addView(element.v_seek);
break;
}
return element.v_relative;

View File

@@ -1,9 +1,11 @@
{
"list": [{
"code": "zh_CN",
"name": "简体中文"
"name": "简体中文",
"version": 5
}, {
"code": "en_US",
"name": "English (US)"
"name": "English (US)",
"version": 5
}]
}

View File

@@ -3,7 +3,7 @@
/*
SkyAutoPlayer (Auto.js script)
Copyright © 2020 StageGuard
Copyright © 2020-2021 StageGuard
Contact :
(QQ: 1355416608)
(Email: beamiscool@qq.com)

View File

@@ -1,4 +1,15 @@
版本: 20
版本: 23
更新时间: 2021.6.29 13:10
更新内容:
* 新增:"弹奏不显示弹奏界面"选项(Issue #6)。
版本: 22
更新时间: 2020.12.22 23:48
更新内容:
* 新增:和弦按键按压延迟,可在设置中调整。
这个功能就是在按压和弦的时候可以按照设定的时间依次从低音到高音依次按压。
版本: 21
更新时间: 2020.12.22 18:31
更新内容:
* 新增:多语言设置。