Arquivo Histórico de Thiago Vespa
Este site foi preservado para fins históricos e de referência. Alguns conteúdos podem estar desatualizados e recursos interativos foram desativados. Visite o site atual.
Python – Thiago Galbiatti Vespa https://thiagovespa.com.br/blog Precisando é só avisar! Mon, 27 Oct 2025 01:45:08 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.8.5 https://thiagovespa.com.br/blog/wp-content/uploads/2023/05/cropped-eu3-32x32.png Python – Thiago Galbiatti Vespa https://thiagovespa.com.br/blog 32 32 Como fazer download de todas as mídias e anexos de um canal do Telegram https://thiagovespa.com.br/blog/2020/05/25/como-fazer-download-de-todas-as-midias-e-anexos-de-um-canal-do-telegram/ https://thiagovespa.com.br/blog/2020/05/25/como-fazer-download-de-todas-as-midias-e-anexos-de-um-canal-do-telegram/#comments Mon, 25 May 2020 19:17:14 +0000 https://thiagovespa.com.br/blog/?p=4448 Continue lendo Como fazer download de todas as mídias e anexos de um canal do Telegram→]]> Entrei num canal de compartilhamento de arquivo, mas não consegui pegá-lo logo no início. Por isso senti a necessidade de fazer o download de todos os arquivos que estavam nesse canal. Achei um código parecido no stackoverflow e resolvi escrever esse post.

Para poder realizar essa operação, crie um ambiente virtual python e depois execute as configurações necessárias para a biblioteca do Telethon. Após isso instale uma biblioteca que mostre o percentual em uma barra “bonitinha”:

[sourcecode language=”bash”]pip install tqdm[/sourcecode]

O tqdm irá mostrar o nosso loop de baixar arquivos de uma maneira mais elegante.

Abaixo segue o código para baixar os arquivos do canal:

[sourcecode language=”python”]from telethon import TelegramClient, events, sync from tqdm import tqdm import os api_id = <sua api_id> api_hash = ‘<sua api_hash>’ client = TelegramClient(‘umasessao’, api_id, api_hash) client.start() messages = client.get_messages(‘<canal alvo>’, limit=<numero de arquivos>) for msg in tqdm(messages): msg.download_media(file=os.path.join(‘media’, ‘<caminho>’)) [/sourcecode]

Substitua <sua api_id>, <sua api_hash>, <canal alvo>, <numero de arquivos> e <caminho> pelos valores adequados e o script irá baixar os <numero de arquivos> arquivos do <canal alvo> no caminho <caminho>.

]]>
https://thiagovespa.com.br/blog/2020/05/25/como-fazer-download-de-todas-as-midias-e-anexos-de-um-canal-do-telegram/feed/ 17
Como conversar no Telegram de forma programática https://thiagovespa.com.br/blog/2020/05/25/como-conversar-no-telegram-de-forma-programatica/ https://thiagovespa.com.br/blog/2020/05/25/como-conversar-no-telegram-de-forma-programatica/#comments Mon, 25 May 2020 18:53:57 +0000 https://thiagovespa.com.br/blog/?p=4439 Continue lendo Como conversar no Telegram de forma programática→]]> Tem interesse em fazer um chatbot ou automatizar atividades que possam te notificar pelo celular?

O Telegram expõe suas APIs de forma gratuita e com isso podemos criar programas e utilizar suas funcionalidades, basta utilizar sua criatividade. Para isso é necessário acessar o https://my.telegram.org.

Informe o seu número de telefone em formato internacional. Por exemplo, no Brasil, acrescentar +55. Então o número: (12) 34567-8901, ficaria: +5512345678901.

Você receberá uma senha pelo Telegram com o texto: Web login code. Não passe esse código para ninguém, pois com esse código, é possível até deletar a conta.
Cada vez que você tentar fazer o login ele irá gerar uma nova senha e enviar no seu Telegram.

Selecione a opção “API development tools” para criar uma aplicação.

Informe os dados da aplicação e clique em Create application. Evite colocar acentuação nos primeiros campos, tive alguns problemas por conta disso.

Você irá receber algumas informações importantes… anote-as, clique em “Save changes”.

