|
1 | | - |
2 | | -const { Client } = require('node-osc') |
3 | | -const WebSocket = require('ws') |
4 | | -const readline = require('readline') |
5 | | -const { stdin: input, stdout: output } = require('node:process') |
6 | | -const open = require('open') |
7 | | -const rl = readline.createInterface({ input, output }) |
8 | | -const { WS } = require('./method') |
9 | | -const { pulsoidApi } = require('./pulsoidApi') |
10 | | -const pulsoidAuthPage = () => { |
11 | | - return `${pulsoidApi.baseUrl}?client_id=${pulsoidApi.client_id}&redirect_uri=${pulsoidApi.redirect_uri}&response_type=${pulsoidApi.response_type}&scope=${pulsoidApi.scope}&state=${pulsoidApi.state}&response_mode=${pulsoidApi.response_mode}` |
| 1 | +const { ReadFile, stringIsnullOrEmpty } = require('./method') |
| 2 | +const { StartAuth } = require('./auth') |
| 3 | +const { RunPulsoid } = require('./main') |
| 4 | +const token = ReadFile('token.txt') |
| 5 | +if (stringIsnullOrEmpty(token)) { |
| 6 | + StartAuth().then(_token => { |
| 7 | + if (stringIsnullOrEmpty(_token)){ |
| 8 | + console.log('no Enter.') |
| 9 | + process.exit(1) |
| 10 | + } |
| 11 | + RunPulsoid(token) |
| 12 | + }) |
| 13 | +} |
| 14 | +else { |
| 15 | + RunPulsoid(token) |
12 | 16 | } |
13 | | -console.log('Open Pulsoid Auth Page...') |
14 | | -open(pulsoidAuthPage()) |
15 | | -/** |
16 | | - * @type {string} |
17 | | - */ |
18 | | -rl.question('Enter Pulsoid Auth Token: ', (token) => { |
19 | | - if (token == '') { |
20 | | - console.log('no Enter.') |
21 | | - return |
22 | | - } |
23 | | - let Start = () => { |
24 | | - const wspath = `/api/v1/data/real_time?access_token=${token}` |
25 | | - const ws = new WS("dev.pulsoid.net", "", wspath, true) |
26 | | - let hbToggle = false |
27 | | - ws.message(ev => { |
28 | | - /** |
29 | | - * @type {{ |
30 | | - * data: { |
31 | | - * heartRate: number |
32 | | - * } |
33 | | - * }} |
34 | | - */ |
35 | | - const data = JSON.parse(ev) |
36 | | - const heartRate = data?.data?.heartRate |
37 | | - if (!heartRate) return console.log('Got heart rate: 0 bpm, skipping parameter update...') |
38 | | - console.log('Got heart rate: %s bpm', heartRate) |
39 | | - const client = new Client('localhost', 9000) |
40 | | - // 参考自该代码: |
41 | | - // https://github.com/vard88508/vrc-osc-miband-hrm/blob/f60c3422c36921d317168ed38b1362528e8364e9/app.js#L24-L50 |
42 | | - const Heartrates = [ |
43 | | - { |
44 | | - address: '/avatar/parameters/Heartrate', |
45 | | - args: |
46 | | - { |
47 | | - type: 'f', |
48 | | - value: data.data.heartRate / 127 - 1 |
49 | | - } |
50 | | - }, |
51 | | - { |
52 | | - address: "/avatar/parameters/HeartRateFloat", |
53 | | - args: |
54 | | - { |
55 | | - type: "f", |
56 | | - value: data.data.heartRate / 127 - 1 |
57 | | - } |
58 | | - }, |
59 | | - { |
60 | | - address: "/avatar/parameters/Heartrate2", |
61 | | - args: |
62 | | - { |
63 | | - type: "f", |
64 | | - value: data.data.heartRate / 255 |
65 | | - } |
66 | | - }, |
67 | | - { |
68 | | - address: "/avatar/parameters/HeartRateFloat01", |
69 | | - args: |
70 | | - { |
71 | | - type: "f", |
72 | | - value: data.data.heartRate / 255 |
73 | | - } |
74 | | - }, |
75 | | - { |
76 | | - address: "/avatar/parameters/Heartrate3", |
77 | | - args: |
78 | | - { |
79 | | - type: "i", |
80 | | - value: data.data.heartRate |
81 | | - } |
82 | | - }, |
83 | | - { |
84 | | - address: "/avatar/parameters/HeartRateInt", |
85 | | - args: |
86 | | - { |
87 | | - type: "i", |
88 | | - value: data.data.heartRate |
89 | | - } |
90 | | - }, |
91 | | - { |
92 | | - address: "/avatar/parameters/HeartBeatToggle", |
93 | | - args: |
94 | | - { |
95 | | - type: "b", |
96 | | - value: hbToggle |
97 | | - } |
98 | | - } |
99 | | - ] |
100 | | - Heartrates.forEach(element => { |
101 | | - client.send(element) |
102 | | - if (element.address === "/avatar/parameters/HeartBeatToggle") { |
103 | | - hbToggle = !hbToggle |
104 | | - } |
105 | | - }); |
106 | | - }) |
107 | | - ws.realclose = false |
108 | | - ws.connect().then(() => { |
109 | | - console.log('Connected to Pulsoid.') |
110 | | - }) |
111 | | - } |
112 | | - Start() |
113 | | -}) |
114 | | - |
0 commit comments