Widget do IMDb para o WordPress

Após o widget para o HackerRank, estava na altura de fazer uso do conhecimento adquirido para criar mais widgets. Desta vez, eu e o Henrique Dias, decidimos criar um widget que exibe um perfil do IMDb no blog WordPress. 

O widget tem as seguintes funcionalidades relativas a um perfil IMDb:

  • Informação geral (username, bio., badges);
  • Os últimos votos (com gráficos);
  • A watchlist;
  • As listas;
  • As críticas (reviews);
  • As entradas nos fóruns.

Para que funcione, basta instalar, adicionar o widget e inserir o username!

Vamos à implementação… Para além de reforçar e melhorar os conhecimentos previamente adquiridos, há que assinalar os seguintes pontos, que, de certa forma, foram novidade:

  • Web scrapping: foi necessário explorar conceitos de web scraping, pois o IMDb não fornece uma API. Para tal, usou-se a biblioteca Goutte. Isolámos o seu uso numa biblioteca nossa (smart-scraper), de mais alto nível, com uma API fluente. Vejamos um exemplo que mostra como é fácil sacar informação de um perfil IMDb com o mínimo de dependências:
    hOBTMK9[1]
    O código acima coloca dentro de $info a variável $watchlist sacada com o seletor CSS .watchlist .item o qual dá origem a uma listagem. Dessa listagem queremos 3 valores (title, link e logo, cada um conseguido com o seu subseletor).
  • Gestão de dependências: neste caso, o sistema escolhido foi o Composer (equivalente ao Maven para Java). Este utilitário funciona em complemento com o Packagist, um repositório para as dependências, onde alojámos o nosso “smart-scraper”.
  • Organização: melhorámos a organização dos ficheiros, tentando seguir as normas dos plugins WordPress (inspiração num boilerplate e num gerador).
  • CSS transversal: para evitar repetição de código, foi criado um CSS que agrega as regras em comum nos widgets criados por nós.
  • Sincronização de repositórios: o Henrique aproveitou para criar um utilitário para simplificar o processo de commit (wpsync), já que temos o código no GitHub, mas há que fazer commit para o WordPress em paralelo (e aumentar a versão do widget, para desencadear as atualizações).

Planeamos criar mais widgets… Stay tuned!

Recursos

Deixar uma resposta