16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_media.interfaces import IMediaConversionUtility, CONVERTER_HANDLER_KEY, CUSTOM_AUDIO_TYPES, \ |
19 from pyams_media.interfaces import IMediaConversionUtility, CONVERTER_HANDLER_KEY, CUSTOM_AUDIO_TYPES, \ |
20 CUSTOM_VIDEO_TYPES |
20 CUSTOM_VIDEO_TYPES |
21 from pyams_utils.interfaces.zeo import IZEOConnection |
|
22 from zope.intid.interfaces import IIntIds |
21 from zope.intid.interfaces import IIntIds |
23 |
22 |
24 # import packages |
23 # import packages |
25 from persistent import Persistent |
24 from persistent import Persistent |
26 from pyams_utils.registry import get_utility |
25 from pyams_utils.registry import get_utility |
33 |
32 |
34 @implementer(IMediaConversionUtility) |
33 @implementer(IMediaConversionUtility) |
35 class MediaConversionUtility(Persistent, Contained): |
34 class MediaConversionUtility(Persistent, Contained): |
36 """Medias conversions utility""" |
35 """Medias conversions utility""" |
37 |
36 |
38 zeo_connection = FieldProperty(IMediaConversionUtility['zeo_connection']) |
37 zodb_name = FieldProperty(IMediaConversionUtility['zodb_name']) |
39 |
38 |
40 video_formats = FieldProperty(IMediaConversionUtility['video_formats']) |
39 video_formats = FieldProperty(IMediaConversionUtility['video_formats']) |
41 video_frame_size = FieldProperty(IMediaConversionUtility['video_frame_size']) |
40 video_frame_size = FieldProperty(IMediaConversionUtility['video_frame_size']) |
42 video_bitrate = FieldProperty(IMediaConversionUtility['video_bitrate']) |
41 video_bitrate = FieldProperty(IMediaConversionUtility['video_bitrate']) |
43 video_quantisation = FieldProperty(IMediaConversionUtility['video_quantisation']) |
42 video_quantisation = FieldProperty(IMediaConversionUtility['video_quantisation']) |
73 def convert(self, media, format): |
72 def convert(self, media, format): |
74 """Send conversion request for given media""" |
73 """Send conversion request for given media""" |
75 socket = self._get_socket() |
74 socket = self._get_socket() |
76 if socket is None: |
75 if socket is None: |
77 return [501, "No socket handler defined in configuration file"] |
76 return [501, "No socket handler defined in configuration file"] |
78 if not self.zeo_connection: |
|
79 return [502, "Missing ZEO connection"] |
|
80 zeo = get_utility(IZEOConnection, self.zeo_connection) |
|
81 intids = get_utility(IIntIds) |
77 intids = get_utility(IIntIds) |
82 settings = {'zeo': zeo.get_settings(), |
78 settings = {'zodb_name': self.zodb_name, |
83 'media': intids.register(media), |
79 'media': intids.register(media), |
84 'format': format} |
80 'format': format} |
85 socket.send_json(['convert', settings]) |
81 socket.send_json(['convert', settings]) |
86 return zmq_response(socket) |
82 return zmq_response(socket) |
87 |
83 |
88 def test_process(self): |
84 def test_process(self): |
89 """Send test request to conversion process""" |
85 """Send test request to conversion process""" |
90 socket = self._get_socket() |
86 socket = self._get_socket() |
91 if socket is None: |
87 if socket is None: |
92 return [501, "No socket handler defined in configuration file"] |
88 return [501, "No socket handler defined in configuration file"] |
93 if not self.zeo_connection: |
|
94 return [502, "Missing ZEO connection"] |
|
95 socket.send_json(['test', {}]) |
89 socket.send_json(['test', {}]) |
96 return zmq_response(socket) |
90 return zmq_response(socket) |