upapasta 0.1.1__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,68 @@
1
+ # Configuração de credenciais para upload em Usenet com nyuu
2
+ # Copie este arquivo para .env e preencha com seus dados reais
3
+
4
+ # *** Server Options ***
5
+ # Servidor NNTP (ex: sanews.blocknews.net)
6
+ NNTP_HOST=news.example.com
7
+
8
+ # Porta NNTP (119 = não-criptografado, 443/563 = TLS/SSL)
9
+ NNTP_PORT=563
10
+
11
+ # Usar SSL/TLS (true/false)
12
+ NNTP_SSL=true
13
+
14
+ # Ignorar erro de certificado (true/false)
15
+ NNTP_IGNORE_CERT=false
16
+
17
+ # Usuário NNTP
18
+ NNTP_USER=seu_usuario
19
+
20
+ # Senha NNTP
21
+ NNTP_PASS=sua_senha
22
+
23
+ # Número de conexões simultâneas
24
+ NNTP_CONNECTIONS=50
25
+
26
+ # *** Article Options ***
27
+ # Grupo Usenet para upload (ex: alt.binaries.boneless ou seu grupo preferido)
28
+ USENET_GROUP=alt.binaries.test
29
+
30
+ # Tamanho de artigo (ex: 700K, 750K)
31
+ ARTICLE_SIZE=700K
32
+
33
+ # *** Check Options ***
34
+ # Número de conexões para verificação de posts
35
+ CHECK_CONNECTIONS=5
36
+
37
+ # Número de tentativas de verificação
38
+ CHECK_TRIES=2
39
+
40
+ # Delay entre tentativas de verificação (ex: 5s, 30s)
41
+ CHECK_DELAY=5s
42
+
43
+ # Delay antes de retry de verificação
44
+ CHECK_RETRY_DELAY=30s
45
+
46
+ # Número de tentativas de verificação de post
47
+ CHECK_POST_TRIES=2
48
+
49
+ # *** NZB Options ***
50
+ # Caminho onde salvar arquivo .nzb (opcional)
51
+ NZB_OUT={filename}.nzb
52
+
53
+ # Sobrescrever arquivo .nzb existente (true/false)
54
+ NZB_OVERWRITE=true
55
+
56
+ # *** Other Options ***
57
+ # Ignorar erros (all/none)
58
+ SKIP_ERRORS=all
59
+
60
+ # Caminho para salvar posts que falharam (opcional)
61
+ DUMP_FAILED_POSTS=/home/francisco/nzb/fail/
62
+
63
+ # Modo silencioso (true/false)
64
+ QUIET=false
65
+
66
+ # *** UI Options ***
67
+ # Incluir timestamp nos logs (true/false)
68
+ LOG_TIME=true
@@ -0,0 +1,86 @@
1
+ # Guia de Instalação — UpaPasta
2
+
3
+ Este guia irá ajudá-lo a instalar o **UpaPasta** e suas dependências.
4
+
5
+ ## 1. Pré-requisitos
6
+
7
+ Antes de começar, você precisará ter os seguintes softwares instalados em seu sistema:
8
+
9
+ - **Python 3.8+**: A linguagem de programação na qual o UpaPasta é construído.
10
+ - **pip**: O instalador de pacotes do Python.
11
+
12
+ ### Dependências de Sistema
13
+
14
+ O UpaPasta orquestra ferramentas de linha de comando. Você DEVE instalar as seguintes ferramentas e garantir que elas estejam no PATH do seu sistema:
15
+
16
+ - **`rar`**: O utilitário de compressão.
17
+ - *Debian/Ubuntu*: `sudo apt install rar`
18
+ - *macOS*: `brew install rar`
19
+ - **`nyuu`**: O uploader de Usenet.
20
+ - *Via npm*: `npm install -g nyuu`
21
+ - **`parpar`**: O gerador de paridade (recomendado, mais rápido que `par2`).
22
+ - *Via npm*: `npm install -g parpar`
23
+
24
+ Consulte o `requirements.txt` para mais detalhes e alternativas de instalação.
25
+
26
+ ## 2. Instalação do UpaPasta
27
+
28
+ Com os pré-requisitos instalados, você pode instalar o UpaPasta como um comando de linha.
29
+
30
+ ### Passo 1: Obtenha o Código-Fonte
31
+
32
+ Clone o repositório do UpaPasta para a sua máquina local usando Git (ou baixe o ZIP):
33
+
34
+ ```bash
35
+ git clone https://github.com/franzopl/upapasta.git
36
+ cd upapasta
37
+ ```
38
+
39
+ ### Passo 2: Instale o Pacote
40
+
41
+ Use `pip` para instalar o UpaPasta. Este comando irá criar o executável `upapasta` no seu sistema, permitindo que você o execute de qualquer lugar.
42
+
43
+ É altamente recomendável fazer isso em um ambiente virtual (`venv`).
44
+
45
+ ```bash
46
+ # Opcional, mas recomendado: criar e ativar um ambiente virtual
47
+ python3 -m venv venv
48
+ source venv/bin/activate # Em sistemas baseados em Unix (Linux, macOS)
49
+
50
+ # Instalar o UpaPasta
51
+ pip install .
52
+ ```
53
+
54
+ Para desenvolvimento, use o modo "editável", que permite que as alterações no código-fonte sejam refletidas imediatamente sem a necessidade de reinstalar:
55
+
56
+ ```bash
57
+ pip install -e .
58
+ ```
59
+
60
+ ## 3. Configuração e Uso
61
+
62
+ ### Configuração de Credenciais
63
+
64
+ Na primeira vez que você executar o `upapasta`, o script irá verificar se as credenciais de Usenet estão configuradas. Se não estiverem, ele solicitará que você as insira e as salvará em um arquivo `.env` no diretório de trabalho atual.
65
+
66
+ ### Executando o UpaPasta
67
+
68
+ Após a instalação, você pode usar o comando `upapasta` de qualquer lugar no seu terminal:
69
+
70
+ ```bash
71
+ upapasta /caminho/para/sua/pasta [OPÇÕES]
72
+ ```
73
+
74
+ **Exemplo:**
75
+
76
+ ```bash
77
+ upapasta "/media/downloads/meu_projeto_secreto" --redundancy 20
78
+ ```
79
+
80
+ Para ver todas as opções disponíveis, use a flag `--help`:
81
+
82
+ ```bash
83
+ upapasta --help
84
+ ```
85
+
86
+ É isso! Agora você está pronto para usar o UpaPasta.
upapasta-0.1.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Franzopl
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ include .env.example
2
+ include INSTALL.md
3
+ include README.md
4
+ include LICENSE
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: upapasta
3
+ Version: 0.1.1
4
+ Summary: A script to upload folders to Usenet with RAR, PAR2, and nyuu.
5
+ Author-email: Franzopl <franzopl@example.com>
6
+ Project-URL: Homepage, https://github.com/franzopl/upapasta
7
+ Project-URL: Repository, https://github.com/franzopl/upapasta.git
8
+ Project-URL: Issues, https://github.com/franzopl/upapasta/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Topic :: Communications :: File Sharing
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Requires-Python: >=3.8
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Dynamic: license-file
19
+
20
+ # UpaPasta
21
+
22
+ **UpaPasta** é uma ferramenta de linha de comando (CLI) em Python para automatizar o processo de upload de pastas para a Usenet. O script orquestra um fluxo de trabalho completo, que inclui:
23
+
24
+ 1. **Compactação**: Cria um arquivo `.rar` a partir da pasta de origem.
25
+ 2. **Geração de Paridade**: Gera arquivos de paridade `.par2` para garantir a integridade dos dados.
26
+ 3. **Upload**: Faz o upload dos arquivos `.rar` e `.par2` para o grupo de notícias Usenet especificado.
27
+
28
+ A ferramenta foi projetada para ser simples, eficiente e exibir barras de progresso em cada etapa do processo.
29
+
30
+ ## Funcionalidades
31
+
32
+ - **Workflow Automatizado**: Orquestra a compactação, geração de paridade e upload com um único comando.
33
+ - **Flexibilidade**: Permite pular etapas individuais (`--skip-rar`, `--skip-par`, `--skip-upload`).
34
+ - **Customização**: Opções para configurar a redundância dos arquivos PAR2, o tamanho dos posts e o assunto da postagem.
35
+ - **Segurança**: Carrega as credenciais da Usenet a partir de um arquivo `.env` para não expor informações sensíveis.
36
+ - **Limpeza Automática**: Remove os arquivos `.rar` e `.par2` gerados após o upload (pode ser desativado com `--keep-files`).
37
+ - **Dry Run**: Permite simular a execução sem criar ou enviar arquivos (`--dry-run`).
38
+
39
+ ## Instalação
40
+
41
+ ### Via PyPI (Recomendado)
42
+ ```bash
43
+ pip install upapasta
44
+ ```
45
+
46
+ ### Para Desenvolvimento
47
+ 1. **Clone o repositório:**
48
+ ```bash
49
+ git clone https://github.com/franzopl/upapasta.git
50
+ cd upapasta
51
+ ```
52
+
53
+ 2. **Instale em modo editável:**
54
+ Recomenda-se o uso de um ambiente virtual (`venv`).
55
+ ```bash
56
+ python3 -m venv .venv
57
+ source .venv/bin/activate
58
+ pip install -e .
59
+ ```
60
+
61
+ 3. **Dependências Externas:**
62
+ Além das dependências do Python (nenhuma adicional), certifique-se de ter o `rar`, `parpar` (ou `par2`) e `nyuu` instalados e disponíveis no seu `PATH`.
63
+
64
+ ### Configuração de Credenciais
65
+ O script usa um arquivo de configuração global em `~/.config/upapasta/.env` por padrão. Na primeira execução, será solicitado que você forneça as credenciais, que serão salvas automaticamente.
66
+
67
+ Para configurar manualmente:
68
+ - Copie o arquivo de exemplo `.env.example` para `~/.config/upapasta/.env` e edite:
69
+ ```bash
70
+ mkdir -p ~/.config/upapasta
71
+ cp .env.example ~/.config/upapasta/.env
72
+ ```
73
+ - Edite o arquivo `~/.config/upapasta/.env`:
74
+ ```ini
75
+ NNTP_HOST=news.your-provider.com
76
+ NNTP_PORT=563
77
+ NNTP_USER=your-username
78
+ NNTP_PASS=your-password
79
+ USENET_GROUP=alt.binaries.test
80
+ NNTP_SSL=true
81
+ ```
82
+
83
+ ## Como Usar
84
+
85
+ O uso básico do `upapasta` envolve a execução do script `main.py`, passando o caminho da pasta que você deseja enviar.
86
+
87
+ **Sintaxe:**
88
+ ```bash
89
+ python3 -m upapasta.main /caminho/para/sua/pasta [OPÇÕES]
90
+ ```
91
+
92
+ **Exemplo básico:**
93
+ ```bash
94
+ python3 -m upapasta.main /home/user/documentos/meu-arquivo-importante
95
+ ```
96
+
97
+ ### Opções de Linha de Comando
98
+
99
+ | Opção | Descrição | Padrão |
100
+ | ------------------ | ------------------------------------------------------------------------------ | --------------------------------------- |
101
+ | `folder` | **(Obrigatório)** A pasta que será enviada. | N/A |
102
+ | `--dry-run` | Simula a execução sem criar ou enviar arquivos. | Desativado |
103
+ | `-r`, `--redundancy` | Define a porcentagem de redundância para os arquivos PAR2. | `15` |
104
+ | `--backend` | Escolhe o backend para a geração de paridade (`parpar` ou `par2`). | `parpar` |
105
+ | `--post-size` | Define o tamanho alvo para cada post na Usenet (ex: `20M`, `700k`). | `20M` |
106
+ | `-s`, `--subject` | Define o assunto da postagem na Usenet. | Nome da pasta |
107
+ | `-g`, `--group` | Define o grupo de notícias (newsgroup) para o upload. | Valor definido no arquivo `.env` |
108
+ | `--skip-rar` | Pula a etapa de criação do arquivo `.rar`. | Desativado |
109
+ | `--skip-par` | Pula a etapa de geração dos arquivos de paridade `.par2`. | Desativado |
110
+ | `--skip-upload` | Pula a etapa de upload para a Usenet. | Desativado |
111
+ | `-f`, `--force` | Força a sobrescrita de arquivos `.rar` ou `.par2` que já existam. | Desativado |
112
+ | `--env-file` | Especifica um caminho alternativo para o arquivo `.env`. | `.env` |
113
+ | `--keep-files` | Mantém os arquivos `.rar` e `.par2` no disco após o upload. | Desativado |
114
+
115
+ ## Estrutura do Projeto
116
+
117
+ ```
118
+ upapasta/
119
+ ├── upapasta/
120
+ │ ├── main.py # Orquestrador principal
121
+ │ ├── makerar.py # Lógica para criar arquivos .rar
122
+ │ ├── makepar.py # Lógica para gerar arquivos .par2
123
+ │ └── upfolder.py # Lógica para fazer o upload
124
+ ├── .env.example # Exemplo de arquivo de configuração
125
+ ├── requirements.txt # Dependências do Python
126
+ └── README.md # Este arquivo
127
+ ```
128
+
129
+ ## Contribuição
130
+
131
+ Contribuições são bem-vindas! Se você encontrar um bug ou tiver uma sugestão de melhoria, sinta-se à vontade para abrir uma *issue* ou enviar um *pull request*.
@@ -0,0 +1,112 @@
1
+ # UpaPasta
2
+
3
+ **UpaPasta** é uma ferramenta de linha de comando (CLI) em Python para automatizar o processo de upload de pastas para a Usenet. O script orquestra um fluxo de trabalho completo, que inclui:
4
+
5
+ 1. **Compactação**: Cria um arquivo `.rar` a partir da pasta de origem.
6
+ 2. **Geração de Paridade**: Gera arquivos de paridade `.par2` para garantir a integridade dos dados.
7
+ 3. **Upload**: Faz o upload dos arquivos `.rar` e `.par2` para o grupo de notícias Usenet especificado.
8
+
9
+ A ferramenta foi projetada para ser simples, eficiente e exibir barras de progresso em cada etapa do processo.
10
+
11
+ ## Funcionalidades
12
+
13
+ - **Workflow Automatizado**: Orquestra a compactação, geração de paridade e upload com um único comando.
14
+ - **Flexibilidade**: Permite pular etapas individuais (`--skip-rar`, `--skip-par`, `--skip-upload`).
15
+ - **Customização**: Opções para configurar a redundância dos arquivos PAR2, o tamanho dos posts e o assunto da postagem.
16
+ - **Segurança**: Carrega as credenciais da Usenet a partir de um arquivo `.env` para não expor informações sensíveis.
17
+ - **Limpeza Automática**: Remove os arquivos `.rar` e `.par2` gerados após o upload (pode ser desativado com `--keep-files`).
18
+ - **Dry Run**: Permite simular a execução sem criar ou enviar arquivos (`--dry-run`).
19
+
20
+ ## Instalação
21
+
22
+ ### Via PyPI (Recomendado)
23
+ ```bash
24
+ pip install upapasta
25
+ ```
26
+
27
+ ### Para Desenvolvimento
28
+ 1. **Clone o repositório:**
29
+ ```bash
30
+ git clone https://github.com/franzopl/upapasta.git
31
+ cd upapasta
32
+ ```
33
+
34
+ 2. **Instale em modo editável:**
35
+ Recomenda-se o uso de um ambiente virtual (`venv`).
36
+ ```bash
37
+ python3 -m venv .venv
38
+ source .venv/bin/activate
39
+ pip install -e .
40
+ ```
41
+
42
+ 3. **Dependências Externas:**
43
+ Além das dependências do Python (nenhuma adicional), certifique-se de ter o `rar`, `parpar` (ou `par2`) e `nyuu` instalados e disponíveis no seu `PATH`.
44
+
45
+ ### Configuração de Credenciais
46
+ O script usa um arquivo de configuração global em `~/.config/upapasta/.env` por padrão. Na primeira execução, será solicitado que você forneça as credenciais, que serão salvas automaticamente.
47
+
48
+ Para configurar manualmente:
49
+ - Copie o arquivo de exemplo `.env.example` para `~/.config/upapasta/.env` e edite:
50
+ ```bash
51
+ mkdir -p ~/.config/upapasta
52
+ cp .env.example ~/.config/upapasta/.env
53
+ ```
54
+ - Edite o arquivo `~/.config/upapasta/.env`:
55
+ ```ini
56
+ NNTP_HOST=news.your-provider.com
57
+ NNTP_PORT=563
58
+ NNTP_USER=your-username
59
+ NNTP_PASS=your-password
60
+ USENET_GROUP=alt.binaries.test
61
+ NNTP_SSL=true
62
+ ```
63
+
64
+ ## Como Usar
65
+
66
+ O uso básico do `upapasta` envolve a execução do script `main.py`, passando o caminho da pasta que você deseja enviar.
67
+
68
+ **Sintaxe:**
69
+ ```bash
70
+ python3 -m upapasta.main /caminho/para/sua/pasta [OPÇÕES]
71
+ ```
72
+
73
+ **Exemplo básico:**
74
+ ```bash
75
+ python3 -m upapasta.main /home/user/documentos/meu-arquivo-importante
76
+ ```
77
+
78
+ ### Opções de Linha de Comando
79
+
80
+ | Opção | Descrição | Padrão |
81
+ | ------------------ | ------------------------------------------------------------------------------ | --------------------------------------- |
82
+ | `folder` | **(Obrigatório)** A pasta que será enviada. | N/A |
83
+ | `--dry-run` | Simula a execução sem criar ou enviar arquivos. | Desativado |
84
+ | `-r`, `--redundancy` | Define a porcentagem de redundância para os arquivos PAR2. | `15` |
85
+ | `--backend` | Escolhe o backend para a geração de paridade (`parpar` ou `par2`). | `parpar` |
86
+ | `--post-size` | Define o tamanho alvo para cada post na Usenet (ex: `20M`, `700k`). | `20M` |
87
+ | `-s`, `--subject` | Define o assunto da postagem na Usenet. | Nome da pasta |
88
+ | `-g`, `--group` | Define o grupo de notícias (newsgroup) para o upload. | Valor definido no arquivo `.env` |
89
+ | `--skip-rar` | Pula a etapa de criação do arquivo `.rar`. | Desativado |
90
+ | `--skip-par` | Pula a etapa de geração dos arquivos de paridade `.par2`. | Desativado |
91
+ | `--skip-upload` | Pula a etapa de upload para a Usenet. | Desativado |
92
+ | `-f`, `--force` | Força a sobrescrita de arquivos `.rar` ou `.par2` que já existam. | Desativado |
93
+ | `--env-file` | Especifica um caminho alternativo para o arquivo `.env`. | `.env` |
94
+ | `--keep-files` | Mantém os arquivos `.rar` e `.par2` no disco após o upload. | Desativado |
95
+
96
+ ## Estrutura do Projeto
97
+
98
+ ```
99
+ upapasta/
100
+ ├── upapasta/
101
+ │ ├── main.py # Orquestrador principal
102
+ │ ├── makerar.py # Lógica para criar arquivos .rar
103
+ │ ├── makepar.py # Lógica para gerar arquivos .par2
104
+ │ └── upfolder.py # Lógica para fazer o upload
105
+ ├── .env.example # Exemplo de arquivo de configuração
106
+ ├── requirements.txt # Dependências do Python
107
+ └── README.md # Este arquivo
108
+ ```
109
+
110
+ ## Contribuição
111
+
112
+ Contribuições são bem-vindas! Se você encontrar um bug ou tiver uma sugestão de melhoria, sinta-se à vontade para abrir uma *issue* ou enviar um *pull request*.
@@ -0,0 +1,29 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "upapasta"
7
+ version = "0.1.1"
8
+ authors = [
9
+ { name="Franzopl", email="franzopl@example.com" },
10
+ ]
11
+ description = "A script to upload folders to Usenet with RAR, PAR2, and nyuu."
12
+ readme = "README.md"
13
+ requires-python = ">=3.8"
14
+ classifiers = [
15
+ "Programming Language :: Python :: 3",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Operating System :: OS Independent",
18
+ "Topic :: Communications :: File Sharing",
19
+ "Development Status :: 4 - Beta",
20
+ "Intended Audience :: End Users/Desktop",
21
+ ]
22
+
23
+ [project.urls]
24
+ Homepage = "https://github.com/franzopl/upapasta"
25
+ Repository = "https://github.com/franzopl/upapasta.git"
26
+ Issues = "https://github.com/franzopl/upapasta/issues"
27
+
28
+ [project.scripts]
29
+ upapasta = "upapasta.main:main"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ # Tests for upapasta
@@ -0,0 +1 @@
1
+ # This file makes upapasta a Python package