VideoDownloader는 yt-dlp
Python 라이브러리를 기반으로 개발된 비디오 다운로드 프로그램입니다.
yt-dlp는 수천 개의 웹사이트를 지원하는 기능이 풍부한 명령줄 오디오/비디오 다운로더입니다. 이 프로젝트는 현재는 존재하지 않는 youtube-dlc를 기반으로 한 youtube-dl의 포크입니다.
yt-dlp는 기본적으로 모든 일반 비디오 웹사이트를 지원하며 매우 강력한 기능과 풍부한 매개변수를 갖춘 명령줄 프로그램입니다. 이 프로젝트는 yt-dlp(yt_dlp)의 Python 라이브러리를 기반으로 개발되었습니다. tkinter 라이브러리를 사용하여 비디오 다운로드용 GUI 애플리케이션을 구축하므로 명령줄에 긴 명령을 입력할 필요가 없고 간편한 다운로드 환경을 제공합니다. .
기본적으로 Windows 환경이 사용되며 저는 pycharm+Anaconda를 사용합니다.
파이썬>=3.8
ffmpeg는 다운로드 후 오디오와 비디오를 자동으로 병합하는 데 사용됩니다. 이는 Python 라이브러리가 아닌 ffmpeg의 바이너리 실행 파일입니다. D:ffmpegbin
과 같은 환경 변수에 추가해야 합니다.
(1) 이 프로젝트를 복제합니다.
자식 복제 [email protected]:CQUPTLei/VideoDownloader.git
(2) 프로젝트를 위한 새로운 conda 가상 환경을 생성합니다. 예:
conda create -n videodownload python=3.12
(3) pip를 사용하여 yt_dlp 라이브러리를 설치합니다.
콘다는 비디오 다운로드를 활성화합니다 pip 설치 yt-dlp
Linux에서는 Ubuntu24.04를 예로 들어 vim을 사용하여 python venv 가상 환경을 편집합니다(conda를 사용할 수도 있음).
(1) 프로젝트를 로컬로 복제
자식 복제 [email protected]:CQUPTLei/VideoDownloader.git
(2) Python venv 설치
적절한 python3.12-venv 설치
(3) 가상 환경 만들기
python3 -m venv 다운로더
(4) 가상환경 활성화
소스 다운로더/bin/활성화
(5) 관련 라이브러리 설치
pip 설치 yt-dlp sudo apt 설치 python3-tk pip install Prettytable# 패키징하려면 pip install pyinstaller를 사용하세요.
(6) main.py 실행 권한 부여
sudo chmod 775 main.py
(7) 실행(경로 참고)
python3 메인.py
가능한 수정: 브라우저에서 쿠키 파일을 얻기 위해 를 사용하는 경우 경로를 수정해야 할 수 있으며 기본 저장 위치를 수정해야 할 수 있습니다.
윈도우:
pyinstaller 라이브러리를 설치합니다:
pip 설치 pyinstaller
패키징 명령 예, 각 경로에 주의하세요. 다음 코드는 main.py가 있는 디렉터리에서 실행됩니다.
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=다운로더 main.py
우분투:
간단한 예:
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
맥OS:
비디오 목록 처리 및 다운로드를 추가합니다.
동시에 여러 다운로드 작업을 수행합니다.
더 많은 맞춤 매개변수를 지원합니다.
...
pypi에는 yt_dlp에 대한 특별한 참조 매뉴얼이 없습니다. yt-dlp 명령줄 프로그램의 사용 가능한 매개변수는 github과 pypi 모두에 작성되어 있지만 yt_dlp의 특정 구현인 YoutubeDL.py
읽어 사용 가능한 매개변수와 의미를 얻을 수 있습니다. .
다음은 주로 yt_dlp.YoutubeDL(download_opts)
메소드에서 지원하는 매개변수입니다.
YoutubeDL 객체는 객체 생성자를 인수로 포화시키지 않기 위해 대신 옵션 사전을 받습니다. 이 옵션은 InfoExtractor가 사용할 params 속성을 통해 사용할 수 있습니다. 사용 가능한 옵션:username: 인증용 사용자 이름.password: 인증용 비밀번호.videopassword: 비밀번호 비디오 액세스.ap_mso: Adobe Pass 다중 시스템 운영자 식별자.ap_username: 다중 시스템 운영자 계정 사용자 이름.ap_password: 다중 시스템 운영자 계정 비밀번호.usenetrc: 대신 인증에 netrc를 사용합니다.netrc_location: netrc 파일의 위치는 기본값입니다. ~/.netrc.netrc_cmd: 자격 증명을 얻으려면 쉘 명령을 사용하십시오.verbose: stdout.quiet에 추가 정보 인쇄: stdout.no_warnings에 메시지를 인쇄하지 마십시오: warnings.forceprint에 대해서는 아무것도 인쇄하지 마십시오. 표준 출력으로 인쇄할 템플릿 목록에 매핑된 키가 있는 딕셔너리입니다. 허용되는 키는 비디오 또는 utils.POSTPROCESS_WHEN의 항목 중 하나입니다. 호환성을 위해 단일 목록도 허용됩니다.print_to_file : (템플릿, 파일 이름)forcejson을 사용하여 튜플 목록에 매핑된 WHEN(forceprint와 동일) 키가 있는 dict: info_dict를 다음으로 강제 인쇄 JSON.dump_single_json: 전체 재생 목록(또는 비디오)의 info_dict를 단일 JSON 라인으로 강제 인쇄합니다.force_write_download_archive: 'skip_download' 또는 'simulate'에 관계없이 다운로드 아카이브를 강제로 작성합니다.simulate: 설정되지 않은 경우 비디오 파일을 다운로드하지 않습니다. 또는 없음), listsubtitles, listformats 또는 list_thumbnails가 사용되는 경우에만 시뮬레이션합니다. 형식: 비디오 형식 코드는 "FORMAT"을 참조하세요. 자세한 내용은 SELECTION"을 참조하세요. 함수를 전달할 수도 있습니다. 이 함수는 'ctx'를 인수로 사용하고 다운로드할 형식을 반환합니다. 구현에 대해서는 "build_format_selector"를 참조하세요.allow_unplayable_formats: 재생할 수 없는 형식을 추출하고 다운로드할 수 있도록 허용합니다.ignore_no_formats_error: "아니요" 무시 비디오 형식" 오류입니다. 비디오를 실제로 다운로드할 수 없는 경우에도 메타데이터를 추출하는 데 유용합니다(실험)format_sort: A 비디오 형식을 정렬할 필드 목록. 자세한 내용은 "형식 정렬"을 참조하세요.format_sort_force: 지정된 format_sort를 강제로 적용합니다. 자세한 내용은 "형식 정렬"을 참조하세요.prefer_free_formats: 무료가 아닌 컨테이너가 있는 비디오 형식을 선호할지 여부입니다. 동일한 품질의 것.allow_multiple_video_streams: 여러 비디오 스트림을 단일 파일로 병합 허용allow_multiple_audio_streams: 여러 오디오 스트림을 단일 파일로 병합 허용 단일 파일check_formats 형식을 다운로드할 수 있는지 테스트할지 여부입니다. True(모두 선택), False(없음 선택), 'selected'(선택한 형식 확인) 또는 None(추출기에서 요청한 경우에만 확인)paths: 허용되는 키는 'home' 'temp' 및 OUTTMPL_TYPES(utils/_utils.py)의 키입니다. : 출력 이름에 대한 템플릿 사전입니다. 허용되는 키는 호환성을 위해 'default' 및 OUTTMPL_TYPES의 키입니다. youtube-dl을 사용하면 단일 문자열도 사용할 수 있습니다.outtmpl_na_placeholder: 사용할 수 없는 메타 필드에 대한 자리 표시자.restrictfilenames: 파일 이름에 "&" 및 공백을 허용하지 않음trim_file_name: 파일 이름 길이 제한(확장자 제외)windowsfilenames: 파일 이름이 Windows와 호환되도록 강제ignoreerrors : 다운로드/후처리 오류 시 중지하지 않습니다. 다운로드 오류만 무시하려면 'only_download'일 수 있습니다. CLI의 경우 'only_download', APIskip_playlist_after_errors의 경우 거짓: 재생 목록의 나머지 부분을 건너뛸 때까지 허용되는 실패 횟수allowed_extractors: 허용되는 추출기 이름과 일치시킬 정규 표현식 목록overwrites: True인 경우 모든 비디오 및 메타데이터 파일 덮어쓰기, 비디오가 아닌 파일만 덮어쓰기 파일이 없으면 파일을 덮어쓰지 않습니다. Falseplaylist_items: 다운로드할 재생 목록의 특정 인덱스.playlistrandom: 다운로드 무작위 순서의 재생 목록 항목.lazy_playlist: 수신된 재생 목록 항목을 처리합니다.matchtitle: 일치하는 제목만 다운로드합니다.rejecttitle: 일치하는 제목에 대한 다운로드를 거부합니다.logger: 메시지를 로깅에 기록합니다.Logger 인스턴스.logtostderr: 모든 것을 stderr 대신에 인쇄합니다. stdout.consoletitle: 콘솔 창의 제목 표시줄에 진행 상황을 표시합니다.writedescription: .description 파일에 비디오 설명 쓰기writeinfojson: 비디오 설명을 .info.json fileclean_infojson: infojson에서 내부 메타데이터를 제거합니다.getcomments: 비디오 주석을 추출합니다. writeinfojson도 제공되지 않으면 디스크에 기록되지 않습니다.writeannotations: 비디오 주석을 .annotations.xml 파일에 씁니다.writethumbnail: 썸네일 이미지를 파일에 씁니다allow_playlist_files: 'write*'를 사용할 때 재생 목록의 설명, infojson 등을 디스크에도 쓸지 여부 optionswrite_all_thumbnails: 파일에 모든 썸네일 형식 쓰기writelink: 현재 플랫폼에 따라 인터넷 바로 가기 파일 쓰기(.url/.webloc/.desktop)writeurllink: Windows 인터넷 바로 가기 파일 쓰기(.url)writewebloclink: macOS 인터넷 바로 가기 파일 쓰기 (.webloc)writedesktoplink: Linux 인터넷 바로가기 파일 쓰기 (.desktop)writesubtitles: 파일에 비디오 자막 쓰기writeautomaticsub: 자동으로 생성된 자막을 파일 목록에 작성합니다.subtitles: videosubtitlesformat에 사용 가능한 모든 자막을 나열합니다.subtitleslangs: 다운로드할 자막의 언어 목록(정규식일 수 있음) 목록에는 모두를 참조하는 "all"이 포함될 수 있습니다. 사용 가능한 자막 언어에는 요청된 언어에서 제외하기 위해 "-" 접두사가 붙을 수 있습니다(예: ['all', '-live_chat']keepvideo:). 사후 처리 후 비디오 파일 유지daterange: utils.DateRange 개체, upload_date가 범위 내에 있는 경우에만 다운로드합니다.skip_download: 비디오 파일의 실제 다운로드 건너뛰기cachedir: 파일 시스템 캐시를 비활성화하려면 False입니다. .noplaylist: 의심스러운 경우 재생목록 대신 단일 비디오를 다운로드합니다.age_limit: 사용자의 나이를 연 단위로 나타내는 정수 특정 연령에 적합하지 않은 비디오는 다음과 같습니다. Skiped.min_views: 최소 조회수를 나타내는 정수</span