pyzbrowser 1.0.3
Library to create a file browser interface in browser using Python.
License: MIT
Keywords: pyzbrowser

# 🐍 [PyMyFileBrowser](https://github.com/ZdekPyPi/PyzBrowser)

[![Python Version](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Flask](https://img.shields.io/badge/flask-3.0.3-red.svg)](https://flask.palletsprojects.com/)

**[PyMyFileBrowser](https://github.com/ZdekPyPi/PyzBrowser)** é um gerenciador de arquivos web poderoso e intuitivo desenvolvido em Python com Flask. Navegue, gerencie e visualize seus arquivos através de uma interface web moderna e responsiva, acessível de qualquer navegador.

## ✨ Características Principais

### 🗂️ Gerenciamento de Arquivos
- **Navegação Intuitiva**: Interface limpa inspirada em gerenciadores de arquivos modernos
- **Upload de Arquivos**: Suporte para upload único e múltiplo, incluindo pastas completas (drag & drop)
- **Download Inteligente**: Download individual ou múltiplo com compressão automática em ZIP
- **Criação de Pastas**: Crie novas pastas diretamente pela interface
- **Exclusão Segura**: Remova arquivos e pastas com confirmação

### 🔍 Busca e Organização
- **Busca Local**: Filtro rápido por nome na pasta atual
- **Busca Global**: Busca avançada recursiva em todas as pastas configuradas
- **Ordenação Flexível**: Ordene por nome, data ou tipo de arquivo
- **Ícones Inteligentes**: Identificação visual automática por tipo de arquivo (imagens, vídeos, código, documentos, etc.)

### 👁️ Visualização de Arquivos
Suporte nativo para visualização de diversos formatos:
- **Imagens**: JPG, PNG, GIF, BMP, SVG, WebP, ICO
- **Vídeos**: MP4, WebM, OGG
- **Áudio**: MP3, WAV, OGG, M4A
- **Documentos**: PDF
- **Código**: Python, JavaScript, HTML, CSS, JSON, XML, C/C++, Java e mais
- **Texto**: TXT, MD, LOG, INI

### 🚀 Recursos Avançados
- **Múltiplas Raízes**: Configure várias pastas raiz independentes via variável de ambiente
- **Compressão Streaming**: Download de pastas grandes com streaming ZIP (sem consumir memória)
- **Seleção Múltipla**: Selecione e baixe múltiplos arquivos/pastas de uma vez
- **Data de Criação**: Visualize quando cada arquivo foi criado
- **Responsivo**: Interface adaptável para desktop, tablet e mobile
- **Hostname Display**: Identifique facilmente qual servidor você está acessando

## 📋 Requisitos

- Python 3.6 ou superior
- Flask 3.0.3
- zipstream-new 1.1.8

## 📦 Instalação

### Instalação via pip (Recomendado)

```bash
pip install pyzbrowser
```

### Instalação para Desenvolvimento

```bash
# Clone o repositório
git https://github.com/ZdekPyPi/PyzBrowser.git
cd pymyfilebrowser

# Instale em modo desenvolvimento
pip install -e .
```

### Instalação Manual

```bash
# Clone o repositório
git clone https://github.com/ZdekPyPi/PyzBrowser.git
cd pymyfilebrowser

# Instale as dependências
pip install -r requirements.txt
```

## ⚙️ Configuração

### Pastas Raiz

Por padrão, o PyMyFileBrowser usa a pasta **Downloads** do usuário atual. Para configurar pastas personalizadas, defina a variável de ambiente `PYBROWSER_ROOTS`:

#### Windows (PowerShell)
```powershell
$env:PYBROWSER_ROOTS='C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos'
```

#### Windows (CMD)
```cmd
set PYBROWSER_ROOTS=C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos
```

#### Linux/macOS
```bash
export PYBROWSER_ROOTS='/home/usuario/Downloads,/home/usuario/Documents,/var/www/projetos'
```

#### Formato da Variável

A variável `PYBROWSER_ROOTS` deve conter **caminhos separados por vírgula**. O nome de cada pasta será extraído automaticamente do caminho.

**Exemplos:**

Windows:
```
PYBROWSER_ROOTS=C:\Users\John\Downloads,C:\Users\John\Documents,D:\Development\Projects
```

Linux/macOS:
```
PYBROWSER_ROOTS=/home/john/Downloads,/home/john/Documents,/var/www/projects
```


#### Uso com Argumento -r

Você também pode especificar uma pasta diretamente ao executar:

```bash
python -m pymyfilebrowser -r C:\MinhaPasta
```

ou

```bash
pymyfilebrowser -r /home/usuario/meus-arquivos
```

## 🚀 Uso

### Executar como Módulo Python (Recomendado)

```bash
python -m pymyfilebrowser
```

### Executar via Comando Instalado

```bash
pymyfilebrowser
```

### Executar Diretamente (Desenvolvimento)

```bash
python run.py
```

Após iniciar, acesse em seu navegador:
```
http://localhost:5000
```

Para acessar de outros dispositivos na rede:
```
http://[IP-DO-SEU-PC]:5000
```

## 🛠️ Desenvolvimento

#

## 🔒 Segurança

- **Path Traversal Protection**: O sistema valida todos os caminhos para evitar acesso fora das pastas raiz
- **Filename Sanitization**: Nomes de arquivos são sanitizados usando `secure_filename()` do Werkzeug
- **Input Validation**: Validação em todas as rotas POST
- **⚠️ Aviso**: Este sistema foi projetado para uso em redes locais confiáveis. **NÃO exponha diretamente à internet sem autenticação adequada**

## 🤝 Contribuindo

Contribuições são bem-vindas! Para contribuir:

1. Faça um Fork do projeto
2. Crie uma branch para sua feature (`git checkout -b feature/NovaFeature`)
3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)
4. Push para a branch (`git push origin feature/NovaFeature`)
5. Abra um Pull Request

## 📝 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.

## 🐛 Reportar Bugs

Encontrou um bug? Por favor, abra uma [issue](https://github.com/ZdekPyPi/PyzBrowser/issues) com:
- Descrição do problema
- Passos para reproduzir
- Comportamento esperado vs atual
- Screenshots (se aplicável)
- Informações do sistema (OS, versão do Python)

## 💡 Roadmap

- [ ] Autenticação de usuários
- [ ] Suporte a temas (claro/escuro)
- [ ] Editor de texto integrado
- [ ] Visualização de mais formatos (Office, etc.)
- [ ] Compartilhamento de links temporários
- [ ] Upload com barra de progresso
- [ ] Preview de thumbnails para imagens
- [ ] Drag & drop para reorganizar arquivos

## 📧 Contato

Para questões, sugestões ou feedback, entre em contato através das issues do GitHub.

---

**Desenvolvido com ❤️ e 🐍 Python**

Change Log
==========

1.0.0 (2026-02-02)
------------------
- First Release