You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import click, re
|
|
|
|
from ffx.model.pattern import Pattern
|
|
from ffx.media_descriptor import MediaDescriptor
|
|
|
|
from ffx.tag_controller import TagController
|
|
from ffx.track_controller import TrackController
|
|
|
|
class MediaController():
|
|
|
|
def __init__(self, context):
|
|
|
|
self.context = context
|
|
self.Session = self.context['database']['session'] # convenience
|
|
|
|
self.__logger = context['logger']
|
|
|
|
self.__tc = TrackController(context = context)
|
|
self.__tac = TagController(context = context)
|
|
|
|
def setPatternMediaDescriptor(self, mediaDescriptor: MediaDescriptor, patternId: int):
|
|
|
|
try:
|
|
|
|
pid = int(patternId)
|
|
|
|
s = self.Session()
|
|
q = s.query(Pattern).filter(Pattern.id == pid)
|
|
|
|
if q.count():
|
|
pattern = q.first
|
|
|
|
for mediaTagKey, mediaTagValue in mediaDescriptor.getTags():
|
|
self.__tac.updateMediaTag(pid, mediaTagKey, mediaTagValue)
|
|
for trackDescriptor in mediaDescriptor.getAllTrackDescriptors():
|
|
self.__tc.addTrack(trackDescriptor, patternId = pid)
|
|
|
|
s.commit()
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
except Exception as ex:
|
|
self.__logger.error(f"MediaController.setPatternMediaDescriptor(): {repr(ex)}")
|
|
raise click.ClickException(f"MediaController.setPatternMediaDescriptor(): {repr(ex)}")
|
|
finally:
|
|
s.close()
|