python 에서 빌 리 빌 리 를 대량으로 합성 한 m4s 캐 시 파일 은 MP4 형식 ver 2.5 입 니 다.

이전 버 전에 비해 업데이트 내용:
※내 보 낸 동 영상 은 UP 주 분류 에 따라 저 장 됩 니 다.
※제목 형식 추가
메모:ffmpeg 를 설치 해 야 사용 할 수 있 습 니 다.
ffmpeg 다운로드 주소:https://ffmpeg.zeranoe.com/builds/
ffmpeg 설치 방법:
다운 로드 된 압축 패 키 지 를 풀 고 빈 디 렉 터 리 를 Path 환경 변수 에 추가 하고 Win+R 을 누 르 면 cmd 를 입력 하여 팝 업 상자 에 ffmpeg 를 입력 합 니 다.'내부 나 외부 명령 도 아 닙 니 다'같은 것 이 나타 나 지 않 으 면 설치 에 성공 한 것 입 니 다.
참조 링크:https://www.jb51.net/article/153806.htm
캡 처 실행
 
도구 원본 코드

import os
import json
import random
import time
import requests

#       
def clearSpace(str):
 return str.replace(" ", "").replace(" ", "");


#     Uid Up  
def getUpNameByUid(uid):
 try:
 url = 'https://space.bilibili.com/' + str(uid)
 html = requests.get(url)
 html.encoding = 'UTF-8'
 html = html.text
 index1 = html.find("<title>") + len("<title>")
 index2 = html.find("     ", index1)
 result = html[index1:index2]
 if (result != ""):
  return result
 else:
  return uid
 except Exception:
 return uid

#      
def getTimeStamp():
 t = time.localtime(time.time())
 return str(t.tm_year) + '_' + str(t.tm_mon) + '_' + str(t.tm_mday) + '_' + str(t.tm_hour) + \
  str(t.tm_min) + str(t.tm_sec) + str(random.randint(10, 99))


#      
def correctFileName(name):
 n_list = list(name)
 for i in range(0, len(n_list)):
 index = 0
 for i in n_list:
  if (
   i == '\\' or i == '/' or i == ':' or i == '*' or i == '?' or i == '\"' or i == '<' or i == '>' or i == '|'):
  n_list.pop(index)
  index = index + 1
 return ''.join(n_list)

#   json  
def getVideoName(path):
 f = open(path, encoding='utf-8')
 setting = json.load(f)
 try:
 result = setting['page_data']['download_subtitle'] #            
 except KeyError:
 try:
  result = setting['title'] + '  ' + setting['ep']['index'] + '  ' + setting['ep']['index_title']
 except KeyError:
  try:
  result = setting['title']
  except KeyError:
  result = getTimeStamp()
 return result


def getVideoOwner(path):
 try:
 f = open(path, encoding='utf-8')
 setting = json.load(f)
 return clearSpace(getUpNameByUid(setting['owner_id']))
 except Exception:
 return ""

#       
def getFileList(file_dir):
 #       
 title = []
 owner = []
 videoPath = []
 audioPath = []
 #       
 for root, dirs, files in os.walk(file_dir):
 if ('entry.json' in files):
  title.append(getVideoName(str(root) + '\\entry.json'))
  owner.append(getVideoOwner(str(root) + '\\entry.json'))
 if ('video.m4s' in files and 'audio.m4s' in files):
  videoPath.append(str(root) + '\\video.m4s')
  audioPath.append(str(root) + '\\audio.m4s')
 if (len(title) < len(videoPath)):
  title.append(getTimeStamp())
 if ('0.blv' in files):
  title.pop()
 return [title, owner, videoPath, audioPath]


#   mp4  
def getMP4(title, owner, video_path, audio_path):
 #       
 if not os.path.exists("./output"):
 os.mkdir("./output")
 #     MP4  
 for i in title:
 reName = correctFileName(i)
 #     MP4  
 if not os.path.exists("./output/" + reName + ".mp4"):
  #          
  t_stamp = getTimeStamp()
  #     
  os.system(
  "ffmpeg -i " + video_path[title.index(i)] + " -i " + audio_path[
   title.index(i)] + " -codec copy ./output/" + t_stamp + ".mp4")
  #     Up 
  curOwner = owner[title.index(i)]
  if curOwner != "":
  if not os.path.exists("./output/" + curOwner):
   os.mkdir("./output/" + curOwner)
  os.rename("./output/" + t_stamp + ".mp4", "./output/" + curOwner + "/" + reName + ".mp4")
  else:
  #              
  os.rename("./output/" + t_stamp + ".mp4", "./output/" + reName + ".mp4")
  print("    ...")
  print("  :" + reName)
  print("UP :" + curOwner)
  print("   :" + video_path[title.index(i)])
  print("   :" + audio_path[title.index(i)])
  time.sleep(1)

print("        M4S   ver2.5")
fileDir = str(input("    M4S     :"))
f = getFileList(fileDir)
getMP4(f[0], f[1], f[2], f[3])
print("    ")
컴 파일 된 실행 가능 한 파일(EXE):
링크:https://pan.baidu.com/s/1bLOg6GGJ5Wp7gcW73sXzvg
추출 코드:yqvm
python 대량 합성 bilibili 의 m4s 캐 시 파일 이 MP4 형식 ver 2.5 라 는 글 을 소개 합 니 다.더 많은 python 대량 합성 bilibili 캐 시 파일 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기