/
Roman_arv
/
UpnpUtil
Обзор
Документация
Войти
/
Roman_arv
/
UpnpUtil
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/server.py
139 строк
4 KB
Roman_arv
gigacode generated v2
21 июл 2026, 19:25
21 июл 2026, 19:25
47951bb
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Скрипт запуска DLNA-сервера. Использование: python3 -m dlna.server python3 scripts/server.py python3 scripts/server.py --config my_config.yaml python3 scripts/server.py --port 8200 --debug """ import sys import os import argparse # Добавляем текущий каталог в путь импорта sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from dlna.server.server import DLNAServer from dlna.server.config import ConfigManager def main(): """Точка входа в сервер.""" parser = argparse.ArgumentParser( description='DLNA/UPnP Media Server', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Примеры использования: %(prog)s # Запуск с config.yaml %(prog)s --port 8080 # Запуск на порту 8080 %(prog)s --config my_config.yaml # С указанным конфигом %(prog)s --debug # В режиме отладки %(prog)s --media ./music # Указать медиа-директорию """ ) parser.add_argument( '--config', '-c', type=str, help='Путь к конфигурационному файлу' ) parser.add_argument( '--port', '-p', type=int, help='Порт HTTP-сервера' ) parser.add_argument( '--host', '-H', type=str, help='Хост для привязки (по умолчанию: 0.0.0.0)' ) parser.add_argument( '--media', '-m', type=str, help='Путь к медиа-директории' ) parser.add_argument( '--debug', '-d', action='store_true', help='Включить режим отладки' ) parser.add_argument( '--name', '-n', type=str, help='Имя сервера' ) parser.add_argument( '--save-config', type=str, metavar='FILE', help='Сохранить конфигурацию в файл' ) args = parser.parse_args() # Создаем менеджер конфигурации config_manager = ConfigManager(args.config) # Загружаем конфигурацию try: config = config_manager.load() # Применяем аргументы командной строки (приоритет) if args.port: config.port = args.port if args.host: config.host = args.host if args.media: config.media_directory = args.media if args.name: config.server_name = args.name config.friendly_name = args.name # Настройка логирования из аргументов if args.debug: config.debug = True config.log_level = 'DEBUG' except Exception as e: print(f"❌ Ошибка загрузки конфигурации: {e}") sys.exit(1) # Создаем сервер server = DLNAServer() # Сохраняем конфигурацию, если указано if args.save_config: try: server.config_manager.save(args.save_config) print(f"✅ Конфигурация сохранена в {args.save_config}") except Exception as e: print(f"❌ Ошибка сохранения конфигурации: {e}") sys.exit(1) # Запускаем сервер print(f"🚀 Запуск {config.server_name}") print(f"📁 Медиа-директория: {config.media_directory}") print(f"🌐 HTTP-сервер: http://{config.host}:{config.port}") print(f"📡 SSDP: {config.ssdp_multicast_ip}:{config.ssdp_multicast_port}") print() try: server.start() except KeyboardInterrupt: print("\n\n👋 Остановка сервера...") except Exception as e: print(f"\n❌ Ошибка сервера: {e}") sys.exit(1) if __name__ == "__main__": main()