O meu último post sobre o Bot do Telegram mostrou minha ideia de criar um bot para ser utilizado como coletor de informações de concurso do site PCIConcursos. Desde daquele post não tive tempo livre para finalizar esse meu projeto particular. Contudo, eu consegui encontrar uma ferramenta que me ajudará na implementação desse projeto.

O objetivo desse post é apresentar o “import.io“, um site que  permite transformar uma web page em um repositório de dados. Acabei descobrindo-o visualizando uns slides sobre uma palestra de acesso a dados públicos, eu encontrei esse site.  A palestra a qual me refiro está aqui embaixo:

Bem, a mágica do import.io é transformar uma webpage com um certo padrão de visualização em uma fonte de dados. Então imagine criar uma api para acessar os posts do meu blog. Bem, só imagine porque com o import.io é bem simples. Inclusive, segue o link

https://magic.import.io/?site=http:%2F%2Fblog.rodrigolira.net%2F

Simples, não? Imagine a infinidade de sites que existem que podem ser facilmente exportados para uma API.

https://magic.import.io/?site=http:%2F%2Fwww.hardmob.com.br%2Fpromocoes%2Findex1.html

Você pode editar cada uma das colunas preestabelecidas pelo site. Abaixo segue uma imagem da interface de administração do site. Nesse caso, eu estou usando a url http://www.pciconcursos.com.br/ultimas

importio

Ainda no painel de administração, é possível escolher formas de acesso a base de dados criada.

importio2

No meu caso, eu pretendo que o bot utilize uma API. Por isso eu escolhi mostrar o “Simple API Integration”.  Utilizando o import.io, eu consegui gerar a seguinte fonte de dados para ser consumida (URL encurtada): https://goo.gl/lSgWIq . Através dela, o bot saberá me informar quais são os editais de concursos mais recentes.

Por enquanto, isso é tudo!

| Criando um bot do Telegram parte 3

 


Recentemente,  o Telegram liberou para os desenvolvedores criarem Bots para usar no mensageiro. Bot é um negócio que acho bem legal, inclusive, eu já tinha feito um bot para o tweet em que usei o Google AppEngine. Ele era bem simples, basicamente um script python que usavam o cron e a biblioteca BeutifulSoup, ele postava as notícias do site do Ecomp – curso de Engenharia da Computação da UPE – no Tweet.  Enfim, resolvi me aventurar no desenvolvimento de um bot utilizando a API do Telegram. Vou usar o blog para contar minha saga na criação do meu primeiro bot nesse mensageiro. Isso pode demorar um tempo, talvez nunca ser finalizado, mas vou deixar tudo registrado!

O problema

Desde que acabei o mestrado eu venho olhando quase que diariamente os sites de concurso, na verdade eu só olho o pciconcursos. Minha procura sempre é a mesma, concursos recentes para professor universitário aqui na redondeza de Pernambuco. Meu acesso é bem simples, toda noite eu visualizo a página “Últimas” do site e procuro por concursos para PE, PB ou AL. É simples e mecânico.

A solução

Vendo a possibilidade de criar algo legal com essa API do Telegram, eu corri logo pro BotFather e criei alguns bots. Por enquanto já sou dono do @RodrigoLiraBot, @ConcursoBot, @ConcurseiroBot. Resolvi usar essa minha necessidade de visualizar novos concursos para aprender como manusear com bots do mensageiro.

Bem, já tenho um problema e uma possível solução. Fazer um bot que me informe os concursos recentes e que possa até me informar de alguma novidade que tenha passado despercebido.

Ahh, a forma de criar bots no telegram é bem simples:

  1. Adicione o @BotFather
  2. Escreva: /newbot
  3. Ele pedirá um nome para o seu bot. Escreva o nome.
  4. Se o nome estiver disponível, você terá que adicionar um username. Digite o username.
  5. Você receberá um token de acesso. Agora é só fazer a lógica de comunicação do bot!

Mais informações: https://core.telegram.org/bots/

Quer ver com o um bot funciona? Adiciona o @ImageBot e digita “/get rodrigoclira“.  Voilá. It is me!  😀

Let the game begin!

| Criando um Bot do Telegram (Part 2)

RL,

Esse período foi bastante corrido, mau postei devido a falta de tempo. Foi projeto de Banco de Dados, de Organização de Computadores, Circuitos Digitais Sequenciais, Redes de Computadores entre outros. Ah também tive meu primeiro artigo aceito – A Novel Restoration Algorithm Based on Optical Signal to Noise Ratio for Transparent Optical Network, SBrT 2011.

