Replaced winpty with subprocess

This commit is contained in:
edschuy95 2026-01-10 16:43:48 -05:00
parent ee6aa40093
commit 845ce2c622
9 changed files with 330 additions and 235 deletions

View file

@ -7,13 +7,13 @@ import random
import re
import queue
import readchar
import winpty
#import winpty
import ctypes
import subprocess
os.environ["PYGAME_HIDE_SUPPORT_PROMPT"] = "1"
import pygame
#user32 = ctypes.WinDLL("user32", use_last_error=True)
kernel32 = ctypes.WinDLL("kernel32", use_last_error=True)
# Event to signal shutdown
@ -28,11 +28,13 @@ DEBUG = False # Set True to enable debug overrides
DEFAULT_GAME_EXE = r".\qgame.dll"
DEFAULT_PLAYLIST = r".\arena\music\playlist.txt"
DEFAULT_RA3_MAPS = r".\arena\music\ra3_maps.txt"
DEFAULT_ARENA0_BL = r".\arena\music\arena0_bl.txt"
# Debug override paths
DEBUG_GAME_EXE = r"D:\GOG Games\Quake III\qgame.dll"
DEBUG_PLAYLIST = r"D:\GOG Games\Quake III\arena\music\playlist.txt"
DEBUG_RA3_MAPS = r"D:\GOG Games\Quake III\arena\music\ra3_maps.txt"
DEBUG_ARENA0_BL = r"D:\GOG Games\Quake III\arena\music\arena0_bl.txt"
# Initial volume
VOLUME_STEP = 0.1 # step for W/S volume control
@ -47,7 +49,9 @@ is_ra3 = False
is_ra3_map = False
is_in_map = False
ra3_maps_path = "."
arena0_bl_path = "."
playlist = []
arena0_bl = []
playlist_index = 0
current_mode = "shuffle" # sequential, shuffle, loop
volume = 0.5
@ -75,6 +79,14 @@ ANSI_ESCAPE_RE = re.compile(
# ==========================================================
# ===================== UTILITY FUNCTIONS =================
def Check_Arena_Blacklist(arenaline: str) -> bool:
global arena0_bl_path
arena_bl_local = load_arena0_blacklist(arena0_bl_path)
for item in arena_bl_local:
if arenaline.lower().startswith(f"\"arena0\" is:\"{item.lower()}"):
return True
return False
def acquire_single_instance(name: str):
handle = kernel32.CreateMutexW(
None, # lpMutexAttributes
@ -203,6 +215,19 @@ def load_ra3_maps(path):
return set()
return maps
def load_arena0_blacklist(path):
maps = set()
try:
with open(path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if line:
maps.add(line.lower())
except:
print(f"[DEBUG] Failed to open ra3_maps.txt")
return set()
return maps
def next_track():
global playlist
if not playlist:
@ -291,34 +316,59 @@ def change_mode():
# ==========================================================
# ==================== QUAKE MONITOR ======================
def monitor_game(pty_proc):
# def monitor_game(pty_proc):
# #pty version
# global serverstatus_sent
# buffer = ""
# while not stop_flag.is_set() or shutdown_event.is_set():
# try:
# data = pty_proc.read(1024)
# if not data:
# break
# # Normalize to string
# if isinstance(data, bytes):
# data = data.decode(errors="ignore")
# buffer += data
# while "\n" in buffer:
# line, buffer = buffer.split("\n", 1)
# line = strip_ansi(line).strip()
# if line:
# #print(f"[GAME] {line}")
# #print(f"[GAME RAW] {repr(line)}")
# handle_game_line(line, pty_proc)
# except EOFError or KeyboardInterrupt:
# break
def monitor_game(proc):
#subprocess version
global serverstatus_sent
buffer = b""
buffer = ""
while not stop_flag.is_set() or shutdown_event.is_set():
try:
data = pty_proc.read(1024)
if not data:
break
# Normalize to string
if isinstance(data, bytes):
data = data.decode(errors="ignore")
buffer += data
while "\n" in buffer:
line, buffer = buffer.split("\n", 1)
line = strip_ansi(line).strip()
if line:
#print(f"[GAME] {line}")
#print(f"[GAME RAW] {repr(line)}")
handle_game_line(line, pty_proc)
except EOFError or KeyboardInterrupt:
while not stop_flag.is_set():
data = proc.stdout.read(1024)
if not data:
break
buffer += data
while b"\n" in buffer:
line, buffer = buffer.split(b"\n", 1)
try:
line = line.decode(errors="ignore")
except:
continue
line = strip_ansi(line).strip()
if line:
handle_game_line(line, proc)
def handle_game_line(line, pty_proc):
global volume, current_map, ra3_maps, ra3_maps_path, volumecheck, is_ra3, gametypecheck, is_playing, arenacheck, is_in_map, is_ra3_map, last_arena0
@ -405,9 +455,15 @@ def handle_game_line(line, pty_proc):
threading.Timer(.1, lambda: send_command(pty_proc,f"serverstatus")).start()
else:
if not same_map:
print(f"[DEBUG] RA3 map detected. Advancing track.")
is_ra3_map = True
next_track()
if not Check_Arena_Blacklist(line):
print(f"[DEBUG] RA3 map detected. Advancing track.")
is_ra3_map = True
next_track()
else:
print(f"[DEBUG] RA3 Arena found on blacklist - disabling music.")
is_ra3_map = False
stop_playback()
elif "mapname" in line.lower() and serverstatus_sent:
serverstatus_sent = False
current_map = line.split()[-1].lower()
@ -419,15 +475,26 @@ def handle_game_line(line, pty_proc):
else:
print(f"[DEBUG] Unknown map: {current_map}. Stopping playback.")
is_ra3_map = False
stop_playback()
threading.Timer(.3, lambda: stop_playback()).start()
#stop_playback()
def send_command(pty_proc, cmd):
# def send_command(pty_proc, cmd):
# # winpty version
# try:
# pty_proc.write(cmd + "\r\n")
# pty_proc.flush()
# #print(f"[DEBUG] Sent command: {cmd}")
# except Exception as e:
# print(f"[DEBUG] Failed to send command: {e}")
def send_command(proc, cmd):
#subprocess version
try:
pty_proc.write(cmd + "\r\n")
pty_proc.flush()
#print(f"[DEBUG] Sent command: {cmd}")
proc.stdin.write((cmd + "\r\n").encode())
proc.stdin.flush()
except Exception as e:
print(f"[DEBUG] Failed to send command: {e}")
# ==========================================================
# ==================== KEYBOARD HANDLER ===================
@ -452,7 +519,7 @@ def main():
print("Another instance is already running.")
sys.exit(1)
global playlist, ra3_maps, pty_proc, playlist_path, ra3_maps_path
global playlist, ra3_maps, pty_proc, playlist_path, ra3_maps_path, arena0_blacklist, arena0_bl_path
print(f"Loading Quake 3 Arena...")
@ -460,17 +527,12 @@ def main():
game_exe = DEBUG_GAME_EXE if DEBUG else DEFAULT_GAME_EXE
playlist_path = DEBUG_PLAYLIST if DEBUG else DEFAULT_PLAYLIST
ra3_maps_path = DEBUG_RA3_MAPS if DEBUG else DEFAULT_RA3_MAPS
arena0_bl_path = DEBUG_ARENA0_BL if DEBUG else DEFAULT_ARENA0_BL
# Load playlist and map list
playlist = load_playlist(playlist_path)
ra3_maps = load_ra3_maps(ra3_maps_path)
#if not playlist:
# print("Playlist is empty!")
# return
#if not ra3_maps:
# print("RA3 maps list is empty!")
# return
arena0_bl = load_arena0_blacklist(arena0_bl_path)
# Initialize pygame mixer
pygame.mixer.init()
@ -487,12 +549,23 @@ def main():
watcher_thread = threading.Thread(target=track_watcher, daemon=True)
watcher_thread.start()
# Launch quake process via PTY
try:
pty_proc = winpty.PtyProcess.spawn([game_exe, "--showterminalconsole",] + sys.argv[1:] )
except Exception as e:
print(f"Failed to start game: {e}")
return
# # Launch quake process via PTY
# try:
# pty_proc = winpty.PtyProcess.spawn([game_exe, "--showterminalconsole",] + sys.argv[1:] )
# except Exception as e:
# print(f"Failed to start game: {e}")
# return
# # Launch quake process via subprocess
pty_proc = subprocess.Popen(
[game_exe, "--showterminalconsole"] + sys.argv[1:],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
bufsize=0, # unbuffered
universal_newlines=False
)
# Monitor the game output
try:
@ -502,7 +575,26 @@ def main():
finally:
stop_flag.set()
stop_playback()
pty_proc.close()
if pty_proc:
try:
pty_proc.stdin.close()
except:
pass
try:
pty_proc.stdout.close()
except:
pass
try:
pty_proc.terminate()
except:
pass
try:
pty_proc.wait(timeout=5)
except:
pass
pygame.mixer.quit()
if __name__ == "__main__":

View file

@ -12,8 +12,7 @@
<Name>RA3MP3Playback</Name>
<RootNamespace>RA3MP3Playback</RootNamespace>
<LaunchProvider>Standard Python launcher</LaunchProvider>
<CommandLineArguments>
</CommandLineArguments>
<CommandLineArguments>+set fs_game arena</CommandLineArguments>
<EnableNativeCodeDebugging>False</EnableNativeCodeDebugging>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">

View file

@ -816,9 +816,6 @@
('multiprocessing.sharedctypes',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\multiprocessing\\sharedctypes.py',
'PYMODULE'),
('multiprocessing.heap',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\multiprocessing\\heap.py',
'PYMODULE'),
('multiprocessing.pool',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\multiprocessing\\pool.py',
'PYMODULE'),
@ -990,14 +987,14 @@
('readchar._base_key',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\readchar\\_base_key.py',
'PYMODULE'),
('tracemalloc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tracemalloc.py',
('_py_abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_py_abc.py',
'PYMODULE'),
('stringprep',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\stringprep.py',
'PYMODULE'),
('_py_abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_py_abc.py',
('tracemalloc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tracemalloc.py',
'PYMODULE'),
('pygame',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\__init__.py',
@ -1070,6 +1067,9 @@
'PYMODULE'),
('pathlib',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pathlib.py',
'PYMODULE'),
('multiprocessing.heap',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\multiprocessing\\heap.py',
'PYMODULE')],
[('winpty\\OpenConsole.exe',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\winpty\\OpenConsole.exe',
@ -1089,47 +1089,47 @@
('libopusfile-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopusfile-0.dll',
'BINARY'),
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('libpng16-16.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libpng16-16.dll',
'BINARY'),
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
'BINARY'),
('libwebp-7.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libwebp-7.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
'BINARY'),
('pywin32_system32\\pywintypes39.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pywin32_system32\\pywintypes39.dll',
@ -1296,15 +1296,15 @@
('pygame\\libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('pygame\\SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('pygame\\libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\VCRUNTIME140_1.dll',
'BINARY'),
@ -1433,66 +1433,24 @@
('base_library.zip',
'C:\\Users\\Ed\\source\\repos\\RA3MP3Playback\\build\\RA3WITHMP3\\base_library.zip',
'DATA')],
[('sre_constants',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_constants.py',
'PYMODULE'),
('collections.abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\collections\\abc.py',
'PYMODULE'),
('collections',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\collections\\__init__.py',
'PYMODULE'),
('enum',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\enum.py',
'PYMODULE'),
('ntpath',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\ntpath.py',
'PYMODULE'),
('sre_parse',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_parse.py',
[('operator',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\operator.py',
'PYMODULE'),
('codecs',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\codecs.py',
'PYMODULE'),
('copyreg',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copyreg.py',
('sre_compile',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_compile.py',
'PYMODULE'),
('enum',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\enum.py',
'PYMODULE'),
('abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\abc.py',
'PYMODULE'),
('posixpath',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\posixpath.py',
'PYMODULE'),
('warnings',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\warnings.py',
'PYMODULE'),
('io',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\io.py',
'PYMODULE'),
('stat',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\stat.py',
'PYMODULE'),
('operator',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\operator.py',
'PYMODULE'),
('functools',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\functools.py',
'PYMODULE'),
('traceback',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\traceback.py',
'PYMODULE'),
('genericpath',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\genericpath.py',
'PYMODULE'),
('_bootlocale',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_bootlocale.py',
'PYMODULE'),
('linecache',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\linecache.py',
'PYMODULE'),
('locale',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\locale.py',
'PYMODULE'),
('_weakrefset',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_weakrefset.py',
'PYMODULE'),
('encodings.zlib_codec',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\encodings\\zlib_codec.py',
'PYMODULE'),
@ -1859,30 +1817,72 @@
('encodings',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\encodings\\__init__.py',
'PYMODULE'),
('weakref',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\weakref.py',
'PYMODULE'),
('abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\abc.py',
'PYMODULE'),
('_collections_abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_collections_abc.py',
'PYMODULE'),
('heapq',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\heapq.py',
('_bootlocale',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_bootlocale.py',
'PYMODULE'),
('reprlib',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\reprlib.py',
'PYMODULE'),
('keyword',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\keyword.py',
('heapq',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\heapq.py',
'PYMODULE'),
('sre_compile',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_compile.py',
('genericpath',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\genericpath.py',
'PYMODULE'),
('functools',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\functools.py',
'PYMODULE'),
('_weakrefset',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_weakrefset.py',
'PYMODULE'),
('io',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\io.py',
'PYMODULE'),
('sre_constants',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_constants.py',
'PYMODULE'),
('sre_parse',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\sre_parse.py',
'PYMODULE'),
('linecache',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\linecache.py',
'PYMODULE'),
('copyreg',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copyreg.py',
'PYMODULE'),
('weakref',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\weakref.py',
'PYMODULE'),
('warnings',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\warnings.py',
'PYMODULE'),
('types',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\types.py',
'PYMODULE'),
('traceback',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\traceback.py',
'PYMODULE'),
('_collections_abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\_collections_abc.py',
'PYMODULE'),
('stat',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\stat.py',
'PYMODULE'),
('ntpath',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\ntpath.py',
'PYMODULE'),
('keyword',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\keyword.py',
'PYMODULE'),
('collections.abc',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\collections\\abc.py',
'PYMODULE'),
('collections',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\collections\\__init__.py',
'PYMODULE'),
('locale',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\locale.py',
'PYMODULE'),
('re',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\re.py',
'PYMODULE'),

View file

@ -91,47 +91,47 @@
('libopusfile-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopusfile-0.dll',
'BINARY'),
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('libpng16-16.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libpng16-16.dll',
'BINARY'),
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
'BINARY'),
('libwebp-7.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libwebp-7.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
'BINARY'),
('pywin32_system32\\pywintypes39.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pywin32_system32\\pywintypes39.dll',
@ -298,15 +298,15 @@
('pygame\\libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('pygame\\SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('pygame\\libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\VCRUNTIME140_1.dll',
'BINARY'),
@ -436,7 +436,7 @@
[],
False,
False,
1767911105,
1767923557,
[('run.exe',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],

View file

@ -69,47 +69,47 @@
('libopusfile-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopusfile-0.dll',
'BINARY'),
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('libpng16-16.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libpng16-16.dll',
'BINARY'),
('zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
('SDL2_mixer.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_mixer.dll',
'BINARY'),
('SDL2_image.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_image.dll',
'BINARY'),
('libmodplug-1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libmodplug-1.dll',
'BINARY'),
('libogg-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libogg-0.dll',
'BINARY'),
('libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
'BINARY'),
('libwebp-7.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libwebp-7.dll',
'BINARY'),
('SDL2_ttf.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2_ttf.dll',
('libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('freetype.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\freetype.dll',
'BINARY'),
('libtiff-5.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libtiff-5.dll',
'BINARY'),
('portmidi.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\portmidi.dll',
'BINARY'),
('pywin32_system32\\pywintypes39.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pywin32_system32\\pywintypes39.dll',
@ -276,15 +276,15 @@
('pygame\\libopus-0.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libopus-0.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('pygame\\SDL2.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\SDL2.dll',
'BINARY'),
('pygame\\libjpeg-9.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\libjpeg-9.dll',
'BINARY'),
('pygame\\zlib1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\pygame\\zlib1.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\VCRUNTIME140_1.dll',
'BINARY'),

Binary file not shown.

Binary file not shown.

View file

@ -18,8 +18,8 @@ missing module named pyimod02_importers - imported by C:\Users\Ed\AppData\Local\
missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional), distutils.util (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed)
missing module named org - imported by pickle (optional)
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
missing module named 'org.python' - imported by pickle (optional), xml.sax (delayed, conditional)
missing module named org - imported by copy (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level)
missing module named _manylinux - imported by pkg_resources._vendor.packaging.tags (delayed, optional), packaging._manylinux (delayed, optional)

View file

@ -157,6 +157,7 @@ imports:
&#8226; <a href="#keyword">keyword</a>
&#8226; <a href="#linecache">linecache</a>
&#8226; <a href="#locale">locale</a>
&#8226; <a href="#multiprocessing.heap">multiprocessing.heap</a>
&#8226; <a href="#ntpath">ntpath</a>
&#8226; <a href="#operator">operator</a>
&#8226; <a href="#os">os</a>
@ -342,7 +343,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>'org.python'</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#copy">copy</a>
<a href="#pickle">pickle</a>
&#8226; <a href="#xml.sax">xml.sax</a>
</div>
@ -3107,8 +3108,8 @@ imported by:
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/copy.py" type="text/plain"><tt>copy</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#copyreg">copyreg</a>
<a href="#copyreg">copyreg</a>
&#8226; <a href="#org">org</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#weakref">weakref</a>
@ -8077,7 +8078,8 @@ imports:
</div>
<div class="import">
imported by:
<a href="#multiprocessing.sharedctypes">multiprocessing.sharedctypes</a>
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#multiprocessing.sharedctypes">multiprocessing.sharedctypes</a>
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
</div>
@ -8755,7 +8757,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>org</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#pickle">pickle</a>
<a href="#copy">copy</a>
</div>
@ -9416,14 +9418,14 @@ imported by:
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/pickle.py" type="text/plain"><tt>pickle</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#_compat_pickle">_compat_pickle</a>
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#_compat_pickle">_compat_pickle</a>
&#8226; <a href="#_pickle">_pickle</a>
&#8226; <a href="#codecs">codecs</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#io">io</a>
&#8226; <a href="#itertools">itertools</a>
&#8226; <a href="#org">org</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#struct">struct</a>
@ -14099,6 +14101,7 @@ imported by:
<span class="moduletype">Package</span> <div class="import">
imports:
<a href="#xml">xml</a>
&#8226; <a href="#xml.parsers.expat">xml.parsers.expat</a>
</div>
<div class="import">
@ -14124,6 +14127,7 @@ imports:
<div class="import">
imported by:
<a href="#plistlib">plistlib</a>
&#8226; <a href="#xml.parsers">xml.parsers</a>
&#8226; <a href="#xml.sax.expatreader">xml.sax.expatreader</a>
&#8226; <a href="#xmlrpc.client">xmlrpc.client</a>