(function () { var scriptName = "embed.js"; //name of this script, used to get reference to own tag var jQuery; //noconflict reference to jquery var jqueryPath = "https://ajax.googleapis.com/ajax/libs/jquery/1.12.1/jquery.min.js"; var jqueryVersion = "1.12.1"; var scriptTag; //reference to the html script tag /******** Get reference to self (scriptTag) *********/ var allScripts = document.getElementsByTagName('script'); var targetScripts = []; for (var i in allScripts) { var name = allScripts[i].src if(name && name.indexOf(scriptName) > 0) targetScripts.push(allScripts[i]); } scriptTag = targetScripts[targetScripts.length - 1]; audiomeIsLoaging = false; /******** helper function to load external scripts *********/ function loadScript(src, onLoad) { var script_tag = document.createElement('script'); script_tag.setAttribute("type", "text/javascript"); script_tag.setAttribute("src", src); if (script_tag.readyState) { script_tag.onreadystatechange = function () { if (this.readyState == 'complete' || this.readyState == 'loaded') { onLoad(); } }; } else { script_tag.onload = onLoad; } (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag); } /******** helper function to load external css *********/ function loadCss(href) { var link_tag = document.createElement('link'); link_tag.setAttribute("type", "text/css"); link_tag.setAttribute("rel", "stylesheet"); link_tag.setAttribute("href", href); (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(link_tag); } /******** load jquery into 'jQuery' variable then call main ********/ if (window.jQuery === undefined || window.jQuery.fn.jquery !== jqueryVersion) { loadScript(jqueryPath, initjQuery); } else { initjQuery(); } function initjQuery() { jQuery = window.jQuery.noConflict(true); main(); } function audiomegetString(length) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } function audiomeConsoleLog(strlog) { if (audiomeLog == true) { //console.log(strlog); } } function readMeAudioEnd(){ console.log("--> readMeAudioEnd INIT <--"); jQuery("#readmeerror").append("
ReadMeAudioEnd ") audiomePlayCount = audiomePlayCount + 1; if (audiomePlayCount <= audiomeMp3List.length - 1) { //console.log('Next file'); audiomeAudioSeek = 0 audiomeSeekPercent = 0 playAudioTTS(audiomeMp3List[audiomePlayCount]) } else { rewindAudioTTS(); audiomeConsoleLog('Finished! Playlist'); } } function playAudioTTS(mp3) { console.log("--> playAudioTTS INIT <--"); jQuery("#readmeerror").append("
playAudioTTS ") FireAnalytics("PlayAudio"); jQuery("#audiomebtn-loader").hide(); if (audiomeSeekPercent > 0) { audioMeProgress = audiomeSeekPercent * audiomeTotalTime; audiomePlayCount = 0; audiomeAudioSeek = audioMeProgress; var audiomeAcumulador = 0 for ( i = 0 ; i < audiomeMp3List.length ; i++ ) { audiomeAcumulador = audiomeAcumulador + audiomeMp3List[i].TotalSeconds if (audiomeAcumulador < audioMeProgress) { audiomePlayCount = i + 1; audiomeAudioSeek = audioMeProgress - audiomeAcumulador } } } console.log("--> PLAY <--"); console.log("--> src --> " + audiomeMp3List[audiomePlayCount]); console.log("--> PlayCount --> " + audiomePlayCount); console.log("--> Seek --> " + audiomeAudioSeek); readmeTTSAudio.src = audiomeMp3List[audiomePlayCount].url + "#t=" + audiomeAudioSeek //readmeTTSAudio.src = "http://www.readme.com/file.mp3"; console.log(" --> SRCLOAD ok"); var playPromise = readmeTTSAudio.play(); if (playPromise !== undefined) { playPromise.then(_ => { // Automatic playback started! // Show playing UI. console.log("automatic play started"); }) .catch(error => { // Auto-play was prevented // Show paused UI. audiomeErrorCount = audiomeErrorCount + 1; console.log("UPS, automatic play ERROR"); FireAnalytics("playPromise Error"); if (audiomeErrorCount < 6) { console.log("UPS, automatic play ERROR - TRY AGAIN " + audiomeErrorCount); FireAnalytics("playPromise Error retry - " + audiomeErrorCount); playAudioTTS(audiomeMp3List[audiomePlayCount]); } else { console.log("UPS, automatic play ERROR - DIE"); FireAnalytics("playPromise Error DIE - "); audiomeLoadAudio = false audiomeIsLoaging = false audiomeErrorCount = 0; rewindAudioTTS(); } }); } } function playSponsoredAudioTTS(){ readmeTTSAudioSponsored.src = audiomeSponsoredAudio.SponsorFileName console.log(" --> SPONSOR SRCLOAD ok"); var playPromise = readmeTTSAudioSponsored.play(); if (playPromise !== undefined) { playPromise.then(_ => { // Automatic playback started! // Show playing UI. console.log("automatic SPONSOR play started"); }) .catch(error => { // Auto-play was prevented // Show paused UI. audiomeSponsorErrorCount = audiomeSponsorErrorCount + 1; console.log("UPS, automatic SPONSOR play ERROR"); FireAnalytics("playPromise SPONSOR Error"); if (audiomeSponsorErrorCount < 3) { console.log("UPS, automatic SPONSOR play ERROR - TRY AGAIN " + audiomeSponsorErrorCount); FireAnalytics("playPromise SPONSOR Error retry - " + audiomeSponsorErrorCount); playSponsoredAudioTTS(); } else { console.log("UPS, automatic SPONSOR play ERROR - DIE"); FireAnalytics("playPromise SPONSOR Error DIE - "); playAudioTTS(audiomeMp3List[audiomePlayCount]); } }); } } function pauseAudioTTS() { console.log("--> pauseAudioTTS INIT <--"); jQuery("#audiomeProgressBarAlpha").stop(); readmeTTSAudio.pause(); audiomeStatus = "pause" jQuery("#audiomebtn-loader").hide(); jQuery("#audiomebtn-pause").hide(); jQuery("#audiomebtn-play").show(); //audiomeAudioSeek = audiomeHowlerList[audiomePlayCount].seek(); audiomeAudioSeek = readmeTTSAudio.currentTime; console.log('audiomeAudioSeek - ' + audiomeAudioSeek) console.log('audiomePlayCount - ' + audiomePlayCount) jQuery("#audiomebtn-loader").hide(); setTimeout(function(){ audiomeIsLoaging = false; }, 500); } function rewindAudioTTS() { console.log("--> rewindAudioTTS INIT <--"); FireAnalytics("EndAudio"); jQuery("#audiomeProgressBarAlpha").stop(); audiomePlayCount = 0 audiomeAudioSeek = 0 readmeTTSAudio.pause; audiomeStatus = "pause"; jQuery("#audiomebtn-loader").hide(); jQuery("#audiomebtn-pause").hide(); jQuery("#audiomebtn-play").show(); } function audioMeCalculatetotalTime() { console.log("--> audioMeCalculatetotalTime INIT <--"); var audioCount = 0 contaAudios = audiomeMp3List.length; contaLoaded = 0; audiomeMp3List.forEach(function(element) { var audiotimmer = new Audio(); audiotimmer.src = element.url; audiotimmer.addEventListener('loadedmetadata', function(){ var source = audiotimmer.src; console.log("source -> " + source) var TotalSeconds = parseInt(audiotimmer.duration); audiomeTotalTime = audiomeTotalTime + TotalSeconds console.log( "Seconds - " + TotalSeconds); console.log( "audiomeTotalTime - " + audiomeTotalTime); audioCount = audioCount + 1 audiomeMp3List.forEach(function(item) { if (item.url == audiotimmer.src) { item.TotalSeconds = audiotimmer.duration; } }); if (audioCount >= audiomeMp3List.length){ var minutes = parseInt(audiomeTotalTime / 60, 10); var seconds = parseInt(audiomeTotalTime % 60); if (minutes < 10 ) {minutes = "0" + minutes} if (seconds < 10 ) {seconds = "0" + seconds} audiomeTotalTimeDisplay = minutes + ":" + seconds ; console.log( "TotalTime display - " + audiomeTotalTimeDisplay); audiomeMp3List.forEach(function(x) { console.log("audiomeMp3List.url " + x.url) console.log("audiomeMp3List.TotalSeconds " + x.TotalSeconds) }); } contaLoaded = contaLoaded + 1; if(contaLoaded >= contaAudios && contaAudios > 0) // Significa que termonou o load dos audios { if (audiomeSponsoredBannerFlag == "ON") { // mostra o banner patrocinado console.log("Show Sponsored Banner") var img = new Image(); img.src = homeUrl + '/img/' + audiomeSponsoredBanner.banerKey; img.id = "audiomeSponsoredImage" var link = document.createElement("a"); link.id = "audiomeSponsoredLink"; // Create a

element link.href = audiomeSponsoredBanner.bannerClick link.target = "_blank" document.getElementById('audiome-container').appendChild(link); document.getElementById('audiomeSponsoredLink').appendChild(img); jQuery("#audiomeSponsoredLink").fadeIn(); } if ( audiomeSponsoredAudioFlag == "ON") { playSponsoredAudioTTS(); playSponsoredAudioTTS } else { playAudioTTS(audiomeMp3List[0]); } // audiomeHowlerList[0].play(); } },0); }); } function getHostName(fullurl){ var url = fullurl; var hostname = (new URL(url)).hostname; console.log("hostname -> " + hostname) return hostname; } function HideElementByClass(documentClone, classname){ var x = documentClone.getElementsByClassName(classname); var i; for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } return documentClone; } function HideElementByID(documentClone, idname){ console.log(" HideElementByID -> " + idname) var x = documentClone.getElementById(idname); if (x != null ) { x.style.display = "none"; } return documentClone; } function ReadabilityAjust(textIn){ textOut = textIn //textOut = textOut.replace(/ – Pais&Filhos/g, '. Pais e Filhos'); textOut = textOut.replace(/\./g, '. '); textOut = textOut.replace(/\n|\s{2,}/g, ' '); textOut = textOut.replace(/ /g, ' '); textOut = textOut.trim() return textOut; } function strip(html) { var tmp = document.createElement("DIV"); tmp.innerHTML = html; return tmp.textContent||tmp.innerText; } function LoadReadability(){ console.log("--> LoadReadability INIT <--"); var documentClone = document.cloneNode(true); // bloqueios padrao documentClone = HideElementByID(documentClone, "audiome-container"); documentClone = HideElementByClass(documentClone, "twitter-tweet"); documentClone = HideElementByClass(documentClone, "instagram-media"); documentClone = HideElementByID(documentClone, "fb-root"); documentClone = HideElementByClass(documentClone, "OUTBRAIN"); documentClone = HideElementByID(documentClone, "taboola-below-article-thumbnails"); // bloqueios do cliente //documentClone = HideElementByID(documentClone, "mvp_catlist_widget-5"); documentClone = HideElementByID(documentClone, "collapseReport"); documentClone = HideElementByClass(documentClone, "post_credits"); article = new Readability(documentClone).parse(); audioMeContent = strip(article.content) audioMeTitle = article.title.trim() + "." audioMeExcerpt = article.excerpt.trim() + ". " console.log("audioMeTitle -> " + audioMeTitle) console.log("audioMeExcerpt -> " + audioMeExcerpt) console.log("audioMeContent -> " + audioMeContent) audiomeFullcontent = ReadabilityAjust(audioMeTitle + audioMeContent); console.log("audiomeFullcontent -> " + audiomeFullcontent) } function audioMeCleartitle (audioMeTitle) { //ClearTitle.forEach(function(current, i) { //audiomeMp3List.push(data.urls[i]) // audioMeTitle = audioMeTitle.replace(ClearTitle[i], "") //console.log('audiome title replace ' + data.urls[i]) //}); audiomeConsoleLog("clearTitle " + audioMeTitle) return audioMeTitle } function audioMeFillProgressBar(){ audiomeConsoleLog('audioMeFillProgressBar') var i; var min=7; var max=30; for (i = 1; i < 71 ; i++) { var random =Math.floor(Math.random() * (+max - +min)) + +min; jQuery('

', { id: 'audiomeProgressBarItem-' + i, "class": 'audiomeProgressBarItem', style: 'height:'+ random + 'px;' }).appendTo('#audiomeProgressBar'); //jQuery( "#audiomeProgressBar" ).append(div); } } function audioMeCalcETA() { console.log("--> audioMeCalcETA INIT <--"); var audiomePlayed = 0 var audiomeETA = 0 for (i = 0 ; i < audiomePlayCount ; i ++ ) { audiomePlayed = audiomePlayed + audiomeMp3List[i].TotalSeconds; console.log ("Duration loop -> " + audiomeMp3List[i].TotalSeconds) } audiomeETA = audiomeTotalTime - audiomePlayed - audiomeAudioSeek console.log("audiomePlayed -> " + audiomePlayed); console.log("audiomeAudioSeek -> " + audiomeAudioSeek); console.log("audiomePlayCount -> " + audiomePlayCount); console.log("audiomeETA -> " + audiomeETA); return audiomeETA; } function audioMeProgressBarAnimate() { console.log("--> audioMeProgressBarAnimate INIT <--"); jQuery("#readmeerror").append("
ProgressBar Animate ") jQuery("#audiomeProgressBarAlpha").stop(); var audiomeETA = audioMeCalcETA() var totalwith = jQuery("#audiomeProgressBar").width() var newWidth = totalwith * (audiomeETA / audiomeTotalTime) jQuery("#audiomeProgressBarAlpha").width(newWidth); jQuery('#audiomeProgressBarAlpha' ).animate({ width: 0}, parseInt(audiomeETA * 1000 ), "linear", function() { audiomeConsoleLog("done animate"); }); } function audioMeLoadTTS () { console.log("--> audioMeLoadTTS INIT <--"); audiomeConsoleLog ('audioMeLoadTTS') FireAnalytics("LoadAudio"); var url = 'https://u6bdxq3r4k.execute-api.us-east-1.amazonaws.com/default/PollyFunction'; var contaAudios = -1; var contaLoaded = -1; formData = JSON.stringify({ //'filename': 'filenaleaudiome.mp3', 'voice' : audiomeVoiceName, 'text': audiomeFullcontent, 'clientid' : audiomeClientId , //'path' : window.location.pathname , 'url' : window.location.pathname , 'domain' : getHostName(document.location), 'brief': 'N' // Y OR N }) jQuery.post( url, formData) .done(function( data ) { audiomeConsoleLog( "status " + data.status ); audiomeConsoleLog( "deltaTime " + data.deltaTime ); audiomeConsoleLog( "textSize " + data.textSize ); audiomeLoadAudio = true if (data.status != "OK"){ FireAnalytics("ERRO - " + window.location.pathname); } data.urls.forEach(function(current, i) { var dictaudio = {}; dictaudio.url = data.urls[i] audiomeMp3List.push(dictaudio) }); audiomeConsoleLog ('audiomeMp3List length ' + audiomeMp3List.length) FireAnalytics ("dbAudio-" + data.actionDB ) audioMeCalculatetotalTime(); }); } function audioMePlayClick() { console.log("--> audioMePlayClick INIT <--"); if (audiomeLoadAudio == false) { readmeTTSAudio.play(); readmeTTSAudioSponsored.play(); } if (audiomeIsLoaging == false) { audiomeConsoleLog('button pressed'); audiomeIsLoaging = true //jQuery("#audiomebtn-loader").html('.....'); jQuery("#audiomebtn-pause").hide(); jQuery("#audiomebtn-play").hide(); jQuery("#audiomebtn-loader").hide(); jQuery("#audiomebtn-loader").show(); if (audiomeLoadAudio == false) { audioMeLoadTTS(); } else { if (audiomeStatus == "stop" || audiomeStatus == "pause") { //audiomeStatus == "play" audiomeSeekPercent = 0 playAudioTTS(audiomeMp3List[audiomePlayCount]) } else { audiomeStatus == "pause" pauseAudioTTS(); } } } else{ console.log("else!") } } function audioMeTouchBarClick (event){ console.log("--> audioMeTouchBarClick INIT <--"); if (audiomeIsLoaging == false) { audiomeConsoleLog('click'); audiomeIsLoaging = true; if (audiomeStatus == "play") { pauseAudioTTS() } jQuery("#audiomeProgressBarAlpha").stop(); var offset = jQuery("#audiomeProgressBar").offset(); var relativeX = (event.pageX - offset.left); audiomeConsoleLog('relativeX - ' + relativeX); var totalwith = jQuery("#audiomeProgressBar").width(); var perceltualbar = 1 - (relativeX / totalwith) audiomeConsoleLog('perceltual - ' + perceltualbar); var newWidth = perceltualbar * totalwith audiomeConsoleLog('newWidth - ' + newWidth); jQuery("#audiomeProgressBarAlpha").width(newWidth); audiomePercentual = relativeX / totalwith audiomeConsoleLog('audiomePercentual - ' + audiomePercentual); audiomeSeekPercent = audiomePercentual jQuery("#audiomebtn-pause").hide(); jQuery("#audiomebtn-play").hide(); jQuery("#audiomebtn-loader").show(); if (audiomeLoadAudio == false) { audioMeLoadTTS(); } else { playAudioTTS(audiomeMp3List[audiomePlayCount]); } } } function FireAnalytics (eventAction) { try { loadScript( "https://www.googletagmanager.com/gtag/js?id=G-VV4TQTEC54" , function() { window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-VV4TQTEC54'); gtag('event', eventAction, {'event_category' : audiomeClientId}); console.log("ga4 ok"); }); } catch(err) { console.log("catch ga4 FireAnalytics"); } } function getP(name){ if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search)) return decodeURIComponent(name[1]); } function audioMeOpenLead(){ console.log("Local Storage -> " + localStorage.getItem(audiomeClientId)) console.log("audiomeLeadConfig -> " + audiomeLeadConfig) if ((audiomeLeadConfig == "1" || audiomeLeadConfig == "2") && (localStorage.getItem(audiomeClientId) == "false")) { jQuery('#audiome-player' ).animate({height: 115}, 1000, "swing", function() { //audiomeConsoleLog("done animate"); FireAnalytics("OpenLead") }); } } function audioMeCloseLead(){ jQuery('#audiome-lead ' ).fadeOut() jQuery('#audiome-player' ).animate({height: 50}, 1000, "swing", function() { audiomeConsoleLog("done animate"); FireAnalytics("CloseLead") }); } function audioMeCriticEmail(msg){ jQuery('#audiome-lead-label' ).css("display", "none"); jQuery('#audiome-lead-label' ).css("color", "red"); jQuery('#audiome-lead-label' ).text(msg) jQuery('#audiome-lead-label' ).fadeIn(); } function audioMevalidateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(String(email).toLowerCase()); } function audiomeLeadSubmit(){ console.log("audiomeLeadSubmit") var audiomeNome = jQuery('#audiome-nome-input' ).val() var audiomeEmail = jQuery('#audiome-email-input' ).val() var urlLead = audioMeRemoteUrl + "/lead/saveLead" var IsValideEmail = audioMevalidateEmail(audiomeEmail) submitLead = true if (IsValideEmail == false ) { audioMeCriticEmail("Ops. Por favor, informe um e-mail válido") submitLead = false; } console.log("audiomeNome -> " + audiomeNome) console.log("audiomeEmail -> " + audiomeEmail) if (submitLead == true) { $.ajax({ url: urlLead, type: "post", data: { 'audiomeNome' : audiomeNome, 'audiomeEmail' : audiomeEmail, 'readmeSlug' : audiomeClientId, 'readmeDomain' : getHostName(document.location) } }) .done(function( msg ) { // alert( "Data Saved: " + msg ); if (msg.status == "ok") { audioMeCloseLead() localStorage.setItem(audiomeClientId,"true"); } else { audioMeCriticEmail(msg.message) } }); } } /******** starting point for your widget ********/ function main() { //your widget code goes here //configuracoes aqui console.log("--> readme FREE DEMO INIT v. 05/2020 <--"); //clienteId = getP("clienteId"); loadCss("https://fonts.googleapis.com/icon?family=Material+Icons"); var csspreload = document.createElement("LINK"); // Create a