This commit is contained in:
cheykrym 2025-08-07 05:02:08 +03:00
commit cc40a422e6
5 changed files with 252 additions and 0 deletions

131
.gitignore vendored Normal file
View File

@ -0,0 +1,131 @@
#
config/cert/
test_modules/
config/SSL/fullchain.pem
config/SSL/privkey.pem
logs/
SECRET_KEY.key
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# magic_keyboard_player
---
## 💻 Требования
- Python **3.13.1**
- Windows (рекомендуется для `.exe` сборки)
- Установленные зависимости (`requirements.txt`)
---
## 🛠️ Режим разработки
```bash
# Создание виртуального окружения
python -m venv env
# Установка зависимостей
.\env\Scripts\pip3.13.exe install -r .\requirements.txt
# Запуск
.\env\Scripts\python.exe magic_keyboard.py
```
## 📦 Сборка .EXE
```bash
# Сборка hide
.\env\Scripts\pyinstaller --noconfirm --onefile --windowed magic_keyboard.py
# Сборка console
.\.venv\Scripts\pyinstaller --noconfirm --onefile magic_keyboard.py
```

48
magic_keyboard.py Normal file
View File

@ -0,0 +1,48 @@
import keyboard
import time
import ctypes
DEBUG = False
# Функции для управления мультимедиа
def play_pause():
if DEBUG: print("[ДЕЙСТВИЕ] Воспроизведение/Пауза")
send_vk_code(0xB3) # VK_MEDIA_PLAY_PAUSE
def next_track():
if DEBUG: print("[ДЕЙСТВИЕ] Следующий трек")
send_vk_code(0xB0) # VK_MEDIA_NEXT_TRACK
def prev_track():
if DEBUG: print("[ДЕЙСТВИЕ] Предыдущий трек")
send_vk_code(0xB1) # VK_MEDIA_PREV_TRACK
# Отправка виртуального кода клавиши в Windows
def send_vk_code(code):
ctypes.windll.user32.keybd_event(code, 0, 0, 0) # key down
time.sleep(0.15)
ctypes.windll.user32.keybd_event(code, 0, 2, 0) # key up
# Привязываем горячие клавиши
# keyboard.add_hotkey('f7', prev_track)
# keyboard.add_hotkey('f8', play_pause)
# keyboard.add_hotkey('f9', next_track)
keyboard.add_hotkey('right windows+f7', prev_track)
keyboard.add_hotkey('right windows+f8', play_pause)
keyboard.add_hotkey('right windows+f9', next_track)
# Обработчик нажатий клавиш (для отладки)
def on_key(event):
print(f"[НАЖАТО] {event.name}")
if DEBUG: keyboard.on_press(on_key)
print("Скрипт запущен. Нажмите F7/F8/F9 для управления музыкой. Ctrl+C — выход.")
# Бесконечный цикл
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Скрипт завершён.")

38
magic_keyboard.spec Normal file
View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['magic_keyboard.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='magic_keyboard',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
keyboard==0.13.5
pyinstaller==6.12.0