Skip to content

Commit 5e3f9ff

Browse files
Created decode_sound_card_name method.
1 parent 1642b31 commit 5e3f9ff

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

utils/audio_player/bass_init.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,19 @@ def initialize(self):
9797
logger.info("BASS initialized successfully.")
9898
return self.bass
9999

100+
@staticmethod
101+
def decode_sound_card_name(name: bytes) -> str:
102+
encodings = ['cp1256', 'utf-8', 'latin1', 'iso8859-6', 'windows-1252', 'utf-16']
103+
for encoding in encodings:
104+
try:
105+
return name.decode(encoding)
106+
except (UnicodeDecodeError, UnicodeEncodeError):
107+
logger.debug(f"Failed to decode sound card name '{name}' with encoding '{encoding}'. Trying next encoding.")
108+
continue
109+
110+
logger.warning(f"Failed to decode sound card name '{name}' with all encodings. Returning original name.")
111+
return str(name)
112+
100113
def get_sound_cards(self) -> List[SoundCard]:
101114
"""Retrieve a list of available sound cards."""
102115
logger.debug("Retrieving available sound cards.")
@@ -108,7 +121,7 @@ def get_sound_cards(self) -> List[SoundCard]:
108121
if not self.bass.BASS_GetDeviceInfo(index, ctypes.byref(info)):
109122
break
110123

111-
name=info.name.decode() if info.name else "Unknown"
124+
name = self.decode_sound_card_name(info.name) if info.name else "Unknown"
112125
if name.strip().lower() == "default":
113126
name = "الافتراضي"
114127

0 commit comments

Comments
 (0)