Biblioteca Python para interagir com o Google Drive via links de compartilhamento
Project description
Drive Editor
Biblioteca Python para interagir com o Google Drive via links de compartilhamento
Índice
- Sobre o Projeto
- Instalação
- Pré-requisitos
- Funcionalidades Detalhadas
- Exemplos Rápidos
- Guia de Uso Completo
- Permissões e Limitações
- Solução de Problemas Comuns
- Contribuição
- Licença
Sobre o Projeto
Drive Editor é uma biblioteca Python desenvolvida para simplificar a interação com o Google Drive. Em vez de enfrentar a complexidade do OAuth, gerenciamento de tokens e configurações demoradas, você só precisa de links de compartilhamento.
A biblioteca se conecta a um backend seguro que já possui uma conta Google pré-autorizada. Você fornece o link da pasta (com permissão de editor) e a biblioteca cuida de todo o resto: upload, download, exclusão, movimentação, renomeação e agora criação de pastas e arquivos dentro de pastas compartilhadas.
Ideal para:
- Automações de backup e sincronização
- Scripts pessoais de gerenciamento de arquivos
- Integrações rápidas com o Google Drive em aplicações Python
- Qualquer projeto que precise interagir com o Drive sem complicações
Instalação
A instalação é feita via pip com um único comando:
pip install drive-editor
Nota: A única dependência externa é a biblioteca
requests, que é instalada automaticamente.
Pré-requisitos
- Python 3.6 ou superior
- Conexão com a internet (para comunicação com o backend)
- Links de compartilhamento do Google Drive com permissão de editor para as pastas/arquivos que deseja manipular
Funcionalidades Detalhadas
| Operação | Método | Descrição |
|---|---|---|
| Upload | drive.upload() |
Envia arquivos locais para pastas compartilhadas. O link da pasta é obrigatório. |
| Listagem | drive.listar() |
Lista todos os arquivos e subpastas de uma pasta. Exige o link da pasta. |
| Download | drive.download() |
Baixa arquivos individuais ou pastas inteiras (como .zip). |
| Exclusão | drive.excluir() |
Remove permanentemente arquivos ou pastas. |
| Movimentação | drive.mover() |
Move arquivos ou pastas de uma pasta para outra. |
| Renomeação | drive.renomear() |
Altera o nome de um arquivo ou pasta. |
| Criar Pasta | drive.criar_pasta() |
Cria uma nova pasta dentro de uma pasta compartilhada (link obrigatório). |
| Criar Arquivo | drive.criar_arquivo() |
Cria um arquivo (.txt, .py, .java, .lua, etc.) dentro de uma pasta compartilhada, com o conteúdo desejado. |
Importante: Os métodos
upload(),listar(),criar_pasta()ecriar_arquivo()exigem o parâmetropasta_link(oupasta_pai_link). Sem ele, a biblioteca lançará um erroValueError. Isso foi projetado intencionalmente para evitar que arquivos sejam acidentalmente enviados para a raiz da conta autorizada.
Exemplos Rápidos
Aqui estão alguns exemplos práticos para você começar rapidamente:
from drive_editor import DriveEditor
drive = DriveEditor()
# Criar uma pasta dentro de uma pasta compartilhada
pasta = drive.criar_pasta("MinhaPasta", "https://drive.google.com/drive/folders/PASTA_PAI_ID")
print("Pasta criada:", pasta['folder_link'])
# Criar um arquivo Python dentro da nova pasta
arquivo = drive.criar_arquivo(
"script.py",
"print('Olá, mundo!')",
pasta['folder_link']
)
print("Arquivo criado:", arquivo['file_link'])
# Upload de uma imagem para uma pasta compartilhada
drive.upload("foto.jpg", "https://drive.google.com/drive/folders/PASTA_ID")
# Listar arquivos de uma pasta
arquivos = drive.listar("https://drive.google.com/drive/folders/PASTA_ID")
for arq in arquivos:
tipo = "pasta" if arq.get('mimeType') == 'application/vnd.google-apps.folder' else "arquivo"
print(f"{tipo}: {arq['name']} (ID: {arq['id']})")
# Baixar um arquivo específico
drive.download("https://drive.google.com/file/d/ARQUIVO_ID/view", "meu_arquivo.pdf")
# Excluir um arquivo
drive.excluir("https://drive.google.com/file/d/ARQUIVO_ID/view")
Guia de Uso Completo
1. Inicialização
from drive_editor import DriveEditor
drive = DriveEditor()
2. Criar uma Pasta (dentro de uma pasta compartilhada)
pasta = drive.criar_pasta(
nome_pasta="Documentos",
pasta_pai_link="https://drive.google.com/drive/folders/ID_DA_PASTA_PAI"
)
print(pasta['folder_link'])
3. Criar um Arquivo
# Criar um arquivo .txt
drive.criar_arquivo(
nome_arquivo="notas.txt",
conteudo="Minhas anotações importantes",
pasta_pai_link="https://drive.google.com/drive/folders/ID_DA_PASTA"
)
# Criar um script Python
drive.criar_arquivo(
nome_arquivo="meu_script.py",
conteudo="def hello():\n print('Hello, World!')",
pasta_pai_link="https://drive.google.com/drive/folders/ID_DA_PASTA"
)
# Criar um arquivo JSON vazio
drive.criar_arquivo(
nome_arquivo="dados.json",
conteudo="{}",
pasta_pai_link="https://drive.google.com/drive/folders/ID_DA_PASTA"
)
4. Upload de Arquivos
# Upload simples
drive.upload("foto.jpg", "https://drive.google.com/drive/folders/PASTA_ID")
# Upload com substituição automática (se o arquivo já existir)
drive.upload("relatorio.docx", "https://drive.google.com/drive/folders/PASTA_ID", substituir=True)
5. Listar Arquivos de uma Pasta
arquivos = drive.listar("https://drive.google.com/drive/folders/PASTA_ID")
for arq in arquivos:
tipo = "pasta" if arq.get('mimeType') == 'application/vnd.google-apps.folder' else "arquivo"
print(f"{tipo}: {arq['name']} (ID: {arq['id']})")
6. Download
# Download de um arquivo individual
drive.download("https://drive.google.com/file/d/ARQUIVO_ID/view", "meu_arquivo.pdf")
# Download de uma pasta inteira (gerado como .zip)
drive.download("https://drive.google.com/drive/folders/PASTA_ID", "pasta.zip")
7. Excluir Arquivos ou Pastas
drive.excluir("https://drive.google.com/file/d/ARQUIVO_ID/view")
8. Mover Arquivos ou Pastas
drive.mover(
"https://drive.google.com/file/d/ARQUIVO_ID/view",
"https://drive.google.com/drive/folders/NOVA_PASTA"
)
9. Renomear Arquivos ou Pastas
resultado = drive.renomear(
"https://drive.google.com/file/d/ARQUIVO_ID/view",
"novo_nome.txt"
)
print(resultado) # Exibe o ID e o novo nome
Permissões e Limitações
A conta Google utilizada pelo backend precisa ter permissão de editor sobre os itens que você deseja modificar. Abaixo está um resumo do que é permitido:
| Ação | Permitido |
|---|---|
| Adicionar, remover e modificar arquivos dentro de pastas compartilhadas | ✔️ |
| Renomear arquivos e subpastas | ✔️ |
| Criar pastas e arquivos dentro de pastas compartilhadas | ✔️ |
| Excluir ou mover a pasta raiz compartilhada | ❌️ |
Explicação: A permissão de editor concede controle sobre o conteúdo da pasta, mas não sobre a pasta raiz em si. Para gerenciar a pasta raiz (excluí-la ou movê-la), você precisa ser o proprietário dela.
Solução de Problemas Comuns
Erro: "ValueError: É obrigatório fornecer o link da pasta compartilhada"
Causa: Você tentou fazer upload, listar, criar pasta ou arquivo sem fornecer o link da pasta.
Solução: Sempre inclua o parâmetro pasta_link ou pasta_pai_link com um link válido.
Erro: "HttpError 403 - The user does not have sufficient permissions"
Causa: A conta autorizada não tem permissão de editor no item que você está tentando modificar.
Solução: Compartilhe a pasta ou arquivo com o e-mail da conta autorizada (rexturbo702@gmail.com) com permissão de editor.
Erro: "Erro na requisição: 404 Client Error"
Causa: O link fornecido é inválido ou o backend está fora do ar.
Solução: Verifique o link e certifique-se de que o backend está acessível (acesse https://drive-backend-api.onrender.com/health para testar).
O download de pastas gera um arquivo com nome genérico
Causa: O nome original da pasta não pôde ser obtido.
Solução: Certifique-se de que a pasta existe e que você tem permissão de leitura. O backend tentará usar o nome da pasta; se falhar, o arquivo será salvo como pasta.zip.
Contribuição
Contribuições são muito bem-vindas! Siga os passos abaixo para configurar o ambiente de desenvolvimento:
# Clone o repositório
git clone https://github.com/rex41788-arch/drive-editor-.git
cd drive-editor-
# Instale em modo editável
pip install -e .
Como Contribuir
- Faça um fork do projeto.
- Crie uma branch para sua feature:
git checkout -b feature/nova-feature. - Commit suas alterações:
git commit -m 'feat: adiciona nova feature'. - Envie para o repositório:
git push origin feature/nova-feature. - Abra um Pull Request.
Relatando Problemas
Se encontrar um bug ou tiver uma sugestão, abra uma issue com:
- Descrição clara do problema
- Passos para reproduzir
- Logs ou screenshots relevantes
Licença
Distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Desenvolvido por Rex
Se este projeto foi útil para você, considere deixar uma estrela no GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file drive_editor-1.0.3.2.tar.gz.
File metadata
- Download URL: drive_editor-1.0.3.2.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
519e6901b7955bd46b4f4d47cf0a20fb2da79c6701eefe4c045f137d88771f32
|
|
| MD5 |
632d870e7a027fe53a4618f19fbde360
|
|
| BLAKE2b-256 |
a3ae552e342f5fa842b35dece987a6ebab35e284c927908345bd3bda3ff31bf7
|
File details
Details for the file drive_editor-1.0.3.2-py3-none-any.whl.
File metadata
- Download URL: drive_editor-1.0.3.2-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a049d53da35ed35ac94c0d8cf69c6086c09450b5eddfe1f365029ec71bb368db
|
|
| MD5 |
703b7ebed4c99b2f92a33b35b338be8c
|
|
| BLAKE2b-256 |
74e06c4eca3fca2a192f0f7253a21eb64d65350a716f57c40e5b133d3354d6a8
|