init
This commit is contained in:
		
						commit
						cc40a422e6
					
				
							
								
								
									
										131
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal 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
									
								
							
							
						
						
									
										33
									
								
								README.md
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										48
									
								
								magic_keyboard.py
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										38
									
								
								magic_keyboard.spec
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										2
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
keyboard==0.13.5
 | 
			
		||||
pyinstaller==6.12.0
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user