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 : 다중 시스템 운영자 계정 username.ap_password: 다중 시스템 운영자 계정 비밀번호.usenetrc: 인증을 위해 대신 netrc를 사용합니다.netrc_location: netrc 파일의 위치 기본값은 ~/.netrc.netrc_cmd: 자격 증명을 얻으려면 쉘 명령을 사용하십시오. stdout.quiet에 추가 정보 인쇄: stdout에 메시지를 인쇄하지 않음.no_warnings: warnings.forceprint에 대해 아무것도 인쇄하지 않음: stdout에 인쇄할 템플릿 목록에 매핑된 키가 있는 사전 허용되는 키는 비디오 또는 기타입니다. 호환성을 위해 단일 목록도 허용됩니다.print_to_file: (template, filename)forcejson을 사용하여 튜플 목록에 매핑된 WHEN(forceprint와 동일) 키가 있는 딕셔너리: info_dict를 JSON.dump_single_json으로 강제 인쇄합니다. 전체 재생 목록(또는 비디오)의 info_dict를 단일 JSON 라인으로 강제 인쇄합니다.force_write_download_archive: 'skip_download' 또는 'simulate'에 관계없이 다운로드 아카이브를 강제로 작성합니다.simulate: 설정되지 않은 경우(또는 없음) 비디오 파일을 다운로드하지 않습니다. listsubtitles, listformats 또는 list_thumbnails가 사용되는 경우에만 시뮬레이션합니다. 자세한 내용은 "FORMAT SELECTION"을 참조하세요. 이 함수는 'ctx'를 인수로 사용하고 다운로드할 형식을 반환합니다. 구현의 경우allow_unplayable_formats: 재생할 수 없는 형식을 추출하고 다운로드할 수 있도록 허용합니다.ignore_no_formats_error: "비디오 형식 없음" 오류를 무시합니다. 비디오를 실제로 다운로드할 수 없는 경우에도 메타데이터를 추출하는 데 유용합니다. (실험용)format_sort: 정렬 기준이 되는 필드 목록입니다. 자세한 내용은 "형식 정렬"을 참조하세요.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)의 키입니다. : 출력 이름에 대한 템플릿 사전입니다. 허용되는 키는 OUTTMPL_TYPES(utils/_utils.py)의 키입니다. youtube-dl과의 호환성을 위해 단일 문자열을 사용할 수도 있습니다. outtmpl_na_placeholder: 사용할 수 없는 메타 필드에 대한 자리 표시자. : 파일 이름에 "&" 및 공백을 허용하지 않습니다.trim_file_name: 파일 이름 길이 제한(확장자 제외)windowsfilenames: 파일 이름을 Windows와 호환되도록 강제합니다.ignoreerrors: 다운로드/후처리 오류 시 중지하지 않음 'only_download'를 사용하면 다운로드 오류만 무시할 수 있습니다. CLI의 기본값은 'only_download'이지만 APIskip_playlist_after_errors: 재생 목록의 나머지 부분을 건너뛸 때까지 허용되는 실패 횟수allowed_extractors: 허용되는 추출기 이름과 일치하는 정규식 목록overwrites: True인 경우 모든 비디오 및 메타데이터 파일을 덮어씁니다. None인 경우 비디오가 아닌 파일이고 False인 경우 파일을 덮어쓰지 않습니다.Falseplaylist_items: 다운로드할 재생 목록의 특정 인덱스.playlistrandom: 재생 목록 항목을 무작위 순서로 다운로드합니다.lazy_playlist: 재생 목록 항목이 수신되는 대로 처리합니다.matchtitle: 일치하는 제목만 다운로드합니다.rejecttitle : 일치하는 제목에 대한 다운로드를 거부합니다.logger: 메시지를 로깅.Logger 인스턴스에 기록합니다.logtostderr: stdout 대신 stderr에 모든 것을 인쇄합니다.consoletitle: 콘솔 창의 제목 표시줄에 진행 상황을 표시합니다.writedescription: 비디오 설명을 .description 파일에 씁니다writeinfojson: 쓰기 .info.json 파일에 대한 비디오 설명clean_infojson: infojsongetcomments에서 내부 메타데이터 제거: 비디오 주석 추출 writeinfojson도 제공되지 않는 한 디스크에 기록되지 않습니다.writeannotations: .annotations.xml 파일에 비디오 주석 쓰기writethumbnail: 썸네일 쓰기 image to a fileallow_playlist_files: 'write*' 옵션을 사용할 때 재생 목록의 설명, infojson 등도 디스크에 쓸지 여부 write_all_thumbnails: 모든 썸네일 형식을 파일에 씁니다writelink: 현재 플랫폼에 따라 인터넷 바로가기 파일(.url/. webloc /.desktop)writeurllink: Windows 인터넷 바로가기 파일 쓰기(.url)writewebloclink: macOS 인터넷 바로가기 파일 쓰기(.webloc)writedesktoplink: Linux 인터넷 바로가기 파일 쓰기(.desktop)writesubtitles: 파일에 비디오 자막 쓰기writeautomaticsub : 자동으로 생성된 자막을 파일 목록에 작성합니다.subtitles: videosubtitlesformat: 자막 형식 코드subtitleslangs: 다운로드할 자막의 언어 목록(regex일 수 있음) 목록에는 참조하는 "all"이 포함될 수 있습니다. 사용 가능한 모든 자막에 요청된 언어에서 제외하기 위해 언어 앞에 "-"를 붙일 수 있습니다. 예: ['all', '-live_chat']keepvideo: 사후 처리 후 비디오 파일 유지daterange: utils.DateRange 개체 , upload_date가 범위 내에 있는 경우에만 다운로드합니다.skip_download: 비디오 파일의 실제 다운로드를 건너뜁니다.cachedir: 파일 시스템의 캐시 파일 위치. 파일 시스템을 비활성화하려면 False입니다.noplaylist: 의심스러운 경우 재생 목록 대신 단일 비디오를 다운로드합니다. age_limit: 사용자의 연령을 연 단위로 나타내는 정수입니다. 해당 연령에 적합하지 않은 동영상은 건너뜁니다.min_views: 최소 조회수를 나타내는 정수