Em nosso projeto, nós vamos utilizar uma biblioteca python para facilitar a manipulação das APIs do Telegram. Essa biblioteca chama-se Telethon. Para usá-la é necessário ter o python 3 instalado, incluindo o pip. É interessante criar um Ambiente virtual para poder trabalhar.

Para instalar a biblioteca digite o seguinte comando:

[sourcecode language=”bash”]pip3 install telethon[/sourcecode]

Crie um arquivo python com o seguinte conteúdo:

[sourcecode language=”python”]from telethon import TelegramClient, events, sync api_id = <coloque o api_id> api_hash = ‘<coloque o api_hash>’ client = TelegramClient(‘umasessao’, api_id, api_hash) client.start() client.send_message(‘thiagovespa’, ‘Olá. Estou testando o envio de mensagem do Telegram’) [/sourcecode]

Substituia a api_id e a api_hash com os valores obtidos nas etapas anteriores. E execute o arquivo python. A última linha envia uma mensagem para o usuário thiagovespa. No primeiro acesso ele irá solicitar as seu telefone, um códio recebido pelo Telegram e sua senha:

Please enter your phone (or bot token): +55<seu telegram>
Please enter the code you received: <código recebido>
Please enter your password: <senha>

Após informar, um arquivo de sessão do SQLite será criado e você pode executar utilizando a mesma sessão e aí a senha não será mais solicitada.

Para outras funções, consulte a documentação.

]]>
https://thiagovespa.com.br/blog/2020/05/25/como-conversar-no-telegram-de-forma-programatica/feed/ 1
virtualenv: Ambientes Virtuais para Python https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/ https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/#comments Mon, 25 May 2020 14:56:19 +0000 https://thiagovespa.com.br/blog/?p=4428 Continue lendo virtualenv: Ambientes Virtuais para Python→]]> Para isolar bibliotecas e configurações, o python tem um utilitário que cria ambientes virtuais. A grande vantagem da criação desses ambientes é que você pode ter versões diferentes de bibliotecas e uma dependência não afetar a outra. Assim ao instalar uma biblioteca ela não será mais feita de forma global, mas somente para esse ambiente virtual.

O jeito mais simples de fazer isso é utilizando o pip:

[sourcecode language=”bash”]sudo pip install virtualenv[/sourcecode]

Entretanto, em algumas distribuições como o Gentoo, isso normalmente oferece um risco, pois você estará instalando uma biblioteca interna que pode ocasionar conflitos com as bibliotecas de sistema. No meu caso, o Gentoo oferece já um pacote de sistema que faça isso. Se você utiliza essa distro que eu, ao invés de utilizar o comando anterior, utilize esse:

[sourcecode language=”bash”]sudo emerge -av dev-python/virtualenv[/sourcecode]

Verifique se a instalação foi bem sucedida:

[sourcecode language=”bash”]virtualenv –version[/sourcecode]

Para criar um ambiente virtual novo é bem simples. Acesse um diretório onde vai ser criado o ambiente e digite o seguinte comando substituindo nome_do_ve pelo nome do ambiente desejado:

[sourcecode language=”bash”]virtualenv nome_do_ve[/sourcecode]

Você deverá ter uma saída como essa:

Using base prefix ‘/usr’
New python3.7 executable in /development/testes/nome_do_ve/bin/python3.7
Not overwriting existing python3.7 script /development/testes/nome_do_ve/bin/python3.7 (you must use /development/testes/nome_do_ve/bin/python3.7)
Installing setuptools, pip, wheel…
done.

Para utilizar o ambiente é só ativá-lo:

[sourcecode language=”bash”]source nome_do_ve/bin/activate[/sourcecode]

Com isso, você pode instalar as dependências que você precisa e trabalhar com o python, após terminar é só desativar:

[sourcecode language=”bash”]source nome_do_ve/bin/activate[/sourcecode]

Para sair do ambiente é só digitar: deactivate. Para apagar o ambiente é só remover a pasta.

]]>
https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/feed/ 2
The Developers Conference 2014 https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/ https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/#comments Thu, 17 Jul 2014 22:26:08 +0000 http://www.thiagovespa.com.br/blog/?p=4086 Continue lendo The Developers Conference 2014→]]> Agora no começo de agosto terá um evento muito bacana no qual participo da coordenação: o The Developers Conference 2014. Esse evento eu já participo há alguns anos, muito bem organizado e com bastante conteúdo. Hoje mesmo fui com uma camiseta do evento de 2011 no trabalho.

