>  기사  >  백엔드 개발  >  Python을 사용하여 비디오 다운로드 함수 예제 코드 구현

Python을 사용하여 비디오 다운로드 함수 예제 코드 구현

高洛峰
高洛峰원래의
2017-03-16 09:34:562560검색

지난 1~2년 동안 단편 동영상 사업이 호황을 누리고 있으며, 각 동영상 웹사이트에는 고유한 단편 동영상 콘텐츠가 있습니다. 주요 동영상 사이트의 유명 사용자가 공개한 최신 동영상을 다운로드할 수 있는 프로그램이 있으면 시청하기 편리할 뿐만 아니라 개인 소셜 네트워킹 사이트에 저작권 없는 동영상을 게시하여 시청률을 높일 수도 있습니다. 인기

최근 1, 2년 간 쇼트 비디오 사업이 호황을 누리고 있으며, 각 비디오 웹사이트마다 고유한 쇼트 비디오 콘텐츠가 있습니다. 주요 동영상 사이트의 인기 사용자가 공개한 최신 동영상을 다운로드할 수 있는 프로그램이 있다면 시청하기 편리할 뿐만 아니라 개인 SNS에 저작권 없는 동영상을 게시할 수도 있다면 좋지 않을까요? 당신의 인기를 높이기 위한 네트워킹 사이트?

parker는 그러한 프로젝트입니다(프로젝트 주소: https://github.com/LiuRoy/parker). 셀러리프레임워크를 사용하여 정기적으로 사용자 비디오 목록을 크롤링하고 최신 릴리스를 컴파일합니다. 비동기식 다운로드를 통해 분산 배포를 쉽게 달성할 수 있습니다. 각 웹사이트의 페이지 레이아웃인터페이스가 자주 업데이트되기 때문에 프로그램의 높은 가용성을 보장하기 위해 Statsd 모니터링이 특별히 추가되어 오류.

코드아키텍처

Python을 사용하여 비디오 다운로드 함수 예제 코드 구현

현재 파커에 있음 Bilibili 및 Miaopai에서의 다운로드만 구현됩니다. 프레임 다이어그램에서 볼 수 있듯이 각 웹사이트 유형에 대해 두 개의 비동기 인터페이스가 구현되어야 합니다. 즉, 사용자의 비디오 홈페이지에서 게시된 비디오의 재생 주소를 구문 분석하고 이를 기반으로 비디오를 다운로드합니다. 재생 주소에 따라서 웹사이트 유형을 추가할 때 원본 코드를 수정할 필요가 없으며 새로운 구문 분석 및 다운로드 인터페이스만 추가하면 됩니다. 아직 영상 다운로드가 완료된 이후의 후속작업은 구현하지 않았으니 각자의 필요에 따라 자유롭게 구현하시면 됩니다.

실행 시 셀러리는 비동기 실행을 위해 정기적으로 구성된 고품질 사용자 목록을 해당 웹사이트의 구문 분석 인터페이스로 보내고 최신 비디오 재생 주소를 필터링한 후 해당 다운로드 인터페이스로 전달합니다. 비동기 다운로드가 완료되면 후속 작업을 비동기적으로 호출합니다. 따라서 예약된 작업을 전송하려면 셀러리 비트 프로세스를 시작해야 하고, 구문 분석 및 다운로드 작업을 수행하려면 여러 개의 셀러리 비동기 작업을 시작해야 합니다. 상대적으로 큰 비디오의 경우 다운로드에 상당한 시간이 소요됩니다. 작업 목록의 크기에 따른 비동기 작업.

프로그램이 실행됩니다

이 프로그램은 우분투와 맥에서 정상적으로 실행되는 것으로 확인되었습니다. 정상적으로 시작되지 않아 Windows 환경에서는 검증되지 않았습니다.

종속 라이브러리설치

파이썬 버전은 3.5입니다. 프로젝트 디렉터리에 들어간 후 다음을 실행합니다.

pip install -r 요구사항.txt

데이터베이스 생성테이블

사전에 데이터베이스 2개 테이블 (sql: https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)

매개변수 구성

config 경로 아래의 Logging.yaml, params.yaml, sites.yaml은 각각 로그 구성, 실행 매개변수 구성, 인기 있는 사용자 구성에 해당합니다.

로그 구성

디버그 모드에서는 로그가 표준 출력 스트림으로 직접 출력됩니다. 따라서 출력 로그 파일을 구성해야 합니다.

구성 실행

  • 디버그 모드디버그 모드, 이 모드에서는 로그가 다음을 가리킵니다. 표준 출력, 릴리스 모드에서는 모니터링 데이터가 없으며 지정된 파일에 로그가 출력되고 모니터링 데이터가 있습니다.

  • broker_url은 celery의 BROKER_URL에 해당하며 redis 또는 Rabbitmq

  • mysql _url 데이터베이스 주소, 테이블 2개를 미리 구축해야 함

  • download_path 영상 다운로드 경로

  • statsd_address 모니터링 주소

  • video_number_per_page 사용자의 동영상 홈페이지에서 매번 몇 개의 동영상 재생 주소를 파싱하나요? 대부분의 사용자는 매번 소수의 동영상을 게시하기 때문에 아주 작은 값으로만 ​​설정하면 됩니다. 첫 실행 중에는 장기간의 동영상이 다수 다운로드되지 않습니다.

  • 동영상 다운로드의 download_timeout 제한 시간

인기 사용자 구성

Parker는 이 구성을 기반으로 셀러리 비트 스케줄러 목록을 생성합니다.

  • 이름 규칙은 -이며, Parker는 이를 스케줄러 작업 이름으로 사용합니다.

  • URL 사용자 동영상 홈페이지 게시

  • 작업은 셀러리 구문 분석 비동기 작업에 해당합니다

  • 분 사용자 동영상 목록을 확인하는 데 몇 분

작업 시작

프로젝트 디렉터리에 들어가서 다음 명령을 실행하여 셀러리 워커를 시작합니다


celery -A spider worker


다음 명령을 실행하여 celery beat 예약 작업을 시작합니다


celery -A spider beat


모니터링

docker 이미지를 적극 활용하면 1분만에 모니터링 환경을 구성할 수 있습니다. 이후에는 성공적인 실행과 비정상 실행에 대한 데이터만 추가하면 프로그램이 정상적으로 실행되는지 쉽게 모니터링할 수 있습니다.

Python을 사용하여 비디오 다운로드 함수 예제 코드 구현


위 내용은 Python을 사용하여 비디오 다운로드 함수 예제 코드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.