Biblibili 영상 투고 인터페이스 분석 및 Python 으로 자동 투고 기능 구현
6187 단어 Python자동 투고Biblibili 동 영상투고 하 다
항목 주소:https://gitee.com/nbody1996/bilibili_video_uploader
비디오 주소:https://www.bilibili.com/video/BV1qt4y1v76u/
로그 인 쿠키 가 져 오기
요청 은 로그 인 성공 후 키 쿠키 를 가지 고 있어 야 B 사이트 배경 에서 로그 인 한 상태 로 여 겨 집 니 다.
연구 에 의 하면 다음 과 같은 두 가 지 는 필요 하 다.
그 다음 에 이 두 값 을 복사 하면 다음 요청 에서 cookies 가 이 두 값 을 가 져 오 면 로그 인 상 태 를 유지 할 수 있 습 니 다.
해결 방안:
requests.Session.cookies = requests.utils.cookiejar_from_dict
,추 후 요청 세 션 에서 유지requests.Session.headers = {'User-Agent':'???'}
,추 후 요청 세 션 에서 유지요청 방법:
GET
요청 인터페이스: https://member.bilibili.com/preupload
요청 체:응답 체:
요청 체 솔 루 션:
os.path.basename
또는pathlib.Path.name
에서 얻 을 수 있 습 니 다os.path.getsize
또는pathlib.Path.stat().st_size
에서 얻 을 수 있 습 니 다요청 방법:
POST
요청 인터페이스: https://upos-sz-upcdnbda2.bilivideo.com/[upos_uri]
위[upos_uri]
를preupload
응답 체 중upos_uri
의upos://
뒷부분 으로 교체 합 니 다.예 를 들 어https://upos-sz-upcdnbda2.bilivideo.com/ugcboss/m201010a23h35mci3cejzh2xe4a6gwq1.mp4
요청 헤더:요청 체:
응답 체:
step 2 분할 업로드 영상
어 려 운 점 을 중시 하 다
요청 방법:
PUT
요청 인터페이스: step1
요청 헤더: step1
요청 체(두 부분 으로 나 누 기):요청 체 솔 루 션:
params 매개 변 수 는
requests.put params
매개 변 수 를 통 해 전달 되 고payload
매개 변 수 를 통 해 전달 된다.requests.put data
총 차례 는chunks
매개 변수 에 따라 계산 한 결과preupload chunk_size
를 통 해 위로 정 리 된 것 으로 나 타 났 다.math.ceil(filesize/chunk_size)
를 얻 은 후에 순환 에서 변화chunks
,partNumber
두 가지chunk
에서 비디오 파일 IO 흐름 을 얻 습 니 다.open
방법 으로 지정 한 크기 의 비디오 바이트 를 얻 고 내 장 된 함수read(size=chunk_size)
를 통 해 현재 바이트 수len
인 자 를 얻 을 수 있 습 니 다.size
방법 으로 현재 바이트 의 위 치 를 얻 고 대응 하 는tell
과start
매개 변수end
,partNumber
,chunk
,chunks
,size
와start
매개 변수end
매개 변 수 를 통 해 전달요청 방법:
read
요청 인터페이스: requests.put data
요청 헤더: POST
요청 체(두 부분 으로 나 누 기):PS:위의 그림 은 틀 에 박 힌 매개 변수 가 없고 모두 고정 적 으로 쓰 여 있 습 니 다.
요청 체 솔 루 션:
json 형식의 요청 체 는
step1
매개 변수 로 전달 할 수 있 습 니 다.폴 링 비디오 표지 가 져 오기
요청 방법:
step1
요청 인터페이스: requests.post json
GET
을 B 역 에 있 는 비디오 파일 이름 으로 바 꾸 는 것 을 주의 하 세 요.응답 체:
해결 방안:B 역 백 엔 드 에서 표지 그림 을 처리 할 때 까지 기 다 려 야 하기 때문에 이 단 계 는 응답 체
https://member.bilibili.com/x/web/archive/recovers?fns=[bfilename]
필드 가 빈 목록 이 아 닐 때 까지 일정 시간 간격 으로 이 인 터 페 이 스 를 방문 해 야 합 니 다.추천 파 티 션 선택
요청 방법:
[bfilename]
요청 인터페이스: data
요청 체:PS:
GET
왜 쓰 는 지 잘 모 르 겠 지만 현재 만 나 서 0 또는 1https://member.bilibili.com/x/web/archive/typeid
왜 쓰 는 지 모 르 겠 지만 빈 문자열 이면 됩 니 다추천 탭 선택
요청 방법:
groupid
요청 인터페이스: vfea
요청 체:응답 체:
PS:목록 유도 식 으로 탭 문자열 을 목록 에 저장 하고 문자열
GET
방법 으로https://member.bilibili.com/x/web/archive/typeid
연결 할 수 있 습 니 다.미리 발표 하 다
요청 방법:
join
요청 인터페이스:
PS:할 말 이 없어 요.직접GET
이 링크 는 응답 체 도 쓸모 가 없어 요.동 영상 을 발표 하 다
앞의"오 관 참 육 장"을 거 쳐 마침내 마지막 단계 에 이 르 렀 다
요청 방법:
https://member.bilibili.com/x/geetest/pre/add
요청 인터페이스: get
링크 중POST
인 자 를https://member.bilibili.com/x/vu/web/add?csrf=[bili_jct]
(처음에 필요 한 쿠키 두 개 중 하나)로 바 꾸 는 것 을 주의 하 십시오.요청 체(JSON):
자체 제작 형식의 영상 요청 체 는 위의 그림 과 약간의 차이 가 있 습 니 다.
전체 코드
Talk is cheap, Show me the code
찌 르 기: https://gitee.com/nbodyfun/bilibili_video_uploader/raw/master/bilibili_up.py
여기 서 Biblibili 동 영상 투고 인터페이스 분석 과 Python 으로 자동 투고 기능 을 실현 하 는 글 을 소개 합 니 다.더 많은 관련 Python 자동 투고 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.