├── .eslintignore
├── .eslintrc
├── .github
├── FUNDING.yml
└── ISSUE_TEMPLATE
│ └── bug_report.md
├── .gitignore
├── LICENSE.md
├── README.md
├── addons
├── notifications
│ ├── addon.js
│ ├── config.ini
│ ├── index.html
│ └── package.json
├── obs-studio
│ ├── addon.js
│ ├── config.ini
│ ├── index.html
│ └── package.json
├── spotify
│ ├── addon.js
│ ├── auth.json
│ ├── config.ini
│ ├── index.html
│ └── package.json
└── twitch
│ ├── addon.js
│ ├── auth.json
│ ├── config.ini
│ ├── index.html
│ ├── package.json
│ └── twurple.js
├── build
├── afterPack.js
├── icon.icns
├── icon.png
└── license.txt
├── docs
├── .nojekyll
├── _config.yml
├── css
│ ├── github-markdown-dark.css
│ └── main.css
├── favicon.ico
├── images
│ ├── logo.webp
│ ├── multi-actions
│ │ ├── blocks
│ │ │ ├── app-status.webp
│ │ │ ├── audio-play.webp
│ │ │ ├── audio-stop.webp
│ │ │ ├── cooldown.webp
│ │ │ ├── discord-webhook-embed.webp
│ │ │ ├── discord-webhook-message.webp
│ │ │ ├── download-file.webp
│ │ │ ├── file-read.webp
│ │ │ ├── file-write.webp
│ │ │ ├── http-request.webp
│ │ │ ├── keyboard-shortcut.webp
│ │ │ ├── kill-app.webp
│ │ │ ├── launch-app.webp
│ │ │ ├── launch.webp
│ │ │ ├── note.webp
│ │ │ ├── notification.webp
│ │ │ ├── obs-studio-connection.webp
│ │ │ ├── obs-studio-exit.webp
│ │ │ ├── obs-studio-lock-source.webp
│ │ │ ├── obs-studio-recording.webp
│ │ │ ├── obs-studio-replay.webp
│ │ │ ├── obs-studio-save-replay.webp
│ │ │ ├── obs-studio-set-browser.webp
│ │ │ ├── obs-studio-set-image.webp
│ │ │ ├── obs-studio-set-media.webp
│ │ │ ├── obs-studio-set-text.webp
│ │ │ ├── obs-studio-source-selected.webp
│ │ │ ├── obs-studio-streaming.webp
│ │ │ ├── obs-studio-switch-scene.webp
│ │ │ ├── obs-studio-toggle-filter.webp
│ │ │ ├── obs-studio-toggle-source.webp
│ │ │ ├── obs-studio-virtualcam.webp
│ │ │ ├── open-url.webp
│ │ │ ├── self-timer.webp
│ │ │ ├── socket-request.webp
│ │ │ ├── spotify-add-to-queue.webp
│ │ │ ├── spotify-current-queue.webp
│ │ │ ├── spotify-currently-playing.webp
│ │ │ ├── spotify-play-pause.webp
│ │ │ ├── spotify-prev-next.webp
│ │ │ ├── spotify-repeat.webp
│ │ │ ├── spotify-search.webp
│ │ │ ├── spotify-shuffle.webp
│ │ │ ├── spotify-volume.webp
│ │ │ ├── streamdeck-action.webp
│ │ │ ├── toggle-block.webp
│ │ │ ├── twitch-action.webp
│ │ │ ├── twitch-announce.webp
│ │ │ ├── twitch-ban.webp
│ │ │ ├── twitch-chat-clear.webp
│ │ │ ├── twitch-cheer.webp
│ │ │ ├── twitch-command.webp
│ │ │ ├── twitch-community-pay-forward.webp
│ │ │ ├── twitch-community-sub.webp
│ │ │ ├── twitch-delete-message.webp
│ │ │ ├── twitch-emote-only.webp
│ │ │ ├── twitch-first-message.webp
│ │ │ ├── twitch-follow.webp
│ │ │ ├── twitch-followers-only.webp
│ │ │ ├── twitch-game.webp
│ │ │ ├── twitch-gift-paid-upgrade.webp
│ │ │ ├── twitch-host.webp
│ │ │ ├── twitch-hosted.webp
│ │ │ ├── twitch-info.webp
│ │ │ ├── twitch-message-delay.webp
│ │ │ ├── twitch-message-remove.webp
│ │ │ ├── twitch-message.webp
│ │ │ ├── twitch-prime-community-gift.webp
│ │ │ ├── twitch-prime-paid-upgrade.webp
│ │ │ ├── twitch-raid-cancel.webp
│ │ │ ├── twitch-raid.webp
│ │ │ ├── twitch-redemption.webp
│ │ │ ├── twitch-resub.webp
│ │ │ ├── twitch-reward-gift.webp
│ │ │ ├── twitch-ritual.webp
│ │ │ ├── twitch-shoutout.webp
│ │ │ ├── twitch-slow.webp
│ │ │ ├── twitch-standard-pay-forward.webp
│ │ │ ├── twitch-sub-extend.webp
│ │ │ ├── twitch-sub-gift.webp
│ │ │ ├── twitch-sub.webp
│ │ │ ├── twitch-subs-only.webp
│ │ │ ├── twitch-timeout.webp
│ │ │ ├── twitch-unhost.webp
│ │ │ ├── twitch-unique-message.webp
│ │ │ ├── twitch-whisper.webp
│ │ │ ├── usb-detection.webp
│ │ │ ├── variable-condition.webp
│ │ │ ├── variable-increment.webp
│ │ │ ├── variable-remove.webp
│ │ │ ├── variable-replace.webp
│ │ │ ├── variable-setter.webp
│ │ │ └── websocket-request.webp
│ │ ├── deprecated.webp
│ │ ├── input.webp
│ │ ├── output.webp
│ │ └── visuals
│ │ │ ├── v2.0
│ │ │ ├── both-cooldown.webp
│ │ │ ├── both-http-request.webp
│ │ │ ├── both-launch-app.webp
│ │ │ ├── both-self-timer.webp
│ │ │ ├── both-socket-request.webp
│ │ │ ├── both-spotify-search.webp
│ │ │ ├── both-twitch-game.webp
│ │ │ ├── both-twitch-info.webp
│ │ │ ├── both-variable-condition.webp
│ │ │ ├── both-variable-increment.webp
│ │ │ ├── both-variable-remove.webp
│ │ │ ├── both-variable-replace.webp
│ │ │ ├── both-variable-setter.webp
│ │ │ ├── both-websocket-request.webp
│ │ │ ├── inputs-audio-play.webp
│ │ │ ├── inputs-audio-stop.webp
│ │ │ ├── inputs-discord-webhook-embed.webp
│ │ │ ├── inputs-discord-webhook-message.webp
│ │ │ ├── inputs-kill-app.webp
│ │ │ ├── inputs-notification.webp
│ │ │ ├── inputs-obs-studio-lock-source.webp
│ │ │ ├── inputs-obs-studio-recording.webp
│ │ │ ├── inputs-obs-studio-replay.webp
│ │ │ ├── inputs-obs-studio-save-replay.webp
│ │ │ ├── inputs-obs-studio-set-text.webp
│ │ │ ├── inputs-obs-studio-streaming.webp
│ │ │ ├── inputs-obs-studio-switch-scene.webp
│ │ │ ├── inputs-obs-studio-toggle-filter.webp
│ │ │ ├── inputs-obs-studio-toggle-source.webp
│ │ │ ├── inputs-obs-studio-virtualcam.webp
│ │ │ ├── inputs-open-url.webp
│ │ │ ├── inputs-spotify-add-to-queue.webp
│ │ │ ├── inputs-spotify-play-pause.webp
│ │ │ ├── inputs-spotify-prev-next.webp
│ │ │ ├── inputs-spotify-repeat.webp
│ │ │ ├── inputs-spotify-shuffle.webp
│ │ │ ├── inputs-spotify-volume.webp
│ │ │ ├── inputs-toggle-block.webp
│ │ │ ├── inputs-twitch-action.webp
│ │ │ ├── inputs-twitch-announce.webp
│ │ │ ├── inputs-twitch-ban.webp
│ │ │ ├── inputs-twitch-chat-clear.webp
│ │ │ ├── inputs-twitch-delete-message.webp
│ │ │ ├── inputs-twitch-emote-only.webp
│ │ │ ├── inputs-twitch-followers-only.webp
│ │ │ ├── inputs-twitch-host.webp
│ │ │ ├── inputs-twitch-info.webp
│ │ │ ├── inputs-twitch-message-delay.webp
│ │ │ ├── inputs-twitch-message.webp
│ │ │ ├── inputs-twitch-raid-cancel.webp
│ │ │ ├── inputs-twitch-raid.webp
│ │ │ ├── inputs-twitch-slow.webp
│ │ │ ├── inputs-twitch-subs-only.webp
│ │ │ ├── inputs-twitch-timeout.webp
│ │ │ ├── inputs-twitch-unhost.webp
│ │ │ ├── inputs-twitch-unique-message.webp
│ │ │ ├── inputs-twitch-whisper.webp
│ │ │ ├── outputs-app-status.webp
│ │ │ ├── outputs-launch.webp
│ │ │ ├── outputs-obs-studio-connection.webp
│ │ │ ├── outputs-obs-studio-exit.webp
│ │ │ ├── outputs-obs-studio-lock-source.webp
│ │ │ ├── outputs-obs-studio-recording.webp
│ │ │ ├── outputs-obs-studio-replay.webp
│ │ │ ├── outputs-obs-studio-save-replay.webp
│ │ │ ├── outputs-obs-studio-source-selected.webp
│ │ │ ├── outputs-obs-studio-streaming.webp
│ │ │ ├── outputs-obs-studio-switch-scene.webp
│ │ │ ├── outputs-obs-studio-toggle-filter.webp
│ │ │ ├── outputs-obs-studio-toggle-source.webp
│ │ │ ├── outputs-obs-studio-virtualcam.webp
│ │ │ ├── outputs-toggle-block.webp
│ │ │ ├── outputs-twitch-action.webp
│ │ │ ├── outputs-twitch-announce.webp
│ │ │ ├── outputs-twitch-ban.webp
│ │ │ ├── outputs-twitch-chat-clear.webp
│ │ │ ├── outputs-twitch-cheer.webp
│ │ │ ├── outputs-twitch-command.webp
│ │ │ ├── outputs-twitch-community-pay-forward.webp
│ │ │ ├── outputs-twitch-community-sub.webp
│ │ │ ├── outputs-twitch-emote-only.webp
│ │ │ ├── outputs-twitch-first-message.webp
│ │ │ ├── outputs-twitch-follow.webp
│ │ │ ├── outputs-twitch-followers-only.webp
│ │ │ ├── outputs-twitch-gift-paid-upgrade.webp
│ │ │ ├── outputs-twitch-host.webp
│ │ │ ├── outputs-twitch-hosted.webp
│ │ │ ├── outputs-twitch-info.webp
│ │ │ ├── outputs-twitch-message-remove.webp
│ │ │ ├── outputs-twitch-message.webp
│ │ │ ├── outputs-twitch-prime-community-gift.webp
│ │ │ ├── outputs-twitch-prime-paid-upgrade.webp
│ │ │ ├── outputs-twitch-raid-cancel.webp
│ │ │ ├── outputs-twitch-raid.webp
│ │ │ ├── outputs-twitch-redemption.webp
│ │ │ ├── outputs-twitch-resub.webp
│ │ │ ├── outputs-twitch-reward-gift.webp
│ │ │ ├── outputs-twitch-ritual.webp
│ │ │ ├── outputs-twitch-slow.webp
│ │ │ ├── outputs-twitch-standard-pay-forward.webp
│ │ │ ├── outputs-twitch-sub-extend.webp
│ │ │ ├── outputs-twitch-sub-gift.webp
│ │ │ ├── outputs-twitch-sub.webp
│ │ │ ├── outputs-twitch-subs-only.webp
│ │ │ ├── outputs-twitch-timeout.webp
│ │ │ ├── outputs-twitch-unhost.webp
│ │ │ ├── outputs-twitch-unique-message.webp
│ │ │ ├── outputs-twitch-whisper.webp
│ │ │ └── outputs-usb-detection.webp
│ │ │ └── v2.1
│ │ │ ├── both-discord-webhook-embed.webp
│ │ │ ├── both-discord-webhook-message.webp
│ │ │ ├── both-download-file.webp
│ │ │ ├── both-file-read.webp
│ │ │ ├── both-spotify-current-queue.webp
│ │ │ ├── both-spotify-currently-playing.webp
│ │ │ ├── inputs-file-write.webp
│ │ │ ├── inputs-kill-app.webp
│ │ │ ├── inputs-obs-studio-set-browser.webp
│ │ │ ├── inputs-obs-studio-set-image.webp
│ │ │ ├── inputs-obs-studio-set-media.webp
│ │ │ ├── inputs-twitch-action.webp
│ │ │ ├── inputs-twitch-announce.webp
│ │ │ ├── inputs-twitch-message.webp
│ │ │ ├── inputs-twitch-shoutout.webp
│ │ │ ├── outputs-keyboard-shortcut.webp
│ │ │ └── outputs-streamdeck-action.webp
│ └── screenshots
│ │ ├── v2.0
│ │ ├── multi-actions.webp
│ │ ├── notifications.webp
│ │ ├── obs-studio.webp
│ │ ├── spotify.webp
│ │ ├── stream-flash.webp
│ │ ├── stream-widgets.webp
│ │ └── twitch.webp
│ │ └── v2.1
│ │ ├── about.webp
│ │ ├── multi-actions.webp
│ │ ├── settings.webp
│ │ ├── stream-flash.webp
│ │ ├── streamdeck.webp
│ │ ├── touchportal.webp
│ │ └── twitch.webp
├── index.html
├── js
│ └── main.js
└── pages
│ ├── EN
│ ├── v2.0
│ │ ├── home.html
│ │ └── multi-actions.html
│ └── v2.1
│ │ ├── home.html
│ │ └── multi-actions.html
│ └── FR
│ ├── v2.0
│ ├── home.html
│ └── multi-actions.html
│ └── v2.1
│ ├── home.html
│ └── multi-actions.html
├── env.json
├── main.js
├── package.json
├── preload.js
├── public
├── about.html
├── css
│ ├── all.min.css
│ ├── bulma-dark.min.css
│ ├── config.css
│ ├── share.css
│ └── styles.css
├── images
│ ├── donation.png
│ ├── logo-gray.png
│ └── logo.png
├── index.html
├── settings.html
└── webfonts
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff2
│ ├── fa-v4compatibility.ttf
│ └── fa-v4compatibility.woff2
├── screenshot.png
└── scripts
├── multi-actions
├── config.ini
├── guide.webp
├── icons
│ ├── action.webp
│ ├── add.webp
│ ├── announce.webp
│ ├── application.webp
│ ├── authentification.webp
│ ├── ban.webp
│ ├── button.webp
│ ├── chat-clear.webp
│ ├── command.webp
│ ├── connection.webp
│ ├── cooldown.webp
│ ├── crystals.webp
│ ├── download.webp
│ ├── emotes.webp
│ ├── empty.webp
│ ├── exit.webp
│ ├── file.webp
│ ├── first.webp
│ ├── follow.webp
│ ├── game.webp
│ ├── host.webp
│ ├── info.webp
│ ├── kill.webp
│ ├── launch.webp
│ ├── locked.webp
│ ├── message-remove.webp
│ ├── message.webp
│ ├── music.webp
│ ├── next.webp
│ ├── notification.webp
│ ├── open-url.webp
│ ├── picture.webp
│ ├── play.webp
│ ├── playlist.webp
│ ├── prime.webp
│ ├── raid-cancel.webp
│ ├── raid.webp
│ ├── recording.webp
│ ├── redemption.webp
│ ├── rename.webp
│ ├── repeat.webp
│ ├── replay.webp
│ ├── request.webp
│ ├── reward-gift.webp
│ ├── ritual.webp
│ ├── search.webp
│ ├── selected.webp
│ ├── self-timer.webp
│ ├── shoutout.webp
│ ├── shuffle.webp
│ ├── slow.webp
│ ├── stop.webp
│ ├── streaming.webp
│ ├── studio.webp
│ ├── subscribers.webp
│ ├── text.webp
│ ├── timeout.webp
│ ├── toggle.webp
│ ├── unhost.webp
│ ├── variable-condition.webp
│ ├── variable-increment.webp
│ ├── variable-remove.webp
│ ├── variable-setter.webp
│ ├── virtual-camera.webp
│ ├── volume.webp
│ ├── webhook.webp
│ └── whisper.webp
├── index.html
├── libs
│ ├── drawflow.blocks.js
│ ├── drawflow.min.css
│ ├── drawflow.min.js
│ └── drawflow.style.css
├── package.json
└── script.js
├── stream-flash
├── config.ini
├── flash
│ ├── index.html
│ └── preload.js
├── index.html
├── package.json
└── script.js
└── stream-widgets
├── config.ini
├── index.html
├── package.json
├── script.js
└── widgets
├── index.html
└── preload.js
/.eslintignore:
--------------------------------------------------------------------------------
1 | *.min.js
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "parserOptions": {
4 | "ecmaVersion": "latest",
5 | "sourceType": "module",
6 | "ecmaFeatures": {
7 | "jsx": true
8 | }
9 | },
10 | "env": {
11 | "browser": true,
12 | "node": true,
13 | "es6": true
14 | },
15 | "extends": [
16 | "eslint:recommended"
17 | ],
18 | "rules": {
19 | "eqeqeq": "warn",
20 | "indent": ["warn", 2, { "SwitchCase": 1 }],
21 | "multiline-ternary": ["warn", "always-multiline"],
22 | "no-empty": ["error", { "allowEmptyCatch": true }],
23 | "no-unused-vars": "off"
24 | },
25 | "globals": {
26 | "BluetoothUUID": "readonly"
27 | }
28 | }
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [arubinu]
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. Win11]
28 | - Installation: NSIS or Portable
29 | - Version [e.g. 2.0.5]
30 |
31 | **Additional context**
32 | Add any other context about the problem here.
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
106 | package-lock.json
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Scripts Manager
2 |
3 | Program grouping together a multitude of scripts to avoid redeveloping everything each time.
4 |
To know everything about how this software works, documentation is available here: https://arubinu.github.io/Scripts-Manager
5 |
6 | 
7 |
8 | ### For Developers
9 |
10 | Before using the commands that follow, you must install the dependencies with the following command _(you must be in the project folder)_:
11 | ```
12 | npm install
13 | ```
14 |
15 | To launch the project from source _(note: add your twitch app's client_id in `addons/twitch/auth.json`, and same in spotify)_:
16 | ```
17 | npm start
18 | ```
19 |
20 | To compile the project and make it an executable:
21 | ```
22 | npm run build
23 | ```
24 |
25 | ### Notes
26 |
27 | If you are developing __addons__ or __scripts__ for this tool, you can directly tell me about it on Discord __Arubinu#9947__ _(I may suggest a repository to group them together)_.
28 |
29 | In any case, thank you for using this tool, which is close to my heart 🙂
30 |
--------------------------------------------------------------------------------
/addons/notifications/config.ini:
--------------------------------------------------------------------------------
1 | [default]
2 | name=Notifications
3 | methods=websocket
4 | enabled=false
5 |
6 | [settings]
7 | round=0
8 | scale=100
9 | anchor[]="bottom"
10 | anchor[]="right"
11 | screen=0
12 | opacity=100
--------------------------------------------------------------------------------
/addons/notifications/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Notifications usable via scripts (such as Multi Actions).
76 |Links to OBS Studio for scripts that require this feature.
42 |Date | 80 |Type | 81 |
---|
Links with Spotify for scripts requiring its functionality.
29 |This program allows you to have access to a multitude of features in one place.
43 |Information
20 | 21 |Information
37 | 38 |Some basic Scripts Manager settings can be found here.
53 |