TDC2011O TDC 2014 – São Paulo será realizado de 5 a 9 de agosto e terá 36 trilhas (TV Digital, Android, Startups, Java, Arquitetura, etc) no Anhembi Morumbi e,  como novidade, vários workshops na sede da Globalcode, inclusive de Raspberry PI e IoT com o Vinicius Senger.

A trilha de TV digital está bem bacana e está sendo coordenada por um grande amigo meu, o Carlos do Java Noroeste e por mim. Vamos ter palestras com aplicativos da Record, TQTVD, TV Aparecida, especialistas renomados na área de TV digital no Brasil e pela comunidade de desenvolvedores.

Para participar é só fazer a inscrição no site. Simultaneamente, vai ter um outro evento legal que é o TDC4Kids para crianças programarem com Scratch, Minecraft e IoT. Para ter uma ideia do porte do evento, essa é a lista de alguns patrocinadores: Amazon, Oracle, Stackoverflow, SAP, PayPal, Google, StackOverflow, JetBrains e Liferay.

A gente se fala lá!

TDC - Comunidade

]]>
https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/feed/ 1
Guia de referência Python – Parte 2 https://thiagovespa.com.br/blog/2014/05/26/guia-de-referencia-python-parte-2/ https://thiagovespa.com.br/blog/2014/05/26/guia-de-referencia-python-parte-2/#respond Mon, 26 May 2014 17:57:46 +0000 http://www.thiagovespa.com.br/blog/?p=4079 Continue lendo Guia de referência Python – Parte 2→]]> Continuando o guia de referência Python. Segue a parte 2.

Comentários

  • Só iniciar com #
    • # Esse é um comentário
    • print “Algo” # Esse é mais um comentário

Arquivos

  • Abrir: <variavel_arquivo> = open(<caminho_arquivo>) ou open(<caminho_arquivo>,<permissões) onde permissões podem ser: r (leitura), w (escrita) ou b (binário)
  • Ler linha: <variavel_str> = <variavel_arquivo>.readline()
  • Fechar: <variavel_arquivo>.close()
  • Escrita: <variavel_arquivo>.write(<varivavel_conteudo>)
  • Exemplo:
    • arquivo = open(“arquivo.txt”,”r”)
      linha = arquivo.readline()
      while linha:
      <tab>print linha
      <tab>linha = arquivo.readline()
      arquivo.close()
    • arquivoescrita = open(“escrita.txt”,”w”)
      arquivoescrita.write(“Conteúdo”)
      arquivoescrita.close()

Funções

  • As funções tem que ser declaradas antes do uso: def <nome_função>(<param1>,<param2>,<param3) : <conteudo>
    • def soma(a,b) :
      <tab>c = a+b
      <tab>return csomado = soma(3,4)

Classes

  • Declaração: class <nome_classe>: <conteudo>
  • Referência a ela própria (this no java): self
  • Construtor: def __init__(self): <conteudo>
    • class Pessoa:
      <tab>def __init__(self):
      <tab><tab>nome=”joão”
      <tab>def pula(self):
      <tab><tab>print “pulando”
  • Instanciar: <variavel> = <nome_classe>(<parametros>)
    • joao = Pessoa()
  • Invocar métodos: <variavel>.<metodo>(<parametros>)
    • joao.pula()
  • Remover objeto: del <variavel>
    • del joao

Tratamento de exceções e erros

  • Para tratar utilizar o try, except (semelhante ao try, catch do Java): try: <comandos> except <tipo_erro>, <variavel_erro>: <comandos_do_que_fazer_com_erro>
    • try:
      <tab>arquivo = open(“arquivo.txt”,”r”)
      except IOError, erro:
      <tab>print erro
  • Lançar exceções, a mensagem é opcional: raise <classe_ou_instancia> <mensagem>
    • raise NameError
    • raise Exception “Deu pau!”

