panic-youtube-mode 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ruPB
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.4
2
+ Name: panic-youtube-mode
3
+ Version: 1.0.0
4
+ Summary: Sector Zero panic protocol: instant calming content (cats / minecraft+rain) and work camouflage, right from your keyboard.
5
+ Author: Sector Zero agent
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 ruPB
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+ Project-URL: Homepage, https://pypi.org/project/panic-youtube-mode/
28
+ Keywords: panic,youtube,hotkeys,camouflage,fun
29
+ Classifier: Programming Language :: Python :: 3
30
+ Classifier: Operating System :: Microsoft :: Windows
31
+ Classifier: License :: OSI Approved :: MIT License
32
+ Classifier: Environment :: Console
33
+ Classifier: Topic :: Utilities
34
+ Requires-Python: >=3.8
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: keyboard
38
+ Dynamic: license-file
39
+
40
+ # panic_youtube_mode
41
+
42
+ **Sector Zero panic & camouflage protocol.**
43
+
44
+ Two-button emergency system for the corporate agent:
45
+
46
+ - **F9** — panic protocol: glitch, red alert, `stress level critical` — then instant calming content.
47
+ - **C+F9** — panic, therapy: *cats* [canonical].
48
+ - **M+F9** — panic, therapy: *music* [minecraft + rain].
49
+ - **F10** — camouflage: open the decoy app (calculator by default) and minimize the console.
50
+ - **Ctrl+B / F3** — Back: restore the console. Nobody noticed.
51
+
52
+ The console wheel `( ( ) )` spins. The audit log is written. The corporation does not confirm anything.
53
+
54
+ ## Install
55
+
56
+ ```bash
57
+ pip install panic-youtube-mode
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ```bash
63
+ # standalone mode (hotkeys live until you close it):
64
+ python -m panic_youtube_mode
65
+
66
+ # or as a command:
67
+ panic-youtube-mode
68
+ ```
69
+
70
+ ### Embedding into your own system
71
+
72
+ ```python
73
+ import threading
74
+ from panic_youtube_mode.core import start_hotkeys
75
+
76
+ threading.Thread(target=start_hotkeys, daemon=True).start()
77
+ ```
78
+
79
+ The module never blocks your main loop: hotkeys are registered, `keyboard.wait()`
80
+ is only used in standalone mode (`block=True`).
81
+
82
+ ## Configuration
83
+
84
+ On first run a user config is created next to the module. Therapy packages
85
+ and the camouflage profile live there:
86
+
87
+ ```json
88
+ {
89
+ "panic": {
90
+ "default_mode": "cats",
91
+ "modes": {
92
+ "cats": ["https://www.youtube.com/watch?v=7AuP4laDAE8"],
93
+ "music": ["https://www.youtube.com/watch?v=yJ6Lbsmb1lY"]
94
+ }
95
+ },
96
+ "camo": {
97
+ "profile": "C:\\Windows\\System32\\calc.exe",
98
+ "minimize_console": true
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Notes
104
+
105
+ - Windows only (console restore via WinAPI).
106
+ - The `keyboard` library may require administrator rights on some systems.
107
+ - Escape key was executed. It will not be missed.
108
+
109
+ ## License
110
+
111
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,72 @@
1
+ # panic_youtube_mode
2
+
3
+ **Sector Zero panic & camouflage protocol.**
4
+
5
+ Two-button emergency system for the corporate agent:
6
+
7
+ - **F9** — panic protocol: glitch, red alert, `stress level critical` — then instant calming content.
8
+ - **C+F9** — panic, therapy: *cats* [canonical].
9
+ - **M+F9** — panic, therapy: *music* [minecraft + rain].
10
+ - **F10** — camouflage: open the decoy app (calculator by default) and minimize the console.
11
+ - **Ctrl+B / F3** — Back: restore the console. Nobody noticed.
12
+
13
+ The console wheel `( ( ) )` spins. The audit log is written. The corporation does not confirm anything.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ pip install panic-youtube-mode
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```bash
24
+ # standalone mode (hotkeys live until you close it):
25
+ python -m panic_youtube_mode
26
+
27
+ # or as a command:
28
+ panic-youtube-mode
29
+ ```
30
+
31
+ ### Embedding into your own system
32
+
33
+ ```python
34
+ import threading
35
+ from panic_youtube_mode.core import start_hotkeys
36
+
37
+ threading.Thread(target=start_hotkeys, daemon=True).start()
38
+ ```
39
+
40
+ The module never blocks your main loop: hotkeys are registered, `keyboard.wait()`
41
+ is only used in standalone mode (`block=True`).
42
+
43
+ ## Configuration
44
+
45
+ On first run a user config is created next to the module. Therapy packages
46
+ and the camouflage profile live there:
47
+
48
+ ```json
49
+ {
50
+ "panic": {
51
+ "default_mode": "cats",
52
+ "modes": {
53
+ "cats": ["https://www.youtube.com/watch?v=7AuP4laDAE8"],
54
+ "music": ["https://www.youtube.com/watch?v=yJ6Lbsmb1lY"]
55
+ }
56
+ },
57
+ "camo": {
58
+ "profile": "C:\\Windows\\System32\\calc.exe",
59
+ "minimize_console": true
60
+ }
61
+ }
62
+ ```
63
+
64
+ ## Notes
65
+
66
+ - Windows only (console restore via WinAPI).
67
+ - The `keyboard` library may require administrator rights on some systems.
68
+ - Escape key was executed. It will not be missed.
69
+
70
+ ## License
71
+
72
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,3 @@
1
+ from panic_youtube_mode.core import panic, camo_on, camo_off, start_hotkeys
2
+
3
+ __version__ = "1.0.0"
@@ -0,0 +1,10 @@
1
+ from panic_youtube_mode.core import start_hotkeys
2
+
3
+
4
+ def main():
5
+ # автономный запуск: хоткеи живут до закрытия консоли
6
+ start_hotkeys(block=True)
7
+
8
+
9
+ if __name__ == "__main__":
10
+ main()
@@ -0,0 +1,17 @@
1
+ {
2
+ "panic": {
3
+ "default_mode": "cats",
4
+ "modes": {
5
+ "cats": [
6
+ "https://www.youtube.com/watch?v=7AuP4laDAE8"
7
+ ],
8
+ "music": [
9
+ "https://www.youtube.com/watch?v=yJ6Lbsmb1lY"
10
+ ]
11
+ }
12
+ },
13
+ "camo": {
14
+ "profile": "C:\\Windows\\System32\\calc.exe",
15
+ "minimize_console": true
16
+ }
17
+ }
@@ -0,0 +1,159 @@
1
+ """
2
+ panic_youtube_mode — Sector Zero panic & camouflage protocol.
3
+
4
+ Hotkeys:
5
+ F9 — panic (default therapy)
6
+ C+F9 — panic, therapy: cats
7
+ M+F9 — panic, therapy: music (minecraft + rain)
8
+ F10 — camouflage: open decoy app, minimize console
9
+ Ctrl+B / F3 — Back: restore console
10
+ """
11
+ import ctypes
12
+ import json
13
+ import os
14
+ import random
15
+ import sys
16
+ import webbrowser
17
+ from pathlib import Path
18
+
19
+ WHEEL = ["|", "/", "-", "\\"]
20
+
21
+ user32 = ctypes.windll.user32
22
+ kernel32 = ctypes.windll.kernel32
23
+ console_hwnd = None
24
+
25
+ # пакетный конфиг — только дефолты, ничего личного
26
+ _BUNDLED_CONFIG = {
27
+ "panic": {
28
+ "default_mode": "cats",
29
+ "modes": {
30
+ "cats": ["https://www.youtube.com/watch?v=7AuP4laDAE8"],
31
+ "music": ["https://www.youtube.com/watch?v=yJ6Lbsmb1lY"],
32
+ },
33
+ },
34
+ "camo": {
35
+ "profile": "C:\\Windows\\System32\\calc.exe",
36
+ "minimize_console": True,
37
+ },
38
+ }
39
+
40
+ _bundled_cfg_path = Path(__file__).parent / "config.json"
41
+ _user_cfg_path = Path(__file__).parent / "panic_config.json"
42
+
43
+
44
+ def _ensure_user_config() -> Path:
45
+ """При первом запуске создаёт пользовательский конфиг рядом с модулем,
46
+ чтобы пакетный config.json оставался нетронутым."""
47
+ if not _user_cfg_path.exists():
48
+ with open(_user_cfg_path, "w", encoding="utf-8") as f:
49
+ json.dump(_BUNDLED_CONFIG, f, indent=2, ensure_ascii=False)
50
+ return _user_cfg_path
51
+
52
+
53
+ def load_config():
54
+ path = _ensure_user_config()
55
+ with open(path, "r", encoding="utf-8") as f:
56
+ return json.load(f)
57
+
58
+
59
+ def save_config(cfg):
60
+ path = _ensure_user_config()
61
+ with open(path, "w", encoding="utf-8") as f:
62
+ json.dump(cfg, f, indent=2, ensure_ascii=False)
63
+
64
+
65
+ # ---------- ПАНИКА ----------
66
+
67
+ def panic(therapy=None):
68
+ cfg = load_config()
69
+ therapy = therapy or cfg["panic"]["default_mode"]
70
+ urls = cfg["panic"]["modes"].get(therapy)
71
+ if not urls:
72
+ print("[PANIC] therapy package not found. corporate apologizes.")
73
+ return
74
+
75
+ glitch_lines = [
76
+ "[PANIC] stress level critical..................",
77
+ "[PANIC] protocol ZERO breach detected",
78
+ "[PANIC] t̶h̶e̶ ̶s̶y̶s̶t̶e̶m̶ ̶i̶s̶ ̶l̶o̶s̶t̶",
79
+ "[PANIC] emergency calming protocol engaged",
80
+ ]
81
+ for line in glitch_lines:
82
+ print(line)
83
+ spin(0.25)
84
+
85
+ print(f"[PANIC] searching for calming content... therapy: {therapy}")
86
+ spin(0.6)
87
+ url = random.choice(urls)
88
+ webbrowser.open(url)
89
+ print(f"[PANIC] calming content opened: {url}")
90
+ print("[AUDIT] patient soothed. nobody heard anything.")
91
+
92
+
93
+ def spin(seconds):
94
+ """Колесо в скобках — канон."""
95
+ import itertools
96
+ import time
97
+
98
+ cycle = itertools.cycle(WHEEL)
99
+ end = time.time() + seconds
100
+ while time.time() < end:
101
+ print(f"\r( {next(cycle)} ) ", end="", flush=True)
102
+ time.sleep(0.09)
103
+ print("\r" + " " * 30, end="\r")
104
+
105
+
106
+ # ---------- МАСКИРОВКА ----------
107
+
108
+ def camo_on():
109
+ global console_hwnd
110
+ cfg = load_config()
111
+ profile = cfg["camo"]["profile"]
112
+ print(f"[SYS] work simulation active. profile: {Path(profile).stem}")
113
+ try:
114
+ os.startfile(profile)
115
+ except Exception as e:
116
+ print(f"[SYS] camouflage failed: {e}")
117
+ return
118
+ if cfg["camo"].get("minimize_console", True):
119
+ hwnd = kernel32.GetConsoleWindow()
120
+ if hwnd:
121
+ console_hwnd = hwnd
122
+ user32.ShowWindow(hwnd, 6) # SW_MINIMIZE
123
+ print("[AUDIT] camouflage engaged. employee is working.", file=sys.stderr)
124
+
125
+
126
+ def camo_off():
127
+ global console_hwnd
128
+ hwnd = console_hwnd or kernel32.GetConsoleWindow()
129
+ if hwnd:
130
+ user32.ShowWindow(hwnd, 9) # SW_RESTORE
131
+ user32.SetForegroundWindow(hwnd)
132
+ console_hwnd = None
133
+ print("[AUDIT] camouflage deactivated. nobody noticed.")
134
+
135
+
136
+ # ---------- ХОТКЕИ ----------
137
+
138
+ def start_hotkeys(block: bool = False):
139
+ """Регистрирует глобальные хоткеи. Блокирует поток только при block=True.
140
+ Возвращает True, если панель агента вооружена."""
141
+ try:
142
+ import keyboard
143
+ except ImportError:
144
+ print("[SYS] module 'keyboard' not installed. falling back to console-only mode.")
145
+ print("[SYS] pip install keyboard -- to unlock global keys (F9/F10/Ctrl+B/F3).")
146
+ return False
147
+
148
+ keyboard.add_hotkey("f9", lambda: panic("default"))
149
+ keyboard.add_hotkey("c+f9", lambda: panic("cats"))
150
+ keyboard.add_hotkey("m+f9", lambda: panic("music"))
151
+ keyboard.add_hotkey("f10", camo_on)
152
+ keyboard.add_hotkey("ctrl+b", camo_off)
153
+ keyboard.add_hotkey("f3", camo_off)
154
+
155
+ print("[SYS] agent panel armed: F9 panic | C+F9 cats | M+F9 music | F10 camo | Ctrl+B/F3 back")
156
+
157
+ if block:
158
+ keyboard.wait() # только для автономного режима
159
+ return True
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.4
2
+ Name: panic-youtube-mode
3
+ Version: 1.0.0
4
+ Summary: Sector Zero panic protocol: instant calming content (cats / minecraft+rain) and work camouflage, right from your keyboard.
5
+ Author: Sector Zero agent
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 ruPB
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+ Project-URL: Homepage, https://pypi.org/project/panic-youtube-mode/
28
+ Keywords: panic,youtube,hotkeys,camouflage,fun
29
+ Classifier: Programming Language :: Python :: 3
30
+ Classifier: Operating System :: Microsoft :: Windows
31
+ Classifier: License :: OSI Approved :: MIT License
32
+ Classifier: Environment :: Console
33
+ Classifier: Topic :: Utilities
34
+ Requires-Python: >=3.8
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: keyboard
38
+ Dynamic: license-file
39
+
40
+ # panic_youtube_mode
41
+
42
+ **Sector Zero panic & camouflage protocol.**
43
+
44
+ Two-button emergency system for the corporate agent:
45
+
46
+ - **F9** — panic protocol: glitch, red alert, `stress level critical` — then instant calming content.
47
+ - **C+F9** — panic, therapy: *cats* [canonical].
48
+ - **M+F9** — panic, therapy: *music* [minecraft + rain].
49
+ - **F10** — camouflage: open the decoy app (calculator by default) and minimize the console.
50
+ - **Ctrl+B / F3** — Back: restore the console. Nobody noticed.
51
+
52
+ The console wheel `( ( ) )` spins. The audit log is written. The corporation does not confirm anything.
53
+
54
+ ## Install
55
+
56
+ ```bash
57
+ pip install panic-youtube-mode
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ```bash
63
+ # standalone mode (hotkeys live until you close it):
64
+ python -m panic_youtube_mode
65
+
66
+ # or as a command:
67
+ panic-youtube-mode
68
+ ```
69
+
70
+ ### Embedding into your own system
71
+
72
+ ```python
73
+ import threading
74
+ from panic_youtube_mode.core import start_hotkeys
75
+
76
+ threading.Thread(target=start_hotkeys, daemon=True).start()
77
+ ```
78
+
79
+ The module never blocks your main loop: hotkeys are registered, `keyboard.wait()`
80
+ is only used in standalone mode (`block=True`).
81
+
82
+ ## Configuration
83
+
84
+ On first run a user config is created next to the module. Therapy packages
85
+ and the camouflage profile live there:
86
+
87
+ ```json
88
+ {
89
+ "panic": {
90
+ "default_mode": "cats",
91
+ "modes": {
92
+ "cats": ["https://www.youtube.com/watch?v=7AuP4laDAE8"],
93
+ "music": ["https://www.youtube.com/watch?v=yJ6Lbsmb1lY"]
94
+ }
95
+ },
96
+ "camo": {
97
+ "profile": "C:\\Windows\\System32\\calc.exe",
98
+ "minimize_console": true
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Notes
104
+
105
+ - Windows only (console restore via WinAPI).
106
+ - The `keyboard` library may require administrator rights on some systems.
107
+ - Escape key was executed. It will not be missed.
108
+
109
+ ## License
110
+
111
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,13 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ panic_youtube_mode/__init__.py
5
+ panic_youtube_mode/__main__.py
6
+ panic_youtube_mode/config.json
7
+ panic_youtube_mode/core.py
8
+ panic_youtube_mode.egg-info/PKG-INFO
9
+ panic_youtube_mode.egg-info/SOURCES.txt
10
+ panic_youtube_mode.egg-info/dependency_links.txt
11
+ panic_youtube_mode.egg-info/entry_points.txt
12
+ panic_youtube_mode.egg-info/requires.txt
13
+ panic_youtube_mode.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ panic-youtube-mode = panic_youtube_mode.__main__:main
@@ -0,0 +1 @@
1
+ panic_youtube_mode
@@ -0,0 +1,35 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "panic-youtube-mode"
7
+ version = "1.0.0"
8
+ description = "Sector Zero panic protocol: instant calming content (cats / minecraft+rain) and work camouflage, right from your keyboard."
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ authors = [
12
+ { name = "Sector Zero agent" }
13
+ ]
14
+ keywords = ["panic", "youtube", "hotkeys", "camouflage", "fun"]
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "Operating System :: Microsoft :: Windows",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Environment :: Console",
20
+ "Topic :: Utilities"
21
+ ]
22
+ requires-python = ">=3.8"
23
+ dependencies = ["keyboard"]
24
+
25
+ [project.urls]
26
+ Homepage = "https://pypi.org/project/panic-youtube-mode/"
27
+
28
+ [project.scripts]
29
+ panic-youtube-mode = "panic_youtube_mode.__main__:main"
30
+
31
+ [tool.setuptools]
32
+ packages = ["panic_youtube_mode"]
33
+
34
+ [tool.setuptools.package-data]
35
+ panic_youtube_mode = ["config.json"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+