Esempio n. 1
0
    def generate_tts_sample(self, text, voice="antoine22k"):

        text = text.replace("\n", "").replace(
            "\r", ""
        )  # TTS engine will stop sound mixing when a newline is encountered, so we remove them all

        if not config.ACAPELA_CLIENT_ARGS:
            if not config.DEBUG:
                raise RuntimeError("Text-to-speech engine is not configured")
            else:
                self.logger.warning(
                    "Generating DUMMY mp3 link for voice=%r and text=%r",
                    voice, text)
                #sound_url = "http://dummy_test_url_%d.mp3" % int(time.time())
                sound_url = "http://localhost:8000/files/f26529e7/audio/radio_spots/personal_messages/A_intro_messages.mp3"

        else:

            tts = AcapelaClient(**config.ACAPELA_CLIENT_ARGS)

            self.logger.info("Generating TTS sample for voice=%r and text=%r",
                             voice, text)

            try:
                #res = {'alt_sound_size': None, 'sound_size': u'6799', 'sound_time': u'805.75', 'sound_id': u'289920127_cffb8f40d9f30', 'alt_sound_url': None, 'sound_url': u'http://vaas.acapela-group.com/MESSAGES/009086065076095086065065083/EVAL_4775608/sounds/289920127_cffb8f40d9f30.mp3', 'warning': u'', 'get_count': 0}
                res = tts.create_sample(voice=voice,
                                        text=text,
                                        response_type="INFO")
            except EnvironmentError as e:
                self.logger.critical("TTS generation failed for %s/%r: %r",
                                     voice, text, e)
                raise  # OK for AJAX request

            self.logger.info("TTS generation successful: %r", res)

            sound_url = res["sound_url"]

        # we backup mp3 and text, for use in other game session
        try:
            _filename_base = datetime.now().strftime(
                "%Y%m%d%H%M%S_") + slugify(text)[0:180]
            full_filename_base = os.path.join(GAME_RADIOSPOTS_BACKUPS_ABSPATH,
                                              _filename_base)
            r = requests.get(sound_url)
            r.raise_for_status()
            with open(full_filename_base + ".mp3", "wb") as code:
                code.write(r.content)
            with open(full_filename_base + ".txt", "wb") as code:
                code.write(text.encode('utf8'))
        except requests.exceptions.HTTPError as e:
            self.logger.error("Could not save generated TTS mp3 for %s/%r: %r",
                              voice, text, e)

        html_player = mediaplayers.build_proper_viewer(sound_url,
                                                       autostart=True)

        return dict(sound_url=sound_url, mediaplayer=html_player)
Esempio n. 2
0
def mediaplayer(properties, autostart="false"):

    fileurl = determine_asset_url(properties)

    try:
        res = mediaplayers.build_proper_viewer(fileurl, autostart=(autostart == "true"))
        return mark_safe(res)
    except:
        logging.error("mediaplayer filter failed", exc_info=True)
        return mark_safe("<a href=" + fileurl + ">" + fileurl + "</a>")
Esempio n. 3
0
def mediaplayer(properties, autostart="false"):

    fileurl = determine_asset_url(properties)
    title = properties.get("title") if hasattr(properties, "get") else properties  # might even be None

    try:
        res = mediaplayers.build_proper_viewer(fileurl, title=title, autostart=(autostart == "true"))
        return mark_safe(res)
    except:
        logging.error("mediaplayer filter failed", exc_info=True)
        return mark_safe("<a href=" + fileurl + ">" + fileurl + "</a>")
Esempio n. 4
0
def view_media(request, template_name='utilities/view_media.html'):
    fileurl = request.REQUEST.get("url", None)
    autostart = (request.REQUEST.get("autostart", "false") == "true")

    if fileurl:
        media_player = mediaplayers.build_proper_viewer(fileurl,
                                                        autostart=autostart)
    else:
        media_player = "<p>" + _(
            "You must provide a valid media url.") + "</p>"

    return render(request, template_name, {'media_player': media_player})
Esempio n. 5
0
def mediaplayer(properties, autostart="false"):
    fileurl = determine_asset_url(properties)
    title = properties.get("title") if hasattr(
        properties, "get") else properties  # might even be None

    try:
        res = mediaplayers.build_proper_viewer(fileurl,
                                               title=title,
                                               autostart=(autostart == "true"))
        return mark_safe(res)
    except:
        logging.error("mediaplayer filter failed", exc_info=True)
        return mark_safe("<a href=" + fileurl + ">" + fileurl + "</a>")
Esempio n. 6
0
def view_media(request, template_name='utilities/view_media.html'):

    fileurl = request.REQUEST.get("url", None)
    autostart = (request.REQUEST.get("autostart", "false") == "true")

    if fileurl:
        media_player = mediaplayers.build_proper_viewer(fileurl, autostart=autostart)
    else:
        media_player = "<p>" + _("You must provide a valid media url.") + "</p>"

    return render(request,
                  template_name,
                    {
                     'media_player': media_player
                    })