o que eu quero é por exemplo juntar isso daqui esse Python DF iG C para cá e muito bem a gente tem ess Nossa que legal dashboard Data Frame head Ah então Esse é aquele meu bloco de Python e eu posso colocar ele aqui cara isso aqui é muito massa ó eu posso colocar o Database connections meus gráficos aqui eu tô ordenando eles para fazer uma Grid bonitinha cara que legal esse vídeo é sobre a ferramenta chamada briefer ela é uma ferramenta que eu já falei antes no canal que eu pessoalmente Tenho usado há vários
meses é uma ferramenta excelente para visualização de dados em Python para quem lida com scripts em Python em geral e na minha visão é um concorrente direto ao Jupiter notebook a ferramenta foi criada por dois brasileiros eu conheço os dois brasileiros pessoalmente e embora eles não tenham controle sobre o que eu vou falar e sobre como eu vou fazer esse vídeo você precisa saber que sim Esse vídeo é patrocinado é o primeiro vídeo patrocinado do canal a briefer tá me pagando para falar deles mas eles não estão me pagando para falar nada em específico dele
a ferramenta é gratuita Ela acabou de virar open source eu vou fazer uma demonstração de como mais ou menos ela funciona e você pode usar você pode não usar você pode testar é de graça é open sorce Ninguém tá te vendendo nada nesse vídeo por que que essa ferramenta foi criada Qual que é o intuito dela só dar uma olhada rapidinho aqui depois a gente vê na prática Mas vamos dar uma olhada no blog Qual que é a ideia aqui por trás do briefer making notebooks better melhorando os notebooks e eu uso bastante Notebooks em
Python texto aqui do Lucas a gente não não vai ler tudo a gente vai só dar uma passada rápida o primeiro problema que eles identificaram é que fica tudo muito bagunçado muito rápido quando você usa notebook e isso aí eu concordo os meus sempre ficam uma bagunça absurdamente grande em uma manhã você tem 10 blocos no final do dia você tem 100 92 só que apenas seis deles são para serem vistos para outras pessoas eí você fica fazendo um J jitsu com os dados isso realmente acontece bastante como os que Eles resolveram esse problema primeiro
você pode agrupar os seus blocos em Abas Então a gente vai testar isso você pode ter uma aba api Call por exemplo para buscar os dados uma aba Database cleaning para limpar os dados e uma aba visualization para plotar Cara isso é muito bom tá porque eu sempre tenho o problema que eu tenho lá em cima um monte de métodos para chamar as APS para enfim tratar os dados whatever e lá embaixo do meu notebook 150 blocos abaixo eu tenho de fato visualização dos dados aí eu preciso tirar print desses dados para eu mandar PR
as empresas com as quais eu tô trabalhando quando eu faço consultoria então é o meu método não é muito bom né Depois disso eles criaram o conceito de publicar em um caderno e adicionaram botões para as pessoas ocultarem determinados blocos da versão publicada muito interessante Outra vantagem que eu consigo ver aqui né é que Júpiter notebooks Pelo menos eu rodo eles local Eu nunca fui atrás tenho uma solução Cloud para fazer isso mas é bacana que ISO que a gente consegue usar de forma Claro é open source você consegue baixar e usar tudo local só
que você também consegue usar de uma forma meio Cloud Native E aí você não precisa ficar compartilhando documentos assim né eles estão estão lá na Cloud você consegue permitir que outras pessoas acessem por fim percebemos que a rolagem vertical Nem sempre é a melhor maneira de Navegar ou notebook não sei briefer vocês vão ter que me vender nessa ideia eu acho rolagem vertical bem legal mas vamos ver elas pram muito espaço na tela dificulta a visualização do quadro geral do que está acontecendo corrigimos isso adicionando uma visualização de painel com uma grag na qual você
pode arrastar e soltar blocos Ah eu nunca usei para esse caso vamos usar para ver depois como é que fica mas cara isso aqui pode ser um bi poderoso Hoje em dia a maioria dos Notebooks publicados usa visualização do painel ao invés de rolagem vertical e tradicional Que legal cara nunca tinha usado assim difícil de encontrar explorar a segunda coisa que eu não gosto em notebooks é que eles vão pro kit Hub e depois morrem porque ninguém abre novamente é sou culpado disso eu queria que os cadernos fossem artefatos vivos que você pudesse encontrar abrir
e explorar incluindo pessoas não técnicas para isso resolvemos criar árvores semelhantes ao notion Pô eu falei que na minha visão eu achava que isso aqui era um concorrente direto ao Júpiter notebook né porque era assim que eu usava Mas vendo isso aqui dá para ver que pode se tornar muito mais e tipo sendo open source você nem precisa usar a plataforma deles para para conseguir usar essas coisas você pode fazer tudo local você pode implementar no seu próprio sistema é bem bacana muito atrito para consultar os bancos de dados cara geralmente o que eu fazia
eu acessava um banco eu dava um dump na nas informações que eu precisava tipo com scriptz inho de Python mesmo e jogava num Excel Claro depois que eu fazer um que eu acessar os dados fizer um tratamento meio meio basicão assim jogar no Excel aí eu consigo puxar para um dataframe muito facilmente e desse dataframe eu consigo visualizar os dados a galera de dados deve estar me odiando agora mas assim era assim que eu fazia a minha gambiarra e a briefer corrigiu isso adicionando um Block query que permite escrever SQL e ver os resultados em
uma tabela também sab sabemos que as consultas são inúteis a menos que você consiga controlar os dados Então os resultados de cada consulta são automaticamente convertidos em um dataframe do pandas Você viu como eles tipo fizeram o que eu fazia só que sem ter o intermediário do Excel bacana vamos est testando isso daqui também então fechamos o círculo e permitimos que as pessoas escrevessem consultas SQL em seus data frames pandas fizemos isso porque às vezes o estilo declarativo da SQL torna uma escolha melhor do que o Python é é torna não sei pode ser eu
vou confiar neles mas eu não vou usar isso aqui não tá eu gosto mais do Data Frame do que de SQL Mas se você tiver mais prática com SQL é também uma forma interessante eu não vou usar não col colaborativo a quarta coisa que eu não gosto de notebooks é que eu não posso editá-los ao mesmo tempo que outra pessoa é isso que é um saco então a solução deles é que sempre que tu cria um bloco é essa informação é essencialmente compartilhada em tempo real né a gente não precisa entrar aqui no no técnico
do que que é o ijs quinta coisa que eu não gosto em notebooks cara o Lucas realmente não gosta de notebooks né ele conseguiu surgir com lista enorme mas tudo que ele falou tá fazendo bastante sentido é que eles fic obsel E você tem que executar manualmente para obter os resultados mais recentes é tem um botão de Run out né lá no topo que geralmente é o que eu faço você abre o notebook de novo clica ali em Run out ele vai rodar todas as células Ah e eles corrigiram isso tendo um botão de agendar
que permite que você Execute um notebook em horário específico como toda segunda-feira às 9 da manhã Cara isso aqui é muito legal porque ao invés de você poder você ter que entrar no notebook e clicar ali em Run All para ele e lá embaixo ele gerar os gráficos eh Já tá pronto já tá gerado o o link do do do negócio da do notebook é o mesmo e os dados vão est atualizados a partir do do Schedule que você setou ele cara muito bacana o outra coisa que não é interativo né É eles corrigiram isso
adicionando alguns Campos de texto nativos e blocos suspensos que permitem que você solicite a entrada do usuário ah nossa pode crer você tem um campinho aqui que você consegue setar a variável Person name e você consegue printar o personame interessante no meu workflow pessoalmente não tem muita utilidade mas é bacana sabemos que às vezes os usuários querem que as entradas sejam dinâmicas e querem usar os valores dos bancos de dados como opção em um menu suspenso então fizemos isso também ah ficou bem mais legal atrito para plotar os gráficos a última coisa que o Lucas
aqui não gosta é que plotar gráficos requer mais código do que deveria sempre que for preciso um gráfico de linhas tem que escrever algumas linhas de código em py n usando match plot Lib ou plotly ou alguma das outras dezenas de libs para gerar gráficos sem fazer tudo manualmente caso contrário o gráfico parece ter sido feito no Excel é o que eu tinha eram umas configurações padrões assim do Mat plot Lib aí você pode só tipo copiar e colar essa configuração padrão Ou você pode criar um método com a configuração que você quer embutida nesse
método e aí tipo você só chama o método para gerar o gráfico baseado no naqueles parâmetros pré-configurados aí não parece tanto Excel assim mas ao invés da da solução manual de ficar codando funções e setando parâmetros eles adicionaram um bloco de visualização que permite que as pessoas plotem os dados clicando em botões Tá bom me convenceu Vamos testar se isso aqui é verdade eu tenho muito dificuldade em confiar nas pessoas Então é óbvio que a gente vai testar tudo que a gente conseguir aqui primeira coisa que eu fiz a parte que eu tô mais interessado
é eu criei um banco de dados aqui na raway e esse banco de dados contém o dataset do Titanic é um dos datasets mais comuns é para pessoas que estão treinando data pessoas que estão treinando análise de dados principalmente com python a galera usa muito esse dataset e eu coloquei ele num post aqui e enfim no momento que esse vídeo sube no ar eu vou derrubar isso aqui então não tem nenhum problema eu compartilhar as chaves aqui vamos ver duas formas de conectar vamos ver como que a gente conectaria no Júpiter notebook e vamos ver
como que a gente conecta no briefer porque né eles disseram que eles têm menos atrito para consultar um banco de dados vamos ver se é verdade primeira coisa que a gente vai fazer aqui no jupter notebook é importar esse psych PG do e importar o SQL pra gente poder fazer Nossa query isso aqui só funciona Porque a gente já baixou isso anteriormente né se a gente não tivesse a gente teria que dar um PIP install aqui e instalar isso no no Kernel aqui aqui embaixo Vamos jogar a nossa Database configuration temos aqui o DB name
user password host port de novo se você testar com esses dados não vai funcionar Porque eu só Criei um banco de dados temporário raway agora a gente precisa criar uma Connection Connection igual psyc pg2 P Connect passando as Database configs embaixo a gente precisa de um cursor que é o Connection P cursor Ah eu vou só pedir pro char tpt gerar que essa parte aqui é muito chata tá eu vou só pedir pro chato chpt gerar por causa essa parte de conectar com banco muito chato vamos copiar um monte de código aqui sem testar e
vamos rodar para ver se deu tudo certo não não deu tudo certo que eu tinha escrito errado vamos rodar tá conectando printou todas as rows printou todas as rows a gente tem aqui então a nossa informa ação toda agora o que que eu vou fazer eu vou pedir pro chat jpt passar disso aqui para um Data Frame que eu não lembro mais como fazer isso faz um tempinho que eu não faço esse tipo de coisa com banco de dados porque como eu falei eu usava Excel Por que que a gente tá usando banco de dados
Então porque isso é muito mais próximo com o que você vai ver na vida real né a sua empresa vai ter os dados num banco de dados não num Excel colar o que o chat GPT gerou para mim quando eu pedi para ele passar tudo isso para um Data Frame Ah eu não importei o pandas Então vamos de novo importe pandas SPD config rodando Ah muito bom Parece que deu certo certo vamos testar dataframe ponhe deu certo Deu certo temos aqui os nossos dados eles estão corretinho os dados do Titanic muito bacana Será que a
Brief melhorou isso daqui vamos testar Database name raway user postgress password essa aberração aqui port 579 43 post aqui display name Titanic ah preciso de mais alguma coisa Acho que não seio tá validando os dados vamos dar um segundinho para eles conectarem no banco de dados e ver que mágica que eles vão fazer aqui é eu acabei cometendo um erro foi erro meu não da plataforma não sei o que que eu preenchi errado aqui mas a gente estava tentando que tá no no lugar errado é eu errei alguma informação enfim eu criei o Titanic aqui
e agora o nosso data source tá de fato importado o nosso Titanic und temos aqui o nosso documento untitled Vamos tentar fazer uma query nele query Olha só eu posso fazer bom tá aqui sk né select asterisco from só para irritar o pessoal deel eu vou botar uma capitalização aleatória tá Ah rodar Sec query muito bacana Nossa query tá aqui agora Como que eu faço para jogar isso aqui num num coisa mesmo ã Order items é o nome da variável que vai ali em cima qu um query 1 é o quê query um Olha só
query 1.he é meu Data Frame é o meu Data Frame né é o meu Data Frame Então vamos dar um Data Frame igual query 1 adcionar um bloco Data Frame a gente não vai ter tempo para testar todas as coisas que a brer prometeu mas eu coloquei aqui as que eu acho mais importantes que mais me interessaram que são acesso melhor a banco de dados organização em tabs melhor pros gráficos e aquele Schedule lá para atualizar os dados então bom Aqui é a forma que a gente faz o acesso ao banco de dados no Jupiter
notebook e isso aqui é a carinha do que a gente fez no briefer é eu vou ter que concordar com eles eu acho que isso daqui é um ponto para briefer que o acesso no banco de dados de fato é melhor concordamos próxima coisa que a gente vai ver organização em t adonei mais um teste né Eu quero testar esse dashboard aqui depois mas primeiro vamos ver a nossa organização em Tab bom isso vai ser um pouco mais fácil de testar porque a gente não tem muito como fazer isso no no Júpiter notebook não tem
como agrupar os blocos em em tabs não simplesmente não dá para agrupar eu posso criar uma um notebook novo mas aí né não tem nada a ver o que eu quero é por exemplo juntar isso daqui esse Python DF iG qu para cá e muito bem a gente tem as nossa que legal a gente tem uma Tab JSL que jogou os dados aqui em qu E se eu mudar isso aquii para dataframe por exemplo e eu rodar eu tenho que meu meu dado foi aqui e aqui eu não sei d.he rodar é bacana Ah tá
organizado em tabs aqui eu posso mudar o nome delas né eu posso colocar aqui é Database Connection aqui Data Frame head funciona muito bem eu posso criar tabs novos Inclusive eu posso Nossa fazer uma visualização dessa coisa data source Data Frame É sério Caraca que loucura que massa eu eu juro que eu nunca tinha usado essa funcionalidade tá eu usei pouco a briefer para data análises eu usei mais para para organizar uns scripts em Python mesmo que eu fazia muitas e chamadas de api e documentação de de api em si enfim eu ficava fazendo stress
testing em apis não é bem stress testing é um é um teste de funcionalidade mesmo de integridade mas isso aqui é bacana ó pode ter tudo em um bloquinho bonitinho e muito bom a gente não vai testar essa visualização depois né não vou considerar isso aqui é visualização mas acho que ponto para briefer orização em tabs Show Ah que que a gente quer testar antes melhor para gráficos pode ser vamos ver primeiro os gráficos né a gente já tem o nosso Data Frame temos o nosso Data Frame aqui também no Júpiter né Vamos ã pegar
um Mat plot Lib para tentar fazer um gráfico bonito aqui faz muito tempo que eu não faço isso então eu vou sim pedir ajuda pro chat GPT para ele gerar nossos gráficos Mas enfim isso aqui é um teste a gente não tá testando a minha habilidade em gerar gráfico testando as ferramentas tá não me julguem primeira coisa vamos importar aqui masb não tá importado perdão não é que não tá importado que ele não existe nessa nessa versão aqui do Python é será que eu tô usando a padrão Acho que tô usando padrão talvez tá vamos
ver se agora dá para importar agora dá para importar pera isso eu não tinha M Plus Lib M Plus libs building the front Cash me take a moment Vamos só ignorar isso daí acho que vai pá Tá então não vou só ignorar realmente esperar isso aqui vamos deletar esse blo que ficou feio enquanto a gente espera isso aqui acontecer se jeito o que que tá acontecendo vamos ver de gerar o nosso gráfico aqui ã AD block visualization Data Frame é é a gente vai querer pegar um Survival count quanto sobreviveram por classe né o Data
Frame do vamos cader nossos dados do Titanic ele tem aqui um zero e um para sobreviveu a gente consegue ver quem sobreviveu e a gente tem também a classe Cadê a classe aqui ó é Passenger classe eu não lembro qual que é a melhor se é a terceira é a melhor classe não né primeira classe é melhor gente eu compro ticket mais barato não fico me importando se qual classe que é vamos ver o que que é legal PR visualizar a classe eu acho que uns stex colum ia ser legal pra gente conseguir ver o
zero e um aí o xx é survived Ó que legal ele tem o número de pessoas que survived zero surviv zero lembrando é É zero né Survive um é um Ah muito bacana como é que a gente separa isso aggregate some muito bom é um group bike que eu quero fazer tá ah tá aqui são são as labels é x Label é ah ele tá Grando por Fair não não não eu quero pro calma o meu x eu quero que seja classe e aqui eu quero que seja survived n Isso aqui vai vai somar de
um Então temos aqui o código que o chat PT gerou ainda tá dando algum erro Deve ser porque surviv é assim né talvez P Class assim aham ah Survival rate bacana isso aqui nos deu um Survival rate agora Como que eu vou converter esse gráfico aqui que de fato Parece que foi gerado no Excel para um gráfico da briefer eu tenho que entender como é que eu traduzo essas coisas né porque de novo não fi eu que fiz isso aqui quem fez isso aqui é o GPT agora a gente entender como é que a gente
vai fazer esse daqui aqui é ah ó que legal aqui a gente tem as classes eu tenho minhas labels deixa eu labels não não pris labels count talvez eu agregar count color by survived ó bacana a gente já conseguiu uma legenda aqui a gente conseguiu e o zero esse branquinho né então esse número de mortes o azul é o Vivo a gente consegue ver que na primeira classe a proporção de pessoas que sobreviveu é muito maior do que na terceira classe na terceira Classe A maioria morreu o gráfico ficou um pouco diferente desse daqui e
isso sim convenhamos provavelmente es que is minha tá faz anos que eu não faço nada nesse sentido mas mas vamos vamos aqui ser ser justo também né Se eu pegar o meu Python eu dou aqui o meu Import tá importado eu rodo aqui esse mesmo código a gente vai ter o mesmo gráfico tá ele a funcionalidade igual a do Jupiter notebook ela existe o que a gente vai ter é também essa funcionalidade a mais de visualização que eu pessoalmente não consegui usar muito bem porque eu pessoalmente não lido com dados eh a gente conseguiu gerar
um gráfico bonito com o mínimo de esforço sem eu nem entender direito que eu tava fazendo né só o que eu escolhi foi que o X aess precisa ser a classe e o y aess precisa ser sobreviveu ou não e agregar por count eh não não teve mais nada e e colorir o negócio por survived né Vamos testar então um gráfico um pouco diferente desse e a gente nem precisa mais entrar no Júpiter né porque o resultado que a gente vai ter usando é o nosso notebook da briefer aqui é exatamente o mesmo que a
gente vai ter usando o mesmo código aqui no notebook então a gente não não precisa muito ficar comparando um com o outro ó aqui deu problema de age porque o chat jpt tá mentindo as coisas para mim né age deve ser minúsculo provavelmente aí é minúsculo e bom aqui a gente tem um gráfico gerado pelo GPT no plotly Vamos tentar gerar um gráfico parecido aqui usando o nosso Data Frame Que tipo de gráfico eu quero é um gráfico de barra é um histograma é um histograma isso tá o nosso xaxis é o qu o nosso
X é age o nosso Y Axis não tem Ah olha só moral da história temos as duas formas de fazer as coisas a gente tem a forma manual entre aspas né usando match plot li para gerar o gráfico ou então a gente pode abrir aqui o nosso visualization e gerar o gráfico a partir daqui usando essa graphical user interface que a Brief disponibiliza pra gente então sim como a gente tem a possibilidade de gerar tanto é manualmente usando o código Python quanto com essa Graphic user interface aqui check eles entregaram Na promessa que é melhor
para gráfic vamos analisar então o Schedule para schedular as coisas né para rodar isso daqui novamente eu fiz o seguinte eu deletei todas as entries do Titanic em que aid era nul então foram deletadas 177 entries no banco de dados e isso para refletir um cenário em que os nossos dados mudam então eu vou schedular isso daqui para a cada hora ficar atualizando aqui o meu notebook então vamos lá eu vou adicionar também uma notificação eu vou pedir para ela notificar por e-mail pra gente vê o e-mail que a gente recebe depois coloquei o meu
e-mail ali já dei um save Schedule run ah qual minuto né ah minuto 30 pode ser Schedule Run vamos esperar rodar E agora o que a gente precisa fazer no Jupiter notebook para que essa atualização seja refletida é basicamente isso aqui é um restart Kernel e rodar todos as células manualmente novamente ou então você faz algum script alguma coisa mas eu nunca fiz isso assim de modo de modo automático Geralmente eu entrava mesmo no notebook e clicava ali para rodar tudo de novo do zero manualmente e aqui claro vai vai refletir né vai tá é
o o nosso dataset tá com os dados atualizados vamos esperar um minutinho pra nossa Schedule Run ser trigada muito bem passou o nosso minuto a gente pode voltar aqui no Titanic e a gente pode olhar que aqui embaixo o nul aquele nul que tinha anteriormente né antes do zero sumiu não tem mais Então os dados foram de fato atualizados E olha que legal o e-mail que eu recebi recebi um e-mail da briefer here is your page Titanic e eu recebi um PDF contendo o meu Júpiter notebook de uma forma bonitinha né o meu notebook tá
bem legal aqui tá os dados e tal então tô super confortável em falar que essa Schedule aqui funciona funciona bem Eu testei ela de fato manda e-mail recebi o e-mail recebi o e-mail no minuto inclusive que que rodou de novo né E ela puxou de novo os dados atualizados do banco de dados é isso foi bem legal porque né eu eu não tinha certeza que isso ia acontecer que a gente setou o banco de dados aqui no data source eu não não sei exatamente como é que funciona por debaixo dos panos mas sim os dados
puxados foram atualizados confirmamos aqui o Schedule a última coisa que a gente quer ver a última coisa que eu tenho interesse é esse tal de dashboard que eu nunca vi nunca utilizei e o dashboard tá aqui né um GIF deles usando eles TM aqui o notebook você clica ali em cima em dashboard estamos aqui em notebook vamos clicar em dashboard e a gente tem uma Grid com os nossos blocos e os nossos blocos blocos são esses blocos tem a Database Connection visualization dashboard Data Frame head Ah então Esse é aquele meu bloco de Python e
eu posso colocar ele aqui cara isso aqui é muito massa ó posso colocar Database connections meus gráficos aqui eu tô ordenando eles para fazer uma Grid bonitinha cara que legal e isso aliado com com o Schedule né ele vai ficar atualizando esses dados e a gente consegue ter um bi super inteligente tipo um bagulho muito bom para dashboards por exemplo se você tem uma uma tabela de vendas Você poderia colocar isso daqui para ir atualizando todo dia e todo dia você aia até o gráfico de vendas atualizado e você pode ter isso aí publicado para
as outras pessoas da empresa terem acesso também conseguirem ver o dashboard é aqui a formatação ficou um pouco diferente do que eu tava brincando talvez porque eu tô usando um sizing um tamanho estranho no no Browser se eu aumentar aqui é ah sendo bem bem sincero eu preciso admitir que ficou um pouquinho diferente aqui eu eu coloquei os cubinhos em em certa ordem quando eu clico em publish ah não agora ficou Tinho tá era era um problema de de sizing mesmo CSS difícil né gente mentira não sei se não sei nem que tecnologia que eles
estão usando para fazer isso daqui mas cara super bacana isso aqui também vai ser atualizado quando os dados forem atualizados né E quando a Schedule rodar então absurdo funcionamento Fantástico tô cara tô muito surpreso com aqui eu juro não tinha brincado com esse com esse dashboard ainda e isso daqui é um bi poderosíssimo assim é é a junção de Jupiter notebook com Power bi usando Python de uma maneira que que quem trabalha com dados vai conseguir montar um dashboard muito bacana e de graça né tipo tudo isso aqui que eu fiz eu tô no Free
plan eu tô de graça se quiser compartilhar isso daqu mandar esse link para para alguém para qualquer pessoa tá tá valendo que é incrível é dado tudo isso eu acho que isso daqui foi foi um bagulho incrível Foi muito massa ter testado todas as funcionalidades que eles escreveram aqui no texto né texto making notebooks better Vamos então Ligar para esse carinha aqui vamos ligar pro Lucas e ver entender qual que foi a ideia por trás Por que que eles estão transformando isso daqui em open source qualquer pessoa vai poder copiar isso daqui e como é
que eles planejam ganhar dinheiro com isso né já que pô eu fiz tudo isso daqui de graça não paguei nada para ninguém na verdade como eu disse né eles estão patrocinando o vídeo quem tá pagando são eles então vamos ligar pro Lucas eu ia ligar pro Lucas só que eu tô editando esse vídeo agora esse vídeo ficou muito longo então a ligação com o Lucas vai ser no próximo vídeo próximo vídeo a gente vai est falando com o fundador da briefer e eu queria também atualizar vocês que aqui tá o open source deles github.com briefer
Cloud de briefer e esse aqui é o repositório para você rodar o código é só isto aqui PIP install briefer briefer é assim fácil Abre ali o Git Hub dá uma olhada no no repositório dá uma estrela para eles porque tá é incrível esse software é impressionante demais