Abaixo seguem algumas imagens que disso tudo…

 

Plugin desenvolvido para Google Chrome

Justiça seja feita. Tenho que agradecer ao meu grupo por todos esses projetos, Anderson, Sergio, Rodrigo Morais, e Jamersson. Valeu!  Que venha Arquitetura o 7º Período!

Depois que conheci o bot do Google Talk Guru, fiquei curioso em saber como eram feitos esses bots. A princípio pensei que fosse alguma API do Google, até porque o google tem api para tudo, mas acabei descobrindo o IMified.

O IMified, como o próprio site explica, é uma plataforma escalável para criação e hospedagem de bots para IM, através de sua API é possível criar bots para Twitter, Google Talk, AIM, MSN e outros IMs. Bem, por enquanto vou parar por aqui mas nos próximos posts vou fazer um passo a passo para criar um bot para o Gtalk utilizando Python, Google App Engine e o IMified.

It’s working!

Há vários blogs e sites na web que mascaram a URL de algum download com o intuito de lhe vender ou fazer cadastrar em alguma promoção “imperdível”. No inicio isso dava para ser ignorado já que a própia URL da promoção/cadastro contia o destino desejado. Algo como:

http://www.promocaoimperdivel.com.br/?url=http://www.megaupload.com.br/uasdD

Bastava copiar e colar.

Bem, o problema é que a galera hoje em dia está se usando tática de guerra. A URL do destino não está  tão fácil como era antigamente.

Hoje:

http://www.promocaoimperdivel.com.br/?url=Ddsau/rb.moc.daolpuagem.www//:ptth

Qualquer pessoa consegue notar que o destino foi invertido,  reinverter – ou desinverter – a url é necessário. Eu mesmo sempre fazia esses passos

  1. Buscava no google “inverter, desinverter url” – mais rápido que print url[::-1].
  2. Entrava nesse site.
  3. Colava a url invertida.
  4. Clicava lá em “Inverter URL” e pronto.

Bem para mim era algo simples mas chato. Então resolvi hoje colocar a mão na massa e usar o Google App Engine para fazer o meu próprio reinvertedor. O que muda nele é que algumas dessas etapas foram retiradas. Vamos dizer que a época do ctrl+c e ctrl+v na URL voltou.

O funcionamento é  bem simples.

Por exemplo se fulano quisesse reinverter esse caminho /tp/lisarb/gro.ecaepneerg.www//:ptth

Basta digitar no browser o site da aplicação e colocar a url

http://reinverta.appspot.com/?url=/tp/lisarb/gro.ecaepneerg.www//:ptth

Ou seja, fazer uma requisição ao site, passando no argumento url o site a ser reinvertida. Logo após isso, o que vai acontecer é que fulano já seria redirecionado para a URL sem ter que fazer mais nada.

O código é muito simples, basicamente tudo acontece entra as linhas 6 e 8.

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
	def get(self):
		url = self.request.get('url')
		if url:
			self.redirect(url[::-1])
		else:
			pass # Mostrar pagina estatica

application = webapp.WSGIApplication([('/',MainPage)],debug=False)

def main():
	run_wsgi_app(application)

if __name__ == "__main__":
	main()

Fica ai a dica.

http://reinverta.appspot.com/?url=COLOCAR-URL-A-SER-INVERTIDA

Ahh, por enquanto não está criada a página estática que permitiria reinverter da forma tradicional mas em breve isso vai está funcionando.

Passei um tempinho sem postar aqui devido as últimas provas da faculdade, mas enfim estou de férias. Como de costume vou usar as férias para estudar alguns assuntos que me interessam como UML, Shell Script, e se possível implementar uma ideia de plugin para o Rhythmbox. Ahh claro, vou continuar postando.

Ainda sobre a faculdade, nesse fim de período implementei junto com Anderson Oliveira e Sergio Ribeiro um jogo da velha como projeto da cadeira de Linguagem de Programação Funcional. Além de Haskell como linguagem de programação utilizamos

wxHaskell – Como biblioteca gráfica.
Subvervion – Para controle de versão.
Google Code – Local onde hosteamos o projeto.

Assim como utilizamos o alguns projetos encontrados pela web espero que o nosso sirva de aprendizado para projetos futuros utilizando Haskell e a biblioteca wxHaskell.

| Projeto no Google code.

Rodrigo Lira