Skip to content

Instantly share code, notes, and snippets.

@CoutinhoElias
Last active December 24, 2022 03:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CoutinhoElias/fffd2ebd7234dc563fa66f6cf0775ac7 to your computer and use it in GitHub Desktop.
Save CoutinhoElias/fffd2ebd7234dc563fa66f6cf0775ac7 to your computer and use it in GitHub Desktop.
Parte 1, explicando pyrebase.
# A primeira coisa que você deve fazer é criar seu ambiente virtual.
# Quer saber como? Assista nosso segundo vídeo desta playlist.
# Ambiente de desenvolvimento VirtualEnv:
# https://www.youtube.com/watch?v=OR0gACGD0-Q
source kivy_venv/bin/activate
# Em seguida instalaremos a biblioteca Pyrebase
pip3 install pyrebase
# caminho da Pasta do código
# Para não perder tempo neste vídeo fiz os testes antes e preparei o diretório do projeto
# Assim não precisaremos apontar o arquivo firebaseConfig
cd /home/elias/Documentos/PROGRAMACAO/1-PYTHON/1-KIVY/PROJETOS/1-KIVYMD/Curso/Desk/
# Abra no seu terminal e no diretório do seu projeto o python3
# Digite:
python3
# Para que tudo funcione devemos importar nosso arquivo firebaseConfig e a lib pyrbase
# O json não tem necessidade neste vídeo.
import json # Neste vídeo não utilizaremos a biblioteca json
from pyrebaseConfig import firebaseConfig
import pyrebase
# ---------------------------------------------------------------------
# Conectando ao banco de dados Firebase.
firebase = pyrebase.initialize_app(firebaseConfig)
db = firebase.database()
# ---------------------------------------------------------------------
# Autenticando...
# Importante fazer autenticação, caso contrario só funcionará se baixar a segurança de seu banco de dados.
auth = firebase.auth()
# Criando um usuário novo
auth.create_user_with_email_and_password(email, password)
# Login
email = input('Qual é seu e-mail? ')
password = input('Qual é sua senha? ')
user = auth.sign_in_with_email_and_password(email, password)
# Verificando e-mail
auth.send_email_verification(user['idToken'])
# Reset de senha
auth.send_password_reset_email("email")
# ---------------------------------------------------------------------
'''
O que devemos enviar ao Firebase?
Bem, o Firebase trabalha com documentos e esses documentos tem a forma de json
e no python um json é muito semelhante a "Dict" dicionário.
Abaixo um exemplo de dicionário que iremos enviar no nosso projeto:
{
"Produtos" : {
"0100251633" : {
"codigos" : {
"Chamada" : "000156",
"EAN13" : "7898613211028"
},
"idproduto" : "0100251633",
"nmproduto" : "CANETINHA HIDROGRAFICA BRW 12 CORES",
"quantidade" : 0,
"stativo" : "S"
},
"01001BA476" : {
"codigos" : {
"Chamada" : "000003",
"EAN13" : "7896395100431"
},
"idproduto" : "01001BA476",
"nmproduto" : "COBERTURA ACAI 1.3KG DU PORTO",
"quantidade" : 0,
"stativo" : "S"
}
}
'''
# ---------------------------------------------------------------------
# (I) Enviando dados com arrays na lista de e-mails
# Neste caso quem define as chaves é o Firebase, como os e-mails estão dentro de uma lista
# O firebase irá criar o índice.
data1 = {"first_name":"Elias",
"age":"150",
"email":["email@gmail.com",
"email788@hotmail.com",
"my_principal@email.com"]
}
# (II) Enviando dados com suas próprias chaves na lista de e-mails
# Observe a chaves dos e-mails email1, email2 e email3 que eu defini abaixo:
# Neste caso quem define as chaves sou eu, como os e-mails estão dentro de um dicionário
# O Firebase sabe que as chaves serão os IDs.
data2 = {"first_name":"Elias",
"age":"150",
"email":{"email1":"email@gmail.com",
"email2":"email788@hotmail.com",
"email3":"my_principal@email.com"}
}
# ---------------------------------------------------------------------
# Caso precise que minhas chaves sejam criadas pelo Firebase
# Utilize quando enviar data na opção (I) acima
db.push(data1, user['idToken'])
# Caso eu deseje criar minhas próprias chaves
# Utilize quando enviar data na opção (II) acima
db.child('/').set(config, user['idToken']) # Na raiz
# Exemplos semelhantes
db.child('/Mocoto').set(data2, user['idToken']) # No nó que eu desejei
db.child('/Alterdata/Fortaleza').set(data2, user['idToken']) # No nó que eu desejei
# Utilizando o método set para adicionar um novo documento em uma "pasta" existente.
db.child("Dados").child("Person").child("Employees").child("Elias Coutinho").set(data, user['idToken'])
# ---------------------------------------------------------------------
# Enviando nosso bloco de dados
#with open('/home/elias/Downloads/inventarioshop.json', 'r') as f:
# config = json.loads(f.read())
# ---------------------------------------------------------------------
# Verificando alterações na base de dados.
# Abra dois terminais, em um use essa função, em outro altere uma informação no seu banco de dados.
# Observe o retorno que temos na função, podemos pegar este retorno para alterar/incluir/deletar/listar nossos widgets
# instantaneamente sem precisar nenhuma ação do usuario.
def stream_handler(message):
print(message["event"]) # put
print(message["path"]) # /-K7yGTTEp7O549EzTYtI
print(message["data"]) # {'title': 'Pyrebase', "body": "etc..."}
my_stream = db.child("/").stream(stream_handler, user['idToken'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment