diff --git a/.gitignore b/.gitignore index aa0926a..7311663 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,12 @@ node_modules/ dist/ .env *.log + +# Internal development docs +docs/ + +# Playwright persistent profile (login session cache) +.chromium-profile/ + +# SQLite runtime database +data/ diff --git a/README.md b/README.md index 0e84503..8babccd 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,100 @@ # ๐๏ธ RedNoteDanmuBot -ๅฐ็บขไนฆ็ดๆญ้ดๅผนๅนๆบๅจไบบ โ ้่ฟ Web ๆงๅถ้ขๆฟ่ชๅจๅ้ๅผนๅนใ +ๅฐ็บขไนฆ็ดๆญ้ดๅผนๅนๆบๅจไบบ โ Web ๆงๅถ้ขๆฟ่ชๅจๅ้ๅผนๅน๏ผๆฏๆ Chrome / Edge / Safariใ -## ๅ่ฝ +## ๅ่ฝไธ่ง -- **Web ๆงๅถ้ขๆฟ**๏ผๆต่งๅจๆไฝ็้ข๏ผๅฎๆถๆงๅถ -- **่ชๅจๅๅผนๅน**๏ผ็จๆทๆๅฎๅ็ผ + ้ๆบๅญ็ฌฆไธฒ๏ผ้ฒๅๅผนๅน๏ผ -- **้ข็ๆงๅถ**๏ผๅฏ่ฐๅ้้ด้ + ้ๆบๆๅจ๏ผ้ฒ้ฃๆง๏ผ -- **้ๆบๅญ็ฌฆไธฒ**๏ผๅญๆฏใ็ฌฆๅทใ่กจๆ ๆททๆญ๏ผไธๅซๆฐๅญ๏ผ็จๆทๅฏ่ชๅฎไนๅญ็ฌฆ้ -- **ๅฎๆถๆฅๅฟ**๏ผๅ้็ถๆใ่ฎกๆฐใ้่ฏฏไฟกๆฏไธ็ฎไบ็ถ +| ๅ่ฝ | ่ฏดๆ | +|------|------| +| ๐ฎ **ไธ้ขๆฟๆงๅถ** | ๆงๅถ / ๅ ณ้ฎ่ฏ / ๆฐๆฎ๏ผๆ ็ญพ้กตๅๆข | +| ๐ง **ไธๆจกๅผๆถๆฏ** | ็ดๆฅ / ๅ ณ้ฎ่ฏ / ๅ จ้ๆบ ไธ็งๆถๆฏๆจกๅผ | +| ๐ **ๅ ณ้ฎ่ฏ็ฎก็** | ๅขๅ ๆนๅ ณ้ฎ่ฏ๏ผiOS ๅผๅ ณๅฏ็จ/็ฆ็จ | +| ๐ **ๆฐๆฎ็ๆฟ** | ๅฎๆถๆ็บฟๅพ + 7 ๆฅๆฑ็ถๅพ + 4 ๅผ ็ป่ฎกๅก | +| ๐พ **่ชๅจๆไน ๅ** | SQLite ๅญๅจๅ้่ฎฐๅฝ๏ผ้ๅฏไธไธข | +| ๐ฏ **ๆบ่ฝ้ฒๆฃๆต** | ้ๆบๆๅจ ยฑ30%ใๆฏๆฌกๆถๆฏไธๅใ็ไบบๅ | +| ๐ **ๅ ้ๅคๆซ็ ** | ๆต่งๅจไผ่ฏๆไน ๅ๏ผไธๆฌก็ปๅฝ้ฟๆไฝฟ็จ | +| ๐ **ๅคๆต่งๅจ** | Chrome / Edge / Safari ไปปๆๅๆข | ## ๅฟซ้ๅผๅง +### macOS + ```bash -# 1. ๅฎ่ฃ ๅ็ซฏไพ่ต +# 1. ๅ ้้กน็ฎ +git clone https://github.com/sekiwhat/RedNoteDanmuBot.git +cd RedNoteDanmuBot + +# 2. ๅฎ่ฃ ๅ็ซฏไพ่ต npm install -# 2. ๅฎ่ฃ ๅ็ซฏไพ่ตๅนถๆๅปบ +# 3. ๅฎ่ฃ ๅ็ซฏไพ่ตๅนถๆๅปบ cd client && npm install && npx vite build && cd .. -# 3. ๅฏๅจๆๅก +# 4. ๅฏๅจ npm run server ``` ๆๅผๆต่งๅจ่ฎฟ้ฎ **http://localhost:3000** -## ไฝฟ็จ่ฏดๆ +### Windows + +```bash +# ๆญฅ้ชคๅไธ๏ผๅฎๅ จไธ่ด +npm install +cd client && npm install && npx vite build && cd .. +npm run server +``` + +### macOS ็นๅซ่ฏดๆ + +| ๆต่งๅจ | ๆฏๅฆ้่ฆ้ขๅคๆไฝ | +|--------|----------------| +| **Chrome** | โ ๅณๅผๅณ็จ๏ผ้ๅทฒๅฎ่ฃ Chrome๏ผ | +| **Edge** | โ ๅณๅผๅณ็จ | +| **Safari / WebKit** | ่ฟ่ก `npx playwright install webkit`๏ผ้ฆๆฌก๏ผ | + +> ๐ก macOS ไธ Safari ๆจกๅผไฝฟ็จ็ๆฏ Playwright ่ชๅธฆ็ WebKit ๅผๆ๏ผ้็ณป็ป Safari๏ผ๏ผ่กจ็ฐไธ Chrome ไธ่ดใ + +## ไฝฟ็จๆๅ + +### ็ฌฌไธๆญฅ๏ผ่ฟๆฅ็ดๆญ้ด + +``` +โ ๅฏๅจๆๅก โ โก ๆๅผ http://localhost:3000 +โข ้ๆฉๆต่งๅจ โ โฃ ่พๅ ฅ็ดๆญ้ด URL โ โค ็นๅปใ่ฟๆฅใ +โฅ ๅจ Playwright ๆๅผ็ๆต่งๅจ็ชๅฃไธญๆซ็ ็ปๅฝๅฐ็บขไนฆ +``` + +### ็ฌฌไบๆญฅ๏ผ้ๆฉๆถๆฏๆจกๅผ + +**็ดๆฅๆจกๅผ**๏ผไป ๅ้ๅ็ผ๏ผไธๅ ไปปไฝๅ็ผ + +``` +"76" โ "76" +"ๅคงๅฎถๅฅฝ" โ "ๅคงๅฎถๅฅฝ" +``` -1. **ๅฏๅจๆๅก**ๅ๏ผๆต่งๅจๆๅผๆงๅถ้ขๆฟ -2. ๅจๅฐ็บขไนฆ็ดๆญ้ด้กต้ข**ๆซ็ ็ปๅฝ**๏ผ้่ฆๅ ๅจๆต่งๅจ็ปๅฝๅฐ็บขไนฆ๏ผ -3. ๅคๅถ็ดๆญ้ด URL ็ฒ่ดดๅฐๆงๅถ้ขๆฟ โ ็นๅปใ่ฟๆฅใ -4. Playwright ไผ่ชๅจๆๅผไธไธชๆต่งๅจ็ชๅฃ่ฟๅ ฅ็ดๆญ้ด๏ผๅจ**่ฏฅ็ชๅฃ**ไธญๅฎๆๆซ็ ็ปๅฝ๏ผๅฆๆ้่ฆ๏ผ -5. ่ฎพ็ฝฎๆถๆฏๅ็ผใๅ้้ด้ใ้ๆบไธฒ้ ็ฝฎ -6. ็นๅปใๅผๅงๅ้ใ -7. ็นๅปใๅๆญขใ็ปๆๅ้ +**ๅ จ้ๆบๆจกๅผ**๏ผ้ป่ฎค๏ผ๏ผๅ็ผ + ้ๆบๅญๆฏ/็ฌฆๅท/่กจๆ ๏ผๅฏ่ฐ้ฟๅบฆๅๅญ็ฌฆ้๏ผ + +``` +"76" + "xK@!๐" โ "76xK@!๐" +"76" + "Ab~#๐น" โ "76Ab~#๐น" +``` + +**ๅ ณ้ฎ่ฏๆจกๅผ**๏ผๆฏๆฌกไปไฝ ็่ฏๅบไธญ้ๆบ้ไธไธช๏ผ่ฟฝๅ ็ฌฆๅท + +``` +"76" + "ไธญ๏ผ" + "~!@๐" โ "76ไธญ๏ผ~!@๐" +"76" + "ๅฒๅฒๅฒ" + "๐ฅโจ" โ "76ๅฒๅฒๅฒ๐ฅโจ" +``` + +### ็ฌฌไธๆญฅ๏ผๅผๅงๅ้ + +``` +่ฎพ็ฝฎๅ็ผ๏ผๅฆ "76"๏ผโ ่ฐๆด้ด้๏ผๅปบ่ฎฎ 2000ms๏ผ +โ ็นๅปใๅผๅงๅ้ใโ ๅๅฐใๆฐๆฎใ็ๅฎๆถ็ป่ฎก +โ ็นๅปใๅๆญขใ็ปๆ +``` ## ้ ็ฝฎ @@ -42,61 +103,66 @@ npm run server | ้ ็ฝฎ้กน | ้ป่ฎคๅผ | ่ฏดๆ | |--------|--------|------| | `port` | 3000 | ๆๅก็ซฏๅฃ | -| `defaultInterval` | 2500 | ้ป่ฎคๅ้้ด้ (ms) | -| `minInterval` | 1500 | ๆๅฐๅ้้ด้ (ms) | -| `maxInterval` | 8000 | ๆๅคงๅ้้ด้ (ms) | -| `jitterRatio` | 0.3 | ้ด้ๆๅจๆฏไพ (ยฑ30%) | -| `headless` | false | ๆฏๅฆๆ ๅคดๆต่งๅจๆจกๅผ | -| `randomLengthMin` | 3 | ้ๆบไธฒๆๅฐ้ฟๅบฆ | -| `randomLengthMax` | 6 | ้ๆบไธฒๆๅคง้ฟๅบฆ | +| `browser` | `chrome` | ้ป่ฎคๆต่งๅจ | +| `defaultInterval` | 2500 | ๅ้้ด้ (ms) | +| `minInterval` | 1500 | ๆๅฐ้ด้ | +| `maxInterval` | 8000 | ๆๅคง้ด้ | +| `jitterRatio` | 0.3 | ๆๅจๆฏไพ (ยฑ30%) | +| `headless` | false | ๆ ๅคดๆจกๅผ | +| `userDataDir` | `.chromium-profile` | ไผ่ฏ็ผๅญ็ฎๅฝ | + +## ๆๆฏๆ + +| ๅฑ | ๆๆฏ | +|----|------| +| ๅ็ซฏ | Node.js + Express + WebSocket | +| ๆต่งๅจ | Playwright (Chrome / Edge / WebKit) | +| ๅ็ซฏ | Vue 3 + Chart.js + Vite | +| ๅญๅจ | SQLite (better-sqlite3) | + +## ้กน็ฎ็ปๆ + +``` +RedNoteDanmuBot/ +โโโ server/ # ๅ็ซฏ +โ โโโ index.js # Express + WebSocket +โ โโโ bot.js # Playwright ๆ ธๅฟ +โ โโโ messageEngine.js # ๆบ่ฝๆถๆฏๅผๆ +โ โโโ database.js # SQLite ๆไน ๅ +โ โโโ randomizer.js # ้ๆบๅญ็ฌฆไธฒ +โ โโโ config.js # ้ ็ฝฎ +โ โโโ __tests__/ # 13 ไธชๆต่ฏ +โโโ client/ # ๅ็ซฏ +โ โโโ src/ +โ โโโ App.vue # ไธป้ขๆฟ +โ โโโ components/ +โ โ โโโ KeywordManager.vue # ๅ ณ้ฎ่ฏ็ฎก็ +โ โ โโโ AnalyticsPanel.vue # ๆฐๆฎ็ๆฟ +โ โโโ style.css +โโโ data/ # SQLite๏ผ่ชๅจๅๅปบ๏ผ +โโโ .chromium-profile/ # ๆต่งๅจไผ่ฏ๏ผ่ชๅจๅๅปบ๏ผ +โโโ package.json +``` ## ๅผๅ ```bash -# ๅ็ซฏ็ญๆดๆฐๅผๅ +# ๅ็ซฏ็ญๆดๆฐ cd client && npx vite # ่ฟ่กๆต่ฏ -npx jest server/__tests__/randomizer.test.js +npx --node-options="--experimental-vm-modules" jest # ๆๅปบๅ็ซฏ cd client && npx vite build ``` -## ้กน็ฎ็ปๆ - -``` -RedNoteDanmuBot/ -โโโ server/ -โ โโโ index.js # Express + WebSocket ๆๅก -โ โโโ bot.js # Playwright ๅผนๅนๅ้ๆ ธๅฟ -โ โโโ randomizer.js # ้ๆบๅญ็ฌฆไธฒ็ๆ -โ โโโ config.js # ้ป่ฎค้ ็ฝฎ -โ โโโ __tests__/ -โ โโโ randomizer.test.js -โโโ client/ -โ โโโ src/ -โ โ โโโ App.vue # ไธปๆงๅถ้ขๆฟ -โ โ โโโ main.js -โ โ โโโ style.css -โ โโโ index.html -โ โโโ vite.config.js -โโโ docs/ -โ โโโ superpowers/ -โโโ package.json -โโโ README.md -``` - -## ๆๆฏๆ - -| ๅฑ | ๆๆฏ | -|----|------| -| ๅ็ซฏ | Node.js + Express + WebSocket | -| ๆต่งๅจ่ชๅจๅ | Playwright | -| ๅ็ซฏ | Vue 3 + Vite | +ๆต่ฏ่ฆ็๏ผ`randomizer` / `database` / `messageEngine`๏ผๅ ฑ 13 ไธชใ -## ๆณจๆไบ้กน +## ๆณจๆ -- ่ฏทๅ็ไฝฟ็จ๏ผ้ฟๅ ่ฟๅๅฐ็บขไนฆ็คพๅบ่งๅ -- ๅ้้ข็ไธๅฎ่ฟๅฟซ๏ผๅปบ่ฎฎ 2-3 ็งไปฅไธ้ด้ -- ้ฆๆฌกไฝฟ็จ้่ฆๅจๅฐ็บขไนฆ็ดๆญ้ดๅฎๆๆซ็ ็ปๅฝ +- โ ๏ธ ่ฏทๅ็ไฝฟ็จ๏ผ้ตๅฎๅฐ็บขไนฆ็คพๅบ่งๅ +- โฑ ๅ้้ด้ๅปบ่ฎฎ 2000ms ไปฅไธ๏ผๅคชๅฟซๅฎนๆ่ขซ้ฃๆง +- ๐ ้ฆๆฌกไฝฟ็จ้ๅจ Playwright ๆๅผ็ๆต่งๅจไธญๆซ็ ็ปๅฝ +- ๐พ ็ปๅฝๆไฟๅญๅจ `.chromium-profile/`๏ผไธๆฌกๅ ๆซ็ +- ๐ macOS ็จๆท้ฆๆฌกไฝฟ็จ Safari ๆจกๅผ้ๅ ่ท `npx playwright install webkit` diff --git a/client/index.html b/client/index.html index e8b934f..10efd93 100644 --- a/client/index.html +++ b/client/index.html @@ -3,7 +3,7 @@
-ๅฐ็บขไนฆๅผนๅนๆบๅจไบบๆงๅถ้ขๆฟ
+ ๅฐ็บขไนฆๅผนๅนๆงๅถ้ขๆฟ