Skip to main content

Biblioteca Python para interagir com o Google Drive via links de compartilhamento

Project description

Drive Editor

Drive Editor

Biblioteca Python para interagir com o Google Drive via links de compartilhamento

versão licença python dependências

Feito por Rex


Índice


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() e criar_arquivo() exigem o parâmetro pasta_link (ou pasta_pai_link). Sem ele, a biblioteca lançará um erro ValueError. 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

  1. Faça um fork do projeto.
  2. Crie uma branch para sua feature: git checkout -b feature/nova-feature.
  3. Commit suas alterações: git commit -m 'feat: adiciona nova feature'.
  4. Envie para o repositório: git push origin feature/nova-feature.
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drive_editor-1.0.3.2.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drive_editor-1.0.3.2-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

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

Hashes for drive_editor-1.0.3.2.tar.gz
Algorithm Hash digest
SHA256 519e6901b7955bd46b4f4d47cf0a20fb2da79c6701eefe4c045f137d88771f32
MD5 632d870e7a027fe53a4618f19fbde360
BLAKE2b-256 a3ae552e342f5fa842b35dece987a6ebab35e284c927908345bd3bda3ff31bf7

See more details on using hashes here.

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

Hashes for drive_editor-1.0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a049d53da35ed35ac94c0d8cf69c6086c09450b5eddfe1f365029ec71bb368db
MD5 703b7ebed4c99b2f92a33b35b338be8c
BLAKE2b-256 74e06c4eca3fca2a192f0f7253a21eb64d65350a716f57c40e5b133d3354d6a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page