pyzbrowser 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ Change Log
2
+ ==========
3
+
4
+ 1.0.0 (2026-02-02)
5
+ ------------------
6
+ - First Release
@@ -0,0 +1,4 @@
1
+ global-include *.txt *.py *.md
2
+ recursive-include pyMyFileBrowser/templates *.html
3
+ recursive-include pyMyFileBrowser/static *
4
+ recursive-exclude venv *
@@ -0,0 +1,313 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyzbrowser
3
+ Version: 1.0.0
4
+ Summary: Library to create a file browser interface in browser using Python.
5
+ Home-page:
6
+ Author:
7
+ Author-email:
8
+ License: MIT
9
+ Keywords: pyzbrowser
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Intended Audience :: Education
12
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 10
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: Flask==3.0.3
17
+ Requires-Dist: zipstream-new==1.1.8
18
+ Dynamic: classifier
19
+ Dynamic: description
20
+ Dynamic: description-content-type
21
+ Dynamic: keywords
22
+ Dynamic: license
23
+ Dynamic: requires-dist
24
+ Dynamic: summary
25
+
26
+ # 🐍 PyMyFileBrowser
27
+
28
+ [![Python Version](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
29
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
30
+ [![Flask](https://img.shields.io/badge/flask-3.0.3-red.svg)](https://flask.palletsprojects.com/)
31
+
32
+ **PyMyFileBrowser** é 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.
33
+
34
+ ## ✨ Características Principais
35
+
36
+ ### 🗂️ Gerenciamento de Arquivos
37
+ - **Navegação Intuitiva**: Interface limpa inspirada em gerenciadores de arquivos modernos
38
+ - **Upload de Arquivos**: Suporte para upload único e múltiplo, incluindo pastas completas (drag & drop)
39
+ - **Download Inteligente**: Download individual ou múltiplo com compressão automática em ZIP
40
+ - **Criação de Pastas**: Crie novas pastas diretamente pela interface
41
+ - **Exclusão Segura**: Remova arquivos e pastas com confirmação
42
+
43
+ ### 🔍 Busca e Organização
44
+ - **Busca Local**: Filtro rápido por nome na pasta atual
45
+ - **Busca Global**: Busca avançada recursiva em todas as pastas configuradas
46
+ - **Ordenação Flexível**: Ordene por nome, data ou tipo de arquivo
47
+ - **Ícones Inteligentes**: Identificação visual automática por tipo de arquivo (imagens, vídeos, código, documentos, etc.)
48
+
49
+ ### 👁️ Visualização de Arquivos
50
+ Suporte nativo para visualização de diversos formatos:
51
+ - **Imagens**: JPG, PNG, GIF, BMP, SVG, WebP, ICO
52
+ - **Vídeos**: MP4, WebM, OGG
53
+ - **Áudio**: MP3, WAV, OGG, M4A
54
+ - **Documentos**: PDF
55
+ - **Código**: Python, JavaScript, HTML, CSS, JSON, XML, C/C++, Java e mais
56
+ - **Texto**: TXT, MD, LOG, INI
57
+
58
+ ### 🚀 Recursos Avançados
59
+ - **Múltiplas Raízes**: Configure várias pastas raiz independentes via variável de ambiente
60
+ - **Compressão Streaming**: Download de pastas grandes com streaming ZIP (sem consumir memória)
61
+ - **Seleção Múltipla**: Selecione e baixe múltiplos arquivos/pastas de uma vez
62
+ - **Data de Criação**: Visualize quando cada arquivo foi criado
63
+ - **Responsivo**: Interface adaptável para desktop, tablet e mobile
64
+ - **Hostname Display**: Identifique facilmente qual servidor você está acessando
65
+
66
+ ## 📋 Requisitos
67
+
68
+ - Python 3.6 ou superior
69
+ - Flask 3.0.3
70
+ - zipstream-new 1.1.8
71
+
72
+ ## 📦 Instalação
73
+
74
+ ### Instalação via pip (Recomendado)
75
+
76
+ ```bash
77
+ pip install pymyfilebrowser
78
+ ```
79
+
80
+ ### Instalação para Desenvolvimento
81
+
82
+ ```bash
83
+ # Clone o repositório
84
+ git clone https://github.com/seu-usuario/pymyfilebrowser.git
85
+ cd pymyfilebrowser
86
+
87
+ # Instale em modo desenvolvimento
88
+ pip install -e .
89
+ ```
90
+
91
+ ### Instalação Manual
92
+
93
+ ```bash
94
+ # Clone o repositório
95
+ git clone https://github.com/seu-usuario/pymyfilebrowser.git
96
+ cd pymyfilebrowser
97
+
98
+ # Instale as dependências
99
+ pip install -r requirements.txt
100
+ ```
101
+
102
+ ## ⚙️ Configuração
103
+
104
+ ### Pastas Raiz
105
+
106
+ 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`:
107
+
108
+ #### Windows (PowerShell)
109
+ ```powershell
110
+ $env:PYBROWSER_ROOTS='C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos'
111
+ ```
112
+
113
+ #### Windows (CMD)
114
+ ```cmd
115
+ set PYBROWSER_ROOTS=C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos
116
+ ```
117
+
118
+ #### Linux/macOS
119
+ ```bash
120
+ export PYBROWSER_ROOTS='/home/usuario/Downloads,/home/usuario/Documents,/var/www/projetos'
121
+ ```
122
+
123
+ #### Formato da Variável
124
+
125
+ A variável `PYBROWSER_ROOTS` deve conter **caminhos separados por vírgula**. O nome de cada pasta será extraído automaticamente do caminho.
126
+
127
+ **Exemplos:**
128
+
129
+ Windows:
130
+ ```
131
+ PYBROWSER_ROOTS=C:\Users\John\Downloads,C:\Users\John\Documents,D:\Development\Projects
132
+ ```
133
+
134
+ Linux/macOS:
135
+ ```
136
+ PYBROWSER_ROOTS=/home/john/Downloads,/home/john/Documents,/var/www/projects
137
+ ```
138
+
139
+ > **Nota**: O nome exibido será o nome da pasta final no caminho. Por exemplo, `C:\Users\John\Downloads` será exibido como "Downloads".
140
+
141
+ #### Uso com Argumento -r
142
+
143
+ Você também pode especificar uma pasta diretamente ao executar:
144
+
145
+ ```bash
146
+ python -m pymyfilebrowser -r C:\MinhaPasta
147
+ ```
148
+
149
+ ou
150
+
151
+ ```bash
152
+ pymyfilebrowser -r /home/usuario/meus-arquivos
153
+ ```
154
+
155
+ ## 🚀 Uso
156
+
157
+ ### Executar como Módulo Python (Recomendado)
158
+
159
+ ```bash
160
+ python -m pymyfilebrowser
161
+ ```
162
+
163
+ ### Executar via Comando Instalado
164
+
165
+ ```bash
166
+ pymyfilebrowser
167
+ ```
168
+
169
+ ### Executar Diretamente (Desenvolvimento)
170
+
171
+ ```bash
172
+ python run.py
173
+ ```
174
+
175
+ Após iniciar, acesse em seu navegador:
176
+ ```
177
+ http://localhost:5000
178
+ ```
179
+
180
+ Para acessar de outros dispositivos na rede:
181
+ ```
182
+ http://[IP-DO-SEU-PC]:5000
183
+ ```
184
+
185
+ ## 🎯 Como Usar
186
+
187
+ ### Navegação Básica
188
+ 1. Ao abrir, você verá as pastas raiz configuradas
189
+ 2. Clique em uma pasta para navegar
190
+ 3. Use o breadcrumb no topo para voltar
191
+ 4. Use os botões de navegação (Voltar/Home) no topo direito
192
+
193
+ ### Upload de Arquivos
194
+ 1. Navegue até a pasta de destino
195
+ 2. Clique no botão **📤 Upload** (canto superior direito)
196
+ 3. Escolha "Arquivos" ou "Pasta"
197
+ 4. Selecione os arquivos/pasta desejados
198
+ 5. Aguarde o upload e clique em "Concluir"
199
+
200
+ ### Download de Arquivos
201
+ 1. **Download Individual**: Clique no ícone 📥 ao lado do arquivo
202
+ 2. **Download Múltiplo**:
203
+ - Marque as caixas de seleção dos itens desejados
204
+ - Clique no botão verde que aparece no topo
205
+ - Arquivos múltiplos são automaticamente compactados em ZIP
206
+
207
+ ### Busca de Arquivos
208
+ 1. **Busca Local**: Digite na caixa de busca no topo da lista
209
+ 2. **Busca Global**: Clique no ícone 🔍 (Busca Avançada)
210
+ - Digite o termo de busca
211
+ - Aguarde os resultados
212
+ - Clique em qualquer resultado para navegar até o arquivo
213
+
214
+ ### Criar Pasta
215
+ 1. Navegue até onde deseja criar a pasta
216
+ 2. Clique no botão **📁+** (canto superior direito)
217
+ 3. Digite o nome da pasta
218
+ 4. Confirme
219
+
220
+ ### Excluir Arquivo/Pasta
221
+ 1. Clique no ícone 🗑️ ao lado do item
222
+ 2. Confirme a exclusão
223
+ 3. ⚠️ **Atenção**: Esta ação é irreversível!
224
+
225
+ ### Visualizar Arquivo
226
+ 1. Clique no ícone 👁️ ao lado do arquivo
227
+ 2. O arquivo será aberto em uma modal de visualização
228
+ 3. Use os controles nativos para imagens, vídeos e áudios
229
+
230
+ ### Ordenação
231
+ Use os botões no topo da lista:
232
+ - **Nome**: Ordem alfabética (pastas primeiro)
233
+ - **Data**: Mais recentes primeiro
234
+ - **Tipo**: Agrupado por extensão
235
+
236
+ ## 📁 Estrutura do Projeto
237
+
238
+ ```
239
+ pymyfilebrowser/
240
+
241
+ ├── pyMyFileBrowser/ # Pacote principal
242
+ │ ├── __init__.py # Aplicação Flask e rotas
243
+ │ ├── __main__.py # Entry point para python -m
244
+ │ └── templates/ # Templates HTML
245
+ │ └── index.html # Interface principal
246
+
247
+ ├── setup.py # Configuração do pacote
248
+ ├── MANIFEST.in # Arquivos para incluir no pacote
249
+ ├── requirements.txt # Dependências
250
+ ├── CHANGELOG.txt # Histórico de versões
251
+ ├── README.md # Este arquivo
252
+ └── run.py # Script de execução direta
253
+ ```
254
+
255
+ ## 🛠️ Desenvolvimento
256
+
257
+ #
258
+
259
+ ## 🔒 Segurança
260
+
261
+ - **Path Traversal Protection**: O sistema valida todos os caminhos para evitar acesso fora das pastas raiz
262
+ - **Filename Sanitization**: Nomes de arquivos são sanitizados usando `secure_filename()` do Werkzeug
263
+ - **Input Validation**: Validação em todas as rotas POST
264
+ - **⚠️ Aviso**: Este sistema foi projetado para uso em redes locais confiáveis. **NÃO exponha diretamente à internet sem autenticação adequada**
265
+
266
+ ## 🤝 Contribuindo
267
+
268
+ Contribuições são bem-vindas! Para contribuir:
269
+
270
+ 1. Faça um Fork do projeto
271
+ 2. Crie uma branch para sua feature (`git checkout -b feature/NovaFeature`)
272
+ 3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)
273
+ 4. Push para a branch (`git push origin feature/NovaFeature`)
274
+ 5. Abra um Pull Request
275
+
276
+ ## 📝 Licença
277
+
278
+ Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.
279
+
280
+ ## 🐛 Reportar Bugs
281
+
282
+ Encontrou um bug? Por favor, abra uma [issue](https://github.com/seu-usuario/pymyfilebrowser/issues) com:
283
+ - Descrição do problema
284
+ - Passos para reproduzir
285
+ - Comportamento esperado vs atual
286
+ - Screenshots (se aplicável)
287
+ - Informações do sistema (OS, versão do Python)
288
+
289
+ ## 💡 Roadmap
290
+
291
+ - [ ] Autenticação de usuários
292
+ - [ ] Suporte a temas (claro/escuro)
293
+ - [ ] Editor de texto integrado
294
+ - [ ] Visualização de mais formatos (Office, etc.)
295
+ - [ ] Compartilhamento de links temporários
296
+ - [ ] Upload com barra de progresso
297
+ - [ ] Preview de thumbnails para imagens
298
+ - [ ] Drag & drop para reorganizar arquivos
299
+
300
+ ## 📧 Contato
301
+
302
+ Para questões, sugestões ou feedback, entre em contato através das issues do GitHub.
303
+
304
+ ---
305
+
306
+ **Desenvolvido com ❤️ e 🐍 Python**
307
+
308
+ Change Log
309
+ ==========
310
+
311
+ 1.0.0 (2026-02-02)
312
+ ------------------
313
+ - First Release
@@ -0,0 +1,281 @@
1
+ # 🐍 PyMyFileBrowser
2
+
3
+ [![Python Version](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
4
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
5
+ [![Flask](https://img.shields.io/badge/flask-3.0.3-red.svg)](https://flask.palletsprojects.com/)
6
+
7
+ **PyMyFileBrowser** é 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.
8
+
9
+ ## ✨ Características Principais
10
+
11
+ ### 🗂️ Gerenciamento de Arquivos
12
+ - **Navegação Intuitiva**: Interface limpa inspirada em gerenciadores de arquivos modernos
13
+ - **Upload de Arquivos**: Suporte para upload único e múltiplo, incluindo pastas completas (drag & drop)
14
+ - **Download Inteligente**: Download individual ou múltiplo com compressão automática em ZIP
15
+ - **Criação de Pastas**: Crie novas pastas diretamente pela interface
16
+ - **Exclusão Segura**: Remova arquivos e pastas com confirmação
17
+
18
+ ### 🔍 Busca e Organização
19
+ - **Busca Local**: Filtro rápido por nome na pasta atual
20
+ - **Busca Global**: Busca avançada recursiva em todas as pastas configuradas
21
+ - **Ordenação Flexível**: Ordene por nome, data ou tipo de arquivo
22
+ - **Ícones Inteligentes**: Identificação visual automática por tipo de arquivo (imagens, vídeos, código, documentos, etc.)
23
+
24
+ ### 👁️ Visualização de Arquivos
25
+ Suporte nativo para visualização de diversos formatos:
26
+ - **Imagens**: JPG, PNG, GIF, BMP, SVG, WebP, ICO
27
+ - **Vídeos**: MP4, WebM, OGG
28
+ - **Áudio**: MP3, WAV, OGG, M4A
29
+ - **Documentos**: PDF
30
+ - **Código**: Python, JavaScript, HTML, CSS, JSON, XML, C/C++, Java e mais
31
+ - **Texto**: TXT, MD, LOG, INI
32
+
33
+ ### 🚀 Recursos Avançados
34
+ - **Múltiplas Raízes**: Configure várias pastas raiz independentes via variável de ambiente
35
+ - **Compressão Streaming**: Download de pastas grandes com streaming ZIP (sem consumir memória)
36
+ - **Seleção Múltipla**: Selecione e baixe múltiplos arquivos/pastas de uma vez
37
+ - **Data de Criação**: Visualize quando cada arquivo foi criado
38
+ - **Responsivo**: Interface adaptável para desktop, tablet e mobile
39
+ - **Hostname Display**: Identifique facilmente qual servidor você está acessando
40
+
41
+ ## 📋 Requisitos
42
+
43
+ - Python 3.6 ou superior
44
+ - Flask 3.0.3
45
+ - zipstream-new 1.1.8
46
+
47
+ ## 📦 Instalação
48
+
49
+ ### Instalação via pip (Recomendado)
50
+
51
+ ```bash
52
+ pip install pymyfilebrowser
53
+ ```
54
+
55
+ ### Instalação para Desenvolvimento
56
+
57
+ ```bash
58
+ # Clone o repositório
59
+ git clone https://github.com/seu-usuario/pymyfilebrowser.git
60
+ cd pymyfilebrowser
61
+
62
+ # Instale em modo desenvolvimento
63
+ pip install -e .
64
+ ```
65
+
66
+ ### Instalação Manual
67
+
68
+ ```bash
69
+ # Clone o repositório
70
+ git clone https://github.com/seu-usuario/pymyfilebrowser.git
71
+ cd pymyfilebrowser
72
+
73
+ # Instale as dependências
74
+ pip install -r requirements.txt
75
+ ```
76
+
77
+ ## ⚙️ Configuração
78
+
79
+ ### Pastas Raiz
80
+
81
+ 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`:
82
+
83
+ #### Windows (PowerShell)
84
+ ```powershell
85
+ $env:PYBROWSER_ROOTS='C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos'
86
+ ```
87
+
88
+ #### Windows (CMD)
89
+ ```cmd
90
+ set PYBROWSER_ROOTS=C:\Users\SeuUsuario\Downloads,C:\Users\SeuUsuario\Documents,D:\Projetos
91
+ ```
92
+
93
+ #### Linux/macOS
94
+ ```bash
95
+ export PYBROWSER_ROOTS='/home/usuario/Downloads,/home/usuario/Documents,/var/www/projetos'
96
+ ```
97
+
98
+ #### Formato da Variável
99
+
100
+ A variável `PYBROWSER_ROOTS` deve conter **caminhos separados por vírgula**. O nome de cada pasta será extraído automaticamente do caminho.
101
+
102
+ **Exemplos:**
103
+
104
+ Windows:
105
+ ```
106
+ PYBROWSER_ROOTS=C:\Users\John\Downloads,C:\Users\John\Documents,D:\Development\Projects
107
+ ```
108
+
109
+ Linux/macOS:
110
+ ```
111
+ PYBROWSER_ROOTS=/home/john/Downloads,/home/john/Documents,/var/www/projects
112
+ ```
113
+
114
+ > **Nota**: O nome exibido será o nome da pasta final no caminho. Por exemplo, `C:\Users\John\Downloads` será exibido como "Downloads".
115
+
116
+ #### Uso com Argumento -r
117
+
118
+ Você também pode especificar uma pasta diretamente ao executar:
119
+
120
+ ```bash
121
+ python -m pymyfilebrowser -r C:\MinhaPasta
122
+ ```
123
+
124
+ ou
125
+
126
+ ```bash
127
+ pymyfilebrowser -r /home/usuario/meus-arquivos
128
+ ```
129
+
130
+ ## 🚀 Uso
131
+
132
+ ### Executar como Módulo Python (Recomendado)
133
+
134
+ ```bash
135
+ python -m pymyfilebrowser
136
+ ```
137
+
138
+ ### Executar via Comando Instalado
139
+
140
+ ```bash
141
+ pymyfilebrowser
142
+ ```
143
+
144
+ ### Executar Diretamente (Desenvolvimento)
145
+
146
+ ```bash
147
+ python run.py
148
+ ```
149
+
150
+ Após iniciar, acesse em seu navegador:
151
+ ```
152
+ http://localhost:5000
153
+ ```
154
+
155
+ Para acessar de outros dispositivos na rede:
156
+ ```
157
+ http://[IP-DO-SEU-PC]:5000
158
+ ```
159
+
160
+ ## 🎯 Como Usar
161
+
162
+ ### Navegação Básica
163
+ 1. Ao abrir, você verá as pastas raiz configuradas
164
+ 2. Clique em uma pasta para navegar
165
+ 3. Use o breadcrumb no topo para voltar
166
+ 4. Use os botões de navegação (Voltar/Home) no topo direito
167
+
168
+ ### Upload de Arquivos
169
+ 1. Navegue até a pasta de destino
170
+ 2. Clique no botão **📤 Upload** (canto superior direito)
171
+ 3. Escolha "Arquivos" ou "Pasta"
172
+ 4. Selecione os arquivos/pasta desejados
173
+ 5. Aguarde o upload e clique em "Concluir"
174
+
175
+ ### Download de Arquivos
176
+ 1. **Download Individual**: Clique no ícone 📥 ao lado do arquivo
177
+ 2. **Download Múltiplo**:
178
+ - Marque as caixas de seleção dos itens desejados
179
+ - Clique no botão verde que aparece no topo
180
+ - Arquivos múltiplos são automaticamente compactados em ZIP
181
+
182
+ ### Busca de Arquivos
183
+ 1. **Busca Local**: Digite na caixa de busca no topo da lista
184
+ 2. **Busca Global**: Clique no ícone 🔍 (Busca Avançada)
185
+ - Digite o termo de busca
186
+ - Aguarde os resultados
187
+ - Clique em qualquer resultado para navegar até o arquivo
188
+
189
+ ### Criar Pasta
190
+ 1. Navegue até onde deseja criar a pasta
191
+ 2. Clique no botão **📁+** (canto superior direito)
192
+ 3. Digite o nome da pasta
193
+ 4. Confirme
194
+
195
+ ### Excluir Arquivo/Pasta
196
+ 1. Clique no ícone 🗑️ ao lado do item
197
+ 2. Confirme a exclusão
198
+ 3. ⚠️ **Atenção**: Esta ação é irreversível!
199
+
200
+ ### Visualizar Arquivo
201
+ 1. Clique no ícone 👁️ ao lado do arquivo
202
+ 2. O arquivo será aberto em uma modal de visualização
203
+ 3. Use os controles nativos para imagens, vídeos e áudios
204
+
205
+ ### Ordenação
206
+ Use os botões no topo da lista:
207
+ - **Nome**: Ordem alfabética (pastas primeiro)
208
+ - **Data**: Mais recentes primeiro
209
+ - **Tipo**: Agrupado por extensão
210
+
211
+ ## 📁 Estrutura do Projeto
212
+
213
+ ```
214
+ pymyfilebrowser/
215
+
216
+ ├── pyMyFileBrowser/ # Pacote principal
217
+ │ ├── __init__.py # Aplicação Flask e rotas
218
+ │ ├── __main__.py # Entry point para python -m
219
+ │ └── templates/ # Templates HTML
220
+ │ └── index.html # Interface principal
221
+
222
+ ├── setup.py # Configuração do pacote
223
+ ├── MANIFEST.in # Arquivos para incluir no pacote
224
+ ├── requirements.txt # Dependências
225
+ ├── CHANGELOG.txt # Histórico de versões
226
+ ├── README.md # Este arquivo
227
+ └── run.py # Script de execução direta
228
+ ```
229
+
230
+ ## 🛠️ Desenvolvimento
231
+
232
+ #
233
+
234
+ ## 🔒 Segurança
235
+
236
+ - **Path Traversal Protection**: O sistema valida todos os caminhos para evitar acesso fora das pastas raiz
237
+ - **Filename Sanitization**: Nomes de arquivos são sanitizados usando `secure_filename()` do Werkzeug
238
+ - **Input Validation**: Validação em todas as rotas POST
239
+ - **⚠️ Aviso**: Este sistema foi projetado para uso em redes locais confiáveis. **NÃO exponha diretamente à internet sem autenticação adequada**
240
+
241
+ ## 🤝 Contribuindo
242
+
243
+ Contribuições são bem-vindas! Para contribuir:
244
+
245
+ 1. Faça um Fork do projeto
246
+ 2. Crie uma branch para sua feature (`git checkout -b feature/NovaFeature`)
247
+ 3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)
248
+ 4. Push para a branch (`git push origin feature/NovaFeature`)
249
+ 5. Abra um Pull Request
250
+
251
+ ## 📝 Licença
252
+
253
+ Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.
254
+
255
+ ## 🐛 Reportar Bugs
256
+
257
+ Encontrou um bug? Por favor, abra uma [issue](https://github.com/seu-usuario/pymyfilebrowser/issues) com:
258
+ - Descrição do problema
259
+ - Passos para reproduzir
260
+ - Comportamento esperado vs atual
261
+ - Screenshots (se aplicável)
262
+ - Informações do sistema (OS, versão do Python)
263
+
264
+ ## 💡 Roadmap
265
+
266
+ - [ ] Autenticação de usuários
267
+ - [ ] Suporte a temas (claro/escuro)
268
+ - [ ] Editor de texto integrado
269
+ - [ ] Visualização de mais formatos (Office, etc.)
270
+ - [ ] Compartilhamento de links temporários
271
+ - [ ] Upload com barra de progresso
272
+ - [ ] Preview de thumbnails para imagens
273
+ - [ ] Drag & drop para reorganizar arquivos
274
+
275
+ ## 📧 Contato
276
+
277
+ Para questões, sugestões ou feedback, entre em contato através das issues do GitHub.
278
+
279
+ ---
280
+
281
+ **Desenvolvido com ❤️ e 🐍 Python**
@@ -0,0 +1,4 @@
1
+ pip3 install setuptools twine
2
+ python setup.py sdist
3
+ twine upload --config-file .\.pypirc --repository-url https://upload.pypi.org/legacy/ dist/*
4
+ twine upload --config-file .\.pypirc .\dist\iniUts-1.1.
@@ -0,0 +1,16 @@
1
+ [tool.ruff]
2
+ # Escolha quais regras aplicar (F = Flake8, E/W = Erros de estilo, I = Isort)
3
+ select = ["E", "F", "I", "W"]
4
+ line-length = 255
5
+
6
+ # Erros que você quer ignorar globalmente
7
+ ignore = []
8
+
9
+ [tool.ruff.per-file-ignores]
10
+ # Não remova imports não usados do seu __init__ se você os quer expostos
11
+ "__init__.py" = ["F401"]
12
+
13
+ [tool.ruff.format]
14
+ # Define o estilo de formatação (estilo Black)
15
+ quote-style = "double"
16
+ indent-style = "space"
@@ -0,0 +1,47 @@
1
+ from flask import Flask
2
+ import os
3
+
4
+
5
+ app = Flask(__name__)
6
+
7
+ from pyzbrowser.routes import (
8
+ browse,
9
+ create_folder,
10
+ upload_files,
11
+ delete_item,
12
+ view_file,
13
+ download_file,
14
+ api_search,
15
+ download_selected,
16
+ download_zip,
17
+ ROOT_DIRS,
18
+ )
19
+
20
+ __all__ = [
21
+ "browse",
22
+ "create_folder",
23
+ "upload_files",
24
+ "delete_item",
25
+ "view_file",
26
+ "download_file",
27
+ "api_search",
28
+ "download_selected",
29
+ "download_zip",
30
+ ]
31
+
32
+ def main():
33
+ # Verifica se pelo menos um diretório existe antes de iniciar
34
+ valid_dirs = []
35
+ for name, path in ROOT_DIRS:
36
+ if os.path.exists(path):
37
+ valid_dirs.append(name)
38
+ else:
39
+ print(f"Aviso: O diretório '{name}' ({path}) não foi encontrado.")
40
+
41
+ if not valid_dirs:
42
+ print("Erro: Nenhum diretório raiz válido foi encontrado.")
43
+ else:
44
+ print(
45
+ f"PyBrowser iniciado com {len(valid_dirs)} pasta(s) raiz: {', '.join(valid_dirs)}"
46
+ )
47
+ app.run(host="0.0.0.0", debug=True, port=5000)
@@ -0,0 +1,9 @@
1
+ """
2
+ Entry point for running PyMyFileBrowser as a module.
3
+ Usage: python -m pymyfilebrowser
4
+ """
5
+
6
+ from . import main
7
+
8
+ if __name__ == "__main__":
9
+ main()