Example #1
0
class UOLMais(MediaAPI):

    def __init__(self):
        super(UOLMais, self).__init__()
        self._lib = UOLMaisLib()

    def authenticate(self):
        try:
            username = settings.UOLMAIS_USERNAME
        except AttributeError:
            raise Exception(_('Settings UOLMAIS_USERNAME is not set'))

        try:
            password = settings.UOLMAIS_PASSWORD
        except AttributeError:
            raise Exception(_('Settings UOLMAIS_PASSWORD is not set'))

        self._lib.authenticate(username, password)

    def video_upload(self, *args, **kwargs):
        return self.upload('video', *args, **kwargs)

    def audio_upload(self, *args, **kwargs):
        return self.upload('audio', *args, **kwargs)

    def upload(self, type, media_path, title, description, tags):
        tags = tags or []
        tags.append('virgula')

        self.authenticate()

        saopaulo_tz = pytz.timezone('America/Sao_Paulo')
        media_args = {
            'f': open(media_path, 'rb'),
            'pub_date': timezone.localtime(timezone.now(), saopaulo_tz),
            'title': title,
            'description': description,
            'tags': u','.join(tags),
            'visibility': UOLMaisLib.VISIBILITY_ANYONE,
            'comments': UOLMaisLib.COMMENTS_NONE,
            'is_hot': False
        }

        if type == 'video':
            media_id = self._lib.upload_video(**media_args)
        elif type == 'audio':
            media_id = self._lib.upload_audio(**media_args)

        return self.get_info(media_id)

    def get_info(self, media_id):
        result = super(UOLMais, self).get_info(media_id)
        result['id'] = media_id

        info = self._lib.get_by_id(media_id)

        if info:
            tags = u','.join([tag['description'] for tag in info['tags']])
            # Embed for audio
            if info['mediaType'] == 'P':
                embed = render_to_string('multimedias/uolmais/audio_embed.html',
                                         {'media_id': media_id})
            else:
                embed = info['embedCode']

            result.update({
                u'title': info['title'],
                u'description': info['description'],
                u'thumbnail': info['thumbLarge'],
                u'tags': tags,
                u'embed': embed,
                u'url': info['url'],
                u'status': 'ok',
            })
        else:
            result['status'] = 'error'

        return result