libert
CLI instantânea para download de livros do welib — o "yt-dlp dos livros": cola o link (ou lista), e o livro chega em segundos.
Instale via PyPI:
pip install libert
Uso rápido
libert <URL_DO_WELIB>
libert -f pdf <URL_DO_WELIB>
libert --format epub <URL_DO_WELIB>
libert -l links.txt
libert --list ./meus-links.txt
libert # abre o menu interativo
Exemplo:
libert https://pt.welib.st/md5/55d053185d2b4871c7a0549b997135f9
Termux / Cloudflare travando tudo
Quando o welib desafia o Cloudflare em todas as tentativas (comum em redes IPs compartilhadas/celular), o libert acusa exatamente isso e aceita os cookies do seu próprio navegador:
- No navegador (desktop ou Android), abra
https://welib.orguma vez (passa o "Just a moment..." normalmente); - Exporte os cookies para
cookies.txt— formato Netscape (extensões tipo Cookie-Editor / Get cookies.txt) ou só as linhasnome=valor(ex:cf_clearance=...); - Rode:
libert --cookies cookies.txt <URL_DO_WELIB>
libert --cookies cookies.txt -l links.txt
No Termux o libert já usa perfil de navegador Android automaticamente.
Fallbacks
- IPFS em corrida (race) — 10+ gateways disparados em paralelo; o primeiro que devolver bytes reais (não HTML) ganha o download;
- libgen — link direto do
file.php, último recurso.
Como fica instantâneo (v0.3)
O libert resolve o arquivo sem esperar, por rotas paralelas — a primeira que responder vale o download:
- CDN direta (partner) — encontra o
js-partner-download-link(📚 Download) dentro das páginasslow_download/fast_downloade baixa o arquivo original imediatamente (a espera de minutos não existe: o link já vem pronto no HTML); com validação anti-livro-diferente (o md5 do livro precisa estar no URL do CDN); - IPFS em corrida (race) — 10+ gateways disparados em paralelo; o primeiro que devolver bytes reais (não HTML) ganha o download;
- libgen — link direto do
file.php, último recurso.
Extras de robustez:
- Sessão cloudscraper aquecida passa o desafio Cloudflare sem browser; challenge → retry espelhado e escalonado automaticamente.
- Rate-limit não aborta: o libert respira (8s → 20s) e resolve de novo, sozinho — você não precisa re-executar o comando.
- Lote em pipeline: enquanto baixa o livro atual, o próximo já está sendo resolvido em background. Zero segundo morto entre livros; sem pausa fixa de 3s e sem "educar" o servidor quando ele não reclama.
- Link partner que vira HTML (token expirado) é re-resolvido na hora.
- Validação de conteúdo: PDF/EPUB/MOBI checados por magic bytes; se o servidor devolver HTML, nada é salvo.
- URLs de download coladas direto (
.../slow_download/<md5>/...) viram página do livro automaticamente. - Espelhos automáticos (
welib.org,welib.st,pt/en/es.welib.st). - Arquivos salvos em
~/Downloads(Linux) ou~/storage/downloads(Termux); nunca sobrescreve (adiciona(1),(2)…). - Barra de progresso com tamanho, % e velocidade.
Menu interativo (libert sem argumentos)
=== libert - Gerenciador de Downloads do welib ===
[1] Baixar um único livro (inserir URL)
[2] Baixar múltiplos livros (colar lista de URLs)
[3] Baixar a partir de arquivo de texto (ex: links.txt)
[0] Sair
Escolha uma opção (0-3):
Lote (batch)
[1/3] https://pt.welib.st/md5/aaa...
[+] Livro: "Nome do Livro"
[+] Link direto do arquivo resolvido.
Baixando Nome do Livro.pdf ━━━━━ 100% ...
[+] Concluído em 6.4s → ~/Downloads/Nome do Livro.pdf
[2/3] https://pt.welib.st/md5/bbb...
...
[+] Resumo: 3 baixado(s) com sucesso, 0 falha(s) de 3.
Arquivo .txt de exemplo (links.txt):
# meus livros
https://pt.welib.st/md5/55d053185d2b4871c7a0549b997135f9
https://welib.org/md5/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Linhas vazias e # são ignoradas; texto extra antes da URL é aceito.
Opções
libert [-f FORMATO] [-o PASTA] [-l ARQUIVO.txt] [URL]
libert [-l links.txt] --jobs 3
libert [-l links.txt] --cookies cookies.txt --max-wait 600
libert -V
| Flag | Para que serve |
|---|---|
-f, --format |
Formato desejado (pdf, epub, mobi...) — pula a pergunta interativa |
-l, --list |
Arquivo .txt com URLs (uma por linha) |
-o, --output-dir |
Pasta de destino (padrão: ~/Downloads) |
--cookies |
Cookie jar do navegador — vence Cloudflare no Termux |
--jobs N |
lote em paralelo: N livros de uma vez (2–3 é o ponto seguro) |
-w, --max-wait SEG |
paciência ante rate-limit/Cloudflare (padrão 300s; 0 = desiste já) |
-V |
versão |
Paciência automática (v0.4)
Travou no welib/Cloudflare? O libert não desiste: entra em ciclos
automáticos com barra ⏳ Aguardando liberação... (5s → 45s) e vai
re-resolvendo tudo até liberar — ou até esgotar --max-wait (300s por
padrão). Nada de rerodar na mão; deixe o terminal aberto.
Downloads em paralelo (v0.4)
libert -l links.txt --jobs 3
Uma única barra com um arquivo por linha; enquanto um baixa, os outros
resolvem. Um RatePacer compartilhado mantém as requisições ao welib
bem-comportadas (nada de ban). Sem --jobs, o lote serial continua com
pipeline: o próximo livro já está sendo resolvido enquanto o atual baixa.
Notas
- O welib limita ritmo por IP; o libert já respeita isso de forma adaptativa (sem pausas fixas) e recupera sozinho quando esbarra no limite.
- Formatos conversão (
convert/epub, etc.) usados quando você pede-f.
Desenvolvimento
pip install -e .
python -m build
Licença
MIT
Metadata
Release files for libert 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| libert-0.4.0.tar.gz | 21.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| libert-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.0 kB
Release files / libert-0.4.0.tar.gz
| Download URL | libert-0.4.0.tar.gz |
|---|---|
| Size | 21.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c39f037ad11caac14e3089fe9d042ed2b8c7c8c9d898a1e685b6675e05cae039
|
|
BLAKE2b-256 checksum How to use checksums |
929515958aa851a97d019da72c90dcbf9ce6d3b7db992d1d65b7c45aa4ce9e94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / libert-0.4.0-py3-none-any.whl
| Download URL | libert-0.4.0-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5a77e325574f62ece472de40e827e26a3bb1f5920935427a4711970a4f24ff0
|
|
BLAKE2b-256 checksum How to use checksums |
84e3628a71ffb24bd24d8d21d9aa2297a25fe4a2d0a876fc231a2afe4d63f6e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Security for libert 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.