You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/libs/plex_activity/sources/s_logging/parsers/scrobble.py

39 lines
1.1 KiB

6 years ago
from plex_activity.core.helpers import str_format
from plex_activity.sources.s_logging.parsers.base import Parser, LOG_PATTERN
import re
class ScrobbleParser(Parser):
pattern = str_format(LOG_PATTERN, message=r'Library item (?P<rating_key>\d+) \'(?P<title>.*?)\' got (?P<action>(?:un)?played) by account (?P<account_key>\d+)!.*?')
regex = re.compile(pattern, re.IGNORECASE)
events = [
'logging.action.played',
'logging.action.unplayed'
]
def __init__(self, main):
super(ScrobbleParser, self).__init__(main)
# Pipe events to the main logging activity instance
self.pipe(self.events, main)
def process(self, line):
match = self.regex.match(line)
if not match:
return False
action = match.group('action')
if not action:
return False
self.emit('logging.action.%s' % action, {
'account_key': match.group('account_key'),
'rating_key': match.group('rating_key'),
'title': match.group('title')
})
return True