Módulos

  • Para importar módulos: import <modulo> ou import <modulo1>,<modulo2>,<modulo3>
    • import re, string, sys, os
  • Módulos importantes e comuns: re (expressão regular), string (operações com string), sys (funções específicas do sistema), os (funções do sistema operacional)
  • Importar apenas uma função: from <modulo> import <função>

Aí termina o guia de referência rápida para Python. Se esqueci de algo me avisem, assim posso complementar.

 

]]>
https://thiagovespa.com.br/blog/2014/05/26/guia-de-referencia-python-parte-2/feed/ 0
Guia de referência Python – Parte 1 https://thiagovespa.com.br/blog/2014/05/25/guia-de-referencia-python-parte-1/ https://thiagovespa.com.br/blog/2014/05/25/guia-de-referencia-python-parte-1/#comments Mon, 26 May 2014 00:56:50 +0000 http://www.thiagovespa.com.br/blog/?p=4068 Continue lendo Guia de referência Python – Parte 1→]]> Para você que quer aprender rapidamente python ou já sabia, mas esqueceu, segue abaixo um guia de referência rápida.

Executar um arquivo ou comando Python

  • Interativo (Shell Python): python
  • Linha de comando: python <nome_do_arquivo>.py
  • Shell Linux: Coloque: #!/usr/bin/python no início do arquivo, transforme ele em executável e execute-o.

Tipos de dados, atribuição e operações

  • Atribuição: <nome> = valor
  • Operadores: “+” (positivo, soma ou concatenação), “-“ (negativo ou subtração), “*” (multiplicação), “**” (potência), “/” (divisão), “%” (módulo – resto da divisão), “<” (menor que), “>” (maior que), “<=” (menor ou igual a), “>=” (maior ou igual a), “==” (igual a), “!=” (diferente), “<>” (diferente – obsoleto)
  • Numérico:
    • x = 10
    • tau = 6.28
  • String (aspas simples e dupla):
    • nome = “Thiago Galbiatti Vespa”
    • trava = ‘Ninho de mafagafo’
  • Acesso à partes da String: <var_string>[<posicao>]
    • nome[3]
    • trava[0]
  • Concatenação: <var_string> + <outra_var_string>
    • nome + ” está em um ” + trava
  • Substring: <var_string>[<inicio>:<fim>]
    • nome[0:6]
  • Lista: <var_lista> = [<valor1>, <valor2>, <valor3>]
    • comidas = [‘pizza’, ‘macarrão’, ‘sushi’, ‘nachos’]
    • quantidade = [8, 200.5, 8, 10]
    • pedido = [comidas, quantidade]
    • valores = [4, 5, 6, [9, 8, 7]]
  • Concatenar Listas: <lista1> + <lista2>
    • comidas + [‘tacaca’, ‘sashimi’]
  • Tuplas (listas não dinâmicas): <tupla> = (<valor1>, <valor2>, <valor3>)
    • semana = (‘domingo’, ‘segunda’, ‘terça’, ‘quarta’, ‘quinta’, ‘sexta’, ‘sábado’)
  • Dicionários (array associativo, map): <dicionario> = { <chave1> : <valor1>, <chave2> : <valor2>, <chave3> : <valor3> }
    • idades = { “João” : 22, “Maria” : 45, “Ninguém” : “Idade não definida” }
  • Acesso à dados definido nos dicionários: <dicionario>[<chave>]
    • idades[“Maria”]

Impressão de dados

  • print <variavel>
    • print “algo”
    • print variavel

Fluxo

  • Importante: Utilizar <tab> ou <espaço> para identação e delimitador de bloco (como por exemplo, em outras linguagens: begin … end, { … }. No pythons é utilizada a identação}. Se não tiver identação, você obterá o seguinte erro: IndentationError: expected an indented block. A convenção é utilizar 4 <espaços>, mas eu uso <tab> :).
  • Loop while: while <condicao>:
    • i = 0
      while i < 10:
      <tab>print “Estou imprimindo 10 vezes”
      <tab>i = i + 1
  • Condicional if (o else e o elif são opcionais): if <condição1>: <comandos> elif <condicao2>: <comandos> else: <comandos>
    • if idade > 18:
      <tab>print “Maior de idade”
      elif idade > 0:
      <tab>print “Menor de idade”
      else:
      <tab>print “Idade invalida”
  • Loop for: for <contador> in <lista>: <comandos>
    • for comida in comidas:
      <tab>print comida
    • for nome in idades:
      <tab>print nome
      <tab>print idades[nome]
  • Função range para gerar uma sequência de números: range(<inicio>, <fim>) ou range(<inicio>, <fim>, <incremento>)
    • for par in range(0, 10, 2):
      <tab>print par
    • valor = range(0, 20)
      for v in valor:
      <tab>print v

