Playlist com Youtubil

O Youtube fornece uma API para tratar os videos e playlists em HTML. Para usa-la basta fazer duas coisinhas.
No html:

<div id="ytplayer" class="embed"></div>

No Javascript:

    window.onYouTubePlayerAPIReady = function () {
        var lastState;
        var playlistPaused;
        var onStateChange = function (event) {
            if (event.data === YT.PlayerState.PLAYING) {
                console.log('video tocando.');
            } else if (event.data === YT.PlayerState.PAUSED) {
                console.log('video pausado');
            } else if (event.data === YT.PlayerState.ENDED) {
                console.log('video finalizado');
            }
        };

        var player = new YT.Player('ytplayer', {
            height: '560',
            width: '315',
            playerVars: {
                listType: 'playlist',
                list: 'PLGfdhjYdO0ECtwQ_BdEI8aVyywzK40B97',
                'fs': 1,
                'iv_load_policy': 3,
                'controls': 1,
                'rel': 0,
                'showinfo': 0
            },
            events: {
                "onStateChange": onStateChange
            }
        });
    };

Barbada!!!!

Limpando uma sujeira

Esses dias precisei de um código para remover parâmetros de uma queryString, achei esse:

function removeURLParam(url, param)
{
 var urlparts= url.split('?');
 if (urlparts.length>=2)
 {
  var prefix= encodeURIComponent(param)+'=';
  var pars= urlparts[1].split(/[&;]/g);
  for (var i=pars.length; i-- > 0;)
   if (pars[i].indexOf(prefix, 0)==0)
    pars.splice(i, 1);
  if (pars.length > 0)
   return urlparts[0]+'?'+pars.join('&');
  else
   return urlparts[0];
 }
 else
  return url;
}

Link original em: http://stackoverflow.com/questions/1634748/how-can-i-delete-a-query-string-parameter-in-javascript

Parem as prensas

Esses dias eu fiquei curioso para saber a diferença entre stopPropagation e preventDefault. Segue a explicação que eu achei.

  • stopPropagation é utilizado para ter certeza que o evento não vai “borbulhar” para cima.
    ex: o clique em um também ir gerar um click no <td> dispara um clique no <tr> e no <table>. O stopPropagation evita que isso ocorra.
  • preventDefault é utilizado para evitar a ação normal de um elemento.
    ex: o preventDefault em um clique sobre um link ira evitar da url ser aberta, o em um botão evitar de postar o formulário.

Essa explicação me ajudou bastante.

Falando por alguém

Integrações com redes sociais são cada vez mais necessárias. Recententemente fiz uma com o Facebook.

Postando no feed da pessoa que autorizou o aplicativo  Material original em https://developers.facebook.com/docs/graph-api/reference/v2.0/user/feed

Implementei o seguinte código:

FB.api(
    "/me/feed",
    "POST",
    {
        message: "Estou postanto em nome da pessoa",
        link: 'http://calielcosta.com',
        name: "nome do link",
        description: "descrição do link"
        privacy: {
            value: 'EVERYONE'
        },
        actions: [
            {
                name: "Sobre",
                link: "http://calielcosta.com/about/",
            },
        ],
    },
    function (response) {
        if (response && response.error) {
            console.error(JSON.stringify(response.error));
        }
    }
);

Importante:
É necessário que o usuário tenha liberado a permissão publish_action para realizar a publicação de ações em seu nome.