Metadata-Version: 2.4
Name: nexusdlp
Version: 1.0.0
Summary: Downloader de vídeo e áudio do YouTube 100% puro em Python (sem dependências externas).
Home-page: https://github.com/nexusdlp/nexusdlp
Author: NexusDLP
Author-email: nexusdlp@example.com
Project-URL: Bug Tracker, https://github.com/nexusdlp/nexusdlp/issues
Keywords: youtube,downloader,video,audio,mp4,m4a,yt-dlp
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: Portuguese (Brazilian)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-python
Dynamic: summary

# NexusDLP 🚀

> **Downloader de Vídeo & Áudio do YouTube — 100% Python Nativo, Zero Dependências.**

[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://python.org)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Zero Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)]()

NexusDLP é um downloader de vídeo e áudio do YouTube escrito **do zero** usando exclusivamente a **biblioteca padrão do Python (stdlib)**. Nenhuma dependência de terceiros. Nenhum `yt-dlp`, `requests`, `httpx`, `pytube` ou `ffmpeg-python`. Apenas Python puro.

---

## ✨ Funcionalidades

- ⚡ **Motor Turbo Multi-Threaded**: 8 conexões HTTP paralelas via `Range: bytes`, acelerando downloads de ~300 KB/s para **+10 MB/s (>30x mais rápido)**
- 🎵 **Áudio com Metadados e Capa**: Baixa áudio M4A/AAC com título, artista e imagem de capa embutidos diretamente nas tags do arquivo
- 🎬 **Vídeo em Alta Qualidade**: Suporta 144p até 4K (2160p) com download de faixas de vídeo e áudio separadas e mesclagem automática
- 🎞️ **Codec Universal**: Prioriza H.264 (AVC) para vídeo e AAC para áudio, compatível com 100% dos players nativos do Windows, macOS, iOS e Android
- 📜 **Playlists Completas**: Baixa toda uma playlist do YouTube de uma só vez
- 🔒 **Zero Dependências**: Usa apenas `http.client`, `ssl`, `socket`, `struct`, `json`, `re`, `subprocess`, `concurrent.futures` e `argparse` da stdlib
- 💻 **CLI Profissional**: Interface de terminal 100% em Português com barra de progresso dinâmica, tabela de formatos e logotipo ASCII
- 📦 **Biblioteca Python**: Use via `import nexusdlp` no seu próprio código

---

## 🛠️ Instalação

```bash
pip install nexusdlp
```

---

## 💻 Uso no Terminal (CLI)

```bash
# Baixar vídeo na melhor qualidade progressiva disponível
nexusdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ

# Listar todos os formatos disponíveis
nexusdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ -F

# Baixar apenas áudio (M4A/AAC com capa e metadados embutidos)
nexusdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ --audio-only

# Baixar em 1080p com arquivo de saída específico
nexusdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ -f 1080p -o meu_video.mp4

# Baixar uma playlist inteira em áudio
nexusdlp "https://www.youtube.com/playlist?list=PLxxx" --audio-only
```

> **Nota para Windows CMD:** URLs com parâmetros `&` devem ser envolvidas em aspas duplas:
> ```cmd
> nexusdlp "https://www.youtube.com/watch?v=xxx&list=yyy" --audio-only
> ```

---

## 🐍 Uso como Biblioteca Python

```python
import nexusdlp

# Baixar vídeo
nexusdlp.download("https://www.youtube.com/watch?v=dQw4w9WgXcQ")

# Baixar apenas áudio com metadados e capa
nexusdlp.download("https://www.youtube.com/watch?v=dQw4w9WgXcQ", audio_only=True)

# Baixar em 1080p H.264 com saída customizada
nexusdlp.download(
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    format="1080p",
    output="D:/Videos/meu_video.mp4"
)

# Extrair metadados sem baixar
info = nexusdlp.extract_info("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
print(info["title"])       # Rick Astley - Never Gonna Give You Up
print(info["author"])      # Rick Astley
print(info["length_seconds"])  # 213

# Obter lista de formatos como string formatada
tabela = nexusdlp.list_formats("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
print(tabela)
```

---

## 📖 Opções da CLI

| Opção | Descrição |
|---|---|
| `url` | URL do vídeo ou ID do YouTube |
| `-f FORMAT` | Formato: `best`, `bestaudio`, `1080p`, `720p`, `480p`, `360p`, `<itag>` |
| `-o OUTPUT` | Caminho ou diretório de saída |
| `-a, --audio-only` | Baixa apenas áudio com metadados e capa |
| `-F, --list-formats` | Lista todos os formatos disponíveis |
| `--yes-playlist` | Força download de toda a playlist |
| `--no-playlist` | Baixa apenas o vídeo individual |
| `--no-ffmpeg` | Desativa o uso do ffmpeg |
| `--info-json` | Exibe metadados em JSON |
| `-v, --verbose` | Modo de depuração detalhado |

---

## 🏗️ Arquitetura

| Módulo | Responsabilidade |
|---|---|
| `http_client.py` | Cliente HTTP/HTTPS puro via `http.client` + `ssl`, com suporte a Range, redirect e retry |
| `youtube_extractor.py` | Extração de metadados, formatos e decifragem de assinaturas (`DecipherEngine`) |
| `format_selector.py` | Seleção e ordenação de formatos priorizando codecs universais (H.264 / AAC) |
| `downloader.py` | Motor turbo multi-threaded com barra de progresso, thumbnail e injeção de metadados |
| `mp4_muxer.py` | Muxer MP4 nativo (lê/escreve caixas ISO BMFF via `struct`) sem ffmpeg |
| `mp4_metadata.py` | Injetor de tags MP4/M4A (Título, Artista, Capa) em Python puro |
| `playlist_extractor.py` | Extração e download em lote de playlists do YouTube |
| `cache.py` | Cache local em disco para metadados de player |
| `cli.py` | Interface de linha de comando 100% em Português |
| `api.py` | API de alto nível para uso programático |

---

## 📋 Requisitos

- Python **3.11+**
- `ffmpeg` (**opcional**): usado apenas para remux/merge de streams separados e embutir capa no áudio. O NexusDLP funciona 100% sem ele via o muxer e injetor nativos.

---

## 📄 Licença

MIT License — © 2026 NexusDLP