Continua… 🙂

]]>
https://thiagovespa.com.br/blog/2014/05/25/guia-de-referencia-python-parte-1/feed/ 1
As 5 causas e o The Developers Conference 2013 – São Paulo https://thiagovespa.com.br/blog/2013/06/24/as-5-causas-e-o-the-developers-conference-2013-sao-paulo/ https://thiagovespa.com.br/blog/2013/06/24/as-5-causas-e-o-the-developers-conference-2013-sao-paulo/#comments Mon, 24 Jun 2013 12:01:22 +0000 http://www.thiagovespa.com.br/blog/?p=3956 Continue lendo As 5 causas e o The Developers Conference 2013 – São Paulo→]]> Você que pensa em melhorar o Brasil, seja protestando ou de sua própria maneira, venha para o The Developers Conference 2013 em São Paulo. Lá você poderá ter ideias de como fazer aplicações que possam ajudar a mudar o Brasil. Troque informações com alguns dos melhores profissionais do Brasil, veja como você pode melhorar a economia do país ou ter algumas ideias de como contribuir com a diminuição da corrupção. Segue algumas ideias:

The Developers Conference

Eu estarei por lá, principalmente no dia 11, onde teremos uma trilha de TV Digital. Compareça!

]]>
https://thiagovespa.com.br/blog/2013/06/24/as-5-causas-e-o-the-developers-conference-2013-sao-paulo/feed/ 11
Desconto no TDC e comida grátis!!! https://thiagovespa.com.br/blog/2011/06/29/desconto-no-tdc-e-comida-gratis/ https://thiagovespa.com.br/blog/2011/06/29/desconto-no-tdc-e-comida-gratis/#respond Wed, 29 Jun 2011 19:39:44 +0000 http://www.thiagovespa.com.br/blog/?p=1711 Continue lendo Desconto no TDC e comida grátis!!!→]]> qrcode-1711Vai ter um super evento nessa próxima semana em São Paulo: The Developers Conference!

O evento é um dos maiores do Brasil e é composto por várias trilhas atendendo todos os gostos do mundo de desenvolvimento. Esse ano ele está maior e melhor e será realizado durante o lançamento do Java 7 e contará com a presença de nomes importantes do mundo de desenvolvedores e T.I. em geral.

]]>
https://thiagovespa.com.br/blog/2011/06/29/desconto-no-tdc-e-comida-gratis/feed/ 0
Suporte SSL no Python 2.6.2 https://thiagovespa.com.br/blog/2009/10/14/suporte-ssl-no-python-2-6-2/ https://thiagovespa.com.br/blog/2009/10/14/suporte-ssl-no-python-2-6-2/#comments Wed, 14 Oct 2009 21:15:00 +0000 http://www.thiagovespa.com.br/blog/?p=8 Continue lendo Suporte SSL no Python 2.6.2→]]> Olá Pessoal.
Tive um problema que me tomou um certo tempo e gostaria de compartilhar a solução pra vocês.
Se você tem ssl na sua máquina e ao utilizar no Python recebe o seguinte erro: your version of httplib doesn’t support HTTPS, não importe quantas vezes você recompile o Python, achei a solução para os seus problemas:
Abra o source do Python e modifique o seguinte arquivo Modules/Setup.dist
Descomente as linhas:
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Compile e instale… pronto!
Teste da seguinte maneira:
# python
>>> import socket
>>> socket.ssl
ou
>>> import ssl

ou se você quer uma resposta melhorzinha:

>>> call hasattr(socket, “ssl”)

É isso aí!

]]>
https://thiagovespa.com.br/blog/2009/10/14/suporte-ssl-no-python-2-6-2/feed/ 1