VideoDownloader é um programa de download de vídeo desenvolvido com base na biblioteca python yt-dlp
.
yt-dlp é um downloader de áudio/vídeo de linha de comando rico em recursos que oferece suporte a milhares de sites. Este projeto é um fork do youtube-dl baseado no extinto youtube-dlc.
yt-dlp suporta basicamente todos os sites de vídeo comuns. É um programa de linha de comando com funções muito poderosas e parâmetros ricos. Este projeto é desenvolvido com base na biblioteca python do yt-dlp (yt_dlp). Ele usa a biblioteca tkinter para construir um aplicativo GUI para download de vídeo, eliminando a necessidade de inserir comandos longos na linha de comando e proporcionando uma experiência de download fácil. .
O ambiente Windows é usado por padrão, eu uso pycharm+Anaconda:
píton>=3.8
ffmpeg é usado para mesclar áudio e vídeo automaticamente após o download. Observe que é o arquivo binário executável do ffmpeg, não a biblioteca python. Lembre-se de adicioná-lo à variável de ambiente, como: D:ffmpegbin
(1) Clone este projeto
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Crie um novo ambiente virtual conda para o projeto, exemplo:
conda criar -n download de vídeo python = 3.12
(3) Use pip para instalar a biblioteca yt_dlp:
conda ativar download de vídeo pip instalar yt-dlp
No Linux, tome Ubuntu24.04 como exemplo, use vim para editar, ambiente virtual python venv (você também pode usar conda):
(1) Clone o projeto localmente
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Instale python venv
apto instalar python3.12-venv
(3) Crie um ambiente virtual
downloader python3 -m venv
(4) Ativar ambiente virtual
downloader de origem/bin/ativar
(5) Instale bibliotecas relacionadas
pip instalar yt-dlp sudo apt instalar python3-tk pip install prettytable# Para empacotamento, use pip install pyinstaller
(6) Dê permissões executáveis a main.py
sudo chmod 775 main.py
(7) Execução (observe o caminho)
python3 principal.py
Possíveis modificações: Se você utiliza para obter arquivos cookie do navegador, pode ser necessário modificar o caminho, e o local de armazenamento padrão pode precisar ser modificado.
Windows:
Instale a biblioteca pyinstaller:
pip instalar pyinstaller
Exemplo de comando de empacotamento, preste atenção a cada caminho. O código a seguir é executado no diretório onde main.py está localizado:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Downloader main.py
Ubuntu:
Um exemplo simples:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
MacOS:
Adicione processamento e download de listas de vídeos;
Execute várias tarefas de download ao mesmo tempo;
Suporta mais parâmetros personalizados;
...
Não existe um manual de referência especial para yt_dlp no pypi. Os parâmetros disponíveis do programa de linha de comando yt-dlp são escritos no github e no pypi, mas você pode ler a implementação específica de yt_dlp: YoutubeDL.py
para obter os parâmetros e significados disponíveis. .
A seguir estão principalmente os parâmetros suportados pelo método yt_dlp.YoutubeDL(download_opts)
.
Os objetos YoutubeDL aceitam muitos parâmetros. Para não saturar o construtor do objeto com argumentos, ele recebe um dicionário de opções. Essas opções estão disponíveis através do atributo params para uso dos InfoExtractors. são adicionados a ele, portanto este é um "registro mútuo". Opções disponíveis:username: Nome de usuário para fins de autenticação.password: Senha para fins de autenticação.videopassword: Senha para fins de autenticação. acessando um vídeo.ap_mso: identificador de operador de vários sistemas do Adobe Pass.ap_username: nome de usuário da conta de operador de vários sistemas.ap_password: senha da conta de operador de vários sistemas.usenetrc: use netrc para autenticação.netrc_location: local do arquivo netrc O padrão é. ~/.netrc.netrc_cmd: Use um comando shell para obter credenciaisverbose: Imprima informações adicionais em stdout.quiet: Não imprima mensagens em stdout.no_warnings: Não imprima nada para warnings.forceprint: Um dict com chaves WHEN mapeadas para uma lista de modelos para imprimir em stdout. As chaves permitidas são video ou qualquer um dos itens em utils.POSTPROCESS_WHEN. : Um dict com chaves WHEN (o mesmo que forceprint) mapeado para uma lista de tuplas com (modelo, nome do arquivo)forcejson: Força a impressão de info_dict como JSON.dump_single_json: Força a impressão do info_dict de toda a lista de reprodução (ou vídeo) como uma única linha JSON.force_write_download_archive: Força a gravação do arquivo de download independentemente de 'skip_download' ou 'simulate'.simulate: Não baixe os arquivos de vídeo se não estiver definido (. ou Nenhum), simula apenas se listsubtitles, listformats ou list_thumbnails for usadoformat: código de formato de vídeo, consulte "FORMAT. SELECTION" para mais detalhes. Você também pode passar uma função. A função usa 'ctx' como argumento e retorna os formatos para download. Consulte "build_format_selector" para uma implementaçãoallow_unplayable_formats: Permitir que formatos não reproduzíveis sejam extraídos e baixados.ignore_no_formats_error: Ignore "No erro de formatos de vídeo ". Útil para extrair metadados mesmo se o vídeo não estiver realmente disponível para download (experimental) format_sort: A lista de campos pelos quais classificar os formatos de vídeo. Consulte "Classificando formatos" para obter mais detalhes.format_sort_force: Force o format_sort fornecido, consulte "Classificando formatos" para obter mais detalhes.prefer_free_formats: Se preferir formatos de vídeo com contêineres gratuitos em vez de não gratuitos. aqueles da mesma qualidade.allow_multiple_video_streams: permite que vários fluxos de vídeo sejam mesclados em um único fileallow_multiple_audio_streams: permite que vários fluxos de áudio sejam mesclados em um único filecheck_formats Se deseja testar se os formatos podem ser baixados. Pode ser Verdadeiro (marque todos), Falso (marque nenhum). 'selected' (verifique os formatos selecionados) ou None (verifique apenas se solicitado pelo extrator)paths: Dicionário de caminhos de saída são 'home' 'temp' e as chaves de OUTTMPL_TYPES (em utils/_utils.py)outtmpl. : Dicionário de modelos para nomes de saída são 'padrão' e as chaves de OUTTMPL_TYPES (em utils/_utils.py). com youtube-dl, uma única string também pode ser usada. : Não pare em erros de download/pós-processamento. Pode ser 'only_download' para ignorar apenas erros de download. 'only_download' para CLI, mas falso para APIskip_playlist_after_errors: número de falhas permitidas até que o resto da lista de reprodução seja ignoradoallowed_extractors: lista de expressões regulares para corresponder aos nomes de extratores que são permitidossobrescrever: substituir todos os arquivos de vídeo e metadados se for verdadeiro, substituir apenas os que não são de vídeo arquivos se Nenhum e não sobrescrever nenhum arquivo se Falseplaylist_items: Índices específicos da lista de reprodução para download.playlistrandom: Download itens da lista de reprodução em ordem aleatória.lazy_playlist: processa as entradas da lista de reprodução à medida que são recebidas.matchtitle: baixa apenas títulos correspondentes.rejecttitle: rejeita downloads de títulos correspondentes.logger: registra mensagens em um logging.Instância do Logger.logtostderr: imprime tudo em stderr em vez de stdout.consoletitle: exibe o progresso na barra de títulos da janela do console.writedescription: escreve a descrição do vídeo em um arquivo .descriptionwriteinfojson: escreve a descrição do vídeo em um .info.json fileclean_infojson: Remova os metadados internos dos infojsongetcomments: Extraia os comentários do vídeo. Isso não será gravado no disco, a menos que writeinfojson também recebawriteannotations: Grave as anotações do vídeo em um arquivo .annotations.xmlwritethumbnail: Grave a imagem em miniatura em um arquivoallow_playlist_files: Seja para escrever a descrição das playlists, infojson etc. também no disco ao usar o 'write*' optionswrite_all_thumbnails: Escreva todos os formatos de miniatura em arquivoswritelink: Escreva um arquivo de atalho da Internet, dependendo da plataforma atual (.url/.webloc/.desktop)writeurllink: Escreva um arquivo de atalho da Internet do Windows (.url)writewebloclink: Escreva um arquivo de atalho da Internet do macOS (.webloc)writedesktoplink: Escreva um arquivo de atalho da Internet do Linux (.desktop)writesubtitles: Escreva as legendas do vídeo em um arquivowriteautomaticsub: Escreva as legendas geradas automaticamente em um arquivolistsubtitles: Lista todas as legendas disponíveis para o vídeosubtitlesformat: O código de formato para legendassubtitleslangs: Lista de idiomas das legendas para download (pode ser regex A lista pode conter "todos" para se referir a todos). as legendas disponíveis O idioma pode ser prefixado com um "-" para excluí-lo dos idiomas solicitados, por exemplo, ['all', '-live_chat']keepvideo: Manter o arquivo de vídeo após pós-processamentodaterange: Um objeto utils.DateRange, baixe apenas se upload_date estiver no intervalo.skip_download: Ignore o download real do vídeo filecachedir: Localização dos arquivos de cache no sistema de arquivos. .noplaylist: baixe um único vídeo em vez de uma lista de reprodução em caso de dúvida.age_limit: um número inteiro que representa a idade do usuário em anos. São vídeos inadequados para uma determinada idade. skipped.min_views: um número inteiro que representa a contagem mínima de visualizações em