Linha 1:
$.get("http://economia.uol.com.br/cotacoes", function( data ) {
Usando jQuery foi invocado o método get() para fazer download da página de cotações do site
Economia UOL. O retorno do
método (código HTML) é armazenado na variável
data, que será usada pela função interna do método.
Linha 2:
var html = $("body").text(data).text();
A variável
html recebe o conteúdo, em modo texto, da variável "data". Em português claro, recebe o código HTML do site da UOL (versão mobile).
Linhas 3 e 4:
var regex1 = /venda/i;
var regex2 = /^.*quebradir">(.*)<.span><.div>/gi;
Foram criadas duas expressões regulares, uma para coincindir com a primeira ocorrência da palavra "Venda" e outra para extrair o conteúdo que está entre quebradir"< e
<.span><.div>. Se quiser entender melhor, eis o trecho do código fonte do site UOL no qual as expressões coincidem:
<div class="p">Venda <span class="quebradir">2,6512</span></div>
Linhas 5, 6 e 7:
var saida = html.split("\n");
var texto = '';
for (i = 0; i<saida.length; i++) {
Foi criado um array "saida" onde cada elemento é uma linha do código fonte do site. Vejam que usei o "\n" (quebra de linha) como delimitador da função split().
Em seguida criei uma variável texto sem conteúdo e abri um
loop for para percorrer linha por linha do site de cotações.
Linhas 8, 9 e 10:
if (saida[i].match(regex1)) {
texto += saida[i].replace(regex2, "\$1");
break;
Se a linha corrente combinar com a primeira expressão regular, então vamos extrair o valor da cotação com:
saida[i].replace(regex2, "\$1");
Onde \$1 corresponde ao conteúdo delimitado por parêntesis em regex2.
Como já pegamos o valor desejado (cotação do dólar comercial), vamos interromper o looping com a chamada "break".
Linha 13:
say("Cotação do dólar " + texto, "default", "default", "Media", 5, 5);
Usando o método built-in say() do Tasker, vamos fazer o celular narrar a cotação. Para melhor entendimento da linha acima, veja a sintaxe da função say():
say( str text, str engine, str voice, str stream, int pitch, int speed )
Faz o dispositivo falar o conteúdo de "text".
- engine: a engine de fala. Exemplo: com.svox.classic. Use "default" ou "undefined" para usar a padrão do sistema.
- voice: a voz a ser usada. Use "default" ou "undefined" para usar a padrão da engine de voz.
- stream: saída de áudio a ser usada. Media corresponde ao "Media volume". Pode-se usar volume de toque, notificação e sistema.
- pitch: valor entre 1-10.
- speed: valor entre 1-10.
Com o script criado e o código explicado, vamos ao Tasker!