Skip to content

Commit 14fc2e8

Browse files
committed
fixes
1 parent 750fb5b commit 14fc2e8

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

twitch_listener/listener.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,28 @@ def parse_logs(self, channels = [], timestamp = True, remove_bots = False):
137137
or specify a list of log files to parse.")
138138

139139
# Retrieve data from logs
140+
import re
141+
import codecs
142+
143+
ESCAPE_SEQUENCE_RE = re.compile(r'''
144+
( \\U........ # 8-digit hex escapes
145+
| \\u.... # 4-digit hex escapes
146+
| \\x.. # 2-digit hex escapes
147+
| \\[0-7]{1,3} # Octal escapes
148+
| \\N\{[^}]+\} # Unicode characters by name
149+
| \\[\\'"abfnrtv] # Single-character escapes
150+
)''', re.UNICODE | re.VERBOSE)
151+
152+
def decode_escapes(s):
153+
def decode_match(match):
154+
return codecs.decode(match.group(0), 'unicode-escape')
155+
156+
return ESCAPE_SEQUENCE_RE.sub(decode_match, s)
157+
158+
# Check if string given
159+
if type(channels) == str:
160+
channels = [channels]
161+
140162
for channel in channels:
141163
if not channel.endswith(".log"):
142164
filename = channel + ".log"
@@ -167,7 +189,7 @@ def parse_logs(self, channels = [], timestamp = True, remove_bots = False):
167189

168190
# Parse username, message text and (optional) datetime
169191
data = []
170-
for ind, message in enumerate(split_messages):
192+
for message in split_messages:
171193
username = None
172194
message_text = None
173195
datetime = None
@@ -179,7 +201,8 @@ def parse_logs(self, channels = [], timestamp = True, remove_bots = False):
179201

180202
slice_point = slice_.find(":") + 1
181203
message_text = slice_[slice_point:]
182-
row['text'] = message_text
204+
decoded_txt = decode_escapes(message_text).encode('latin1').decode('utf-8')
205+
row['text'] = decoded_txt
183206

184207
# Parse username
185208
b = message.find("b")

0 commit comments

Comments
 (0)