PyFlowDownloader e um gerenciador de downloads desktop feito em Python. O sistema usa PySide6 para a interface grafica e yt-dlp para baixar videos ou audios, com suporte a fila de downloads, progresso em tempo real, cancelamento, historico e exportacao CSV.
- Python 3.10 ou superior.
- Windows, Linux ou macOS com ambiente grafico disponivel.
- Conexao com a internet.
- ffmpeg instalado para downloads em MP3 e videos em alta qualidade que precisam juntar video e audio.
- Permissao de escrita na pasta de videos do usuario.
- Instale as dependencias Python com
pip install -r requirements.txt. - Mantenha o
yt-dlpatualizado para reduzir erros com YouTube:pip install -U yt-dlp. - Instale o
ffmpegquando for baixar MP3,1080p,bestou qualquer formato que use video e audio separados. - No Windows, o sistema procura o
ffmpegautomaticamente emC:/ffmpeg/bin/ffmpeg.exe. - Se o
ffmpegestiver em outro lugar, adicione a pastabinaoPATHou configure uma das variaveisFFMPEG_BINARY,FFMPEG_PATHouFFMPEG_HOME.
- Receber uma URL informada pelo usuario.
- Validar e normalizar URLs digitadas sem protocolo.
- Permitir escolha entre
mp4emp3. - Permitir escolha de qualidade para video:
144p,360p,720p,1080poubest. - Adicionar downloads em uma fila visual.
- Executar downloads em segundo plano sem travar a interface.
- Exibir progresso, velocidade e ETA do download.
- Permitir cancelamento de downloads ativos ou pendentes.
- Registrar mensagens no painel de logs.
- Exibir historico de tarefas finalizadas, canceladas ou com erro.
- Filtrar historico por titulo ou URL.
- Exportar historico concluido para CSV.
- Aplicar tema visual via QSS.
- Alternar tela cheia com
F11.
PySide6: cria a interface grafica desktop. Usado em janelas, widgets, layouts, sinais, slots, timers, dialogs, tabelas e barras de progresso.yt-dlp: baixa videos e audios. Usado emcore/process_manager.pyviayt_dlp.YoutubeDL.ffmpeg: dependencia externa do sistema usada peloyt-dlppara converter audio para MP3 e juntar video/audio em downloads de alta qualidade.
sys: usado no ponto de entrada para controlar argumentos e encerrar a aplicacao.pathlib.Path: usado para manipular caminhos de forma portavel.threading: usado para locks e eventos de cancelamento.concurrent.futures.ThreadPoolExecutor: executa downloads em threads separadas.concurrent.futures.Future: acompanha tarefas submetidas ao executor.dataclasses.dataclass: define a estruturaDownloadTask.dataclasses.field: criastop_eventpor instancia de tarefa.typing: usado paraProtocol,Optional,Callablee tipagens auxiliares.datetime: registra horarios de conclusao, cancelamento e logs.csv: exporta o historico para arquivo CSV.os: le variaveis de ambiente usadas para localizar offmpeg.shutil: verifica seffmpegesta disponivel no PATH.urllib.parse.urlparse: valida e normaliza URLs digitadas pelo usuario.
- A opcao
bestusabestvideo+bestaudio/bestpara tentar obter a melhor qualidade disponivel. - As opcoes
144p,360p,720pe1080pusam filtros de altura do yt-dlp, comobestvideo[height<=1080]+bestaudio. - Quando o YouTube entrega video e audio separados, o
ffmpege necessario para gerar um arquivo final unico. - Quando encontrado, o caminho do
ffmpege enviado ao yt-dlp pela opcaoffmpeg_location.
pip install -r requirements.txt
python main.pyPara baixar MP3 ou videos em alta qualidade, instale o ffmpeg. O caminho recomendado no Windows e C:/ffmpeg/bin/ffmpeg.exe.
O projeto usa PyInstaller para gerar o executavel Windows.
.\scripts\build.ps1O pacote final sera criado em:
releases/PyFlowDownloader-dev-windows.zip
Para informar uma versao manualmente:
.\scripts\build.ps1 -Version "v0.1.0"Se as dependencias ja estiverem instaladas:
.\scripts\build.ps1 -Version "v0.1.0" -SkipInstallO projeto possui uma pipeline em .github/workflows/release.yml.
Ela executa automaticamente quando uma tag no formato vMAJOR.MINOR.PATCH e enviada para o GitHub.
Fluxo da pipeline:
- Baixa o codigo do repositorio.
- Instala Python 3.12.
- Instala as dependencias do
requirements.txt. - Executa o build com
scripts/build.ps1. - Compacta o executavel em
.zip. - Cria uma GitHub Release.
- Anexa o
.zipda versao na Release.
O projeto segue essa estrutura de versão:
vMAJOR.MINOR.PATCH
Exemplos:
v0.1.0 primeira versao testavel
v0.2.0 nova funcionalidade
v0.2.1 correcao de bug
v1.0.0 versao estavel
Para criar uma release:
git tag v0.1.0
git push origin v0.1.0Depois do push da tag, o GitHub Actions cria a Release automaticamente.
Antes de criar a tag, atualize o CHANGELOG.md com as mudancas da versao.
O ffmpeg nao e empacotado junto com o aplicativo nesta primeira estrutura de release.
Motivos:
- Mantem o build menor.
- Evita problemas de distribuicao/licenca.
- O sistema ja detecta
ffmpegnoPATH, em variaveis de ambiente e emC:/ffmpeg/bin/ffmpeg.exe.
Para usar MP3 ou alta qualidade, instale o ffmpeg separadamente.
