※現在、Twitcastingの仕様変更のためダウンロードできません。
はじめに
Twitcastingの録画を簡単にダウンロードできるサイト・ライブラリがなかったためPythonで書きました。あくまで自分用にテキトーに書いたので再現性・安全性1は保証しません。また実行はColaboratory上で行うことを想定(推奨)しています。していることは録画のURLからm3u8ファイルのURLを取得して、後はffmpegで処理してるだけです。
パッケージのインポート・関数の定義
import re
import time
from urllib import request
from bs4 import BeautifulSoup
def get_m3u8_url(url):
time.sleep(1)
response = request.urlopen(url)
soup = BeautifulSoup(response)
response.close()
wanted_line = ''
for line in str(soup).split('\n'):
if 'data-movie-playlist' in line:
wanted_line = line
break
wanted_url = re.findall('https:[^ ]*m3u8', wanted_line)[0].replace('\\', '')
return wanted_url
def dl_mp4_from_m3u8_url(m3u8_url, output_path=None):
if output_path == None:
try:
output_path = re.findall('v/([0-9]+)-', m3u8_url)[0]+'.mp4'
except:
output_path = 'output.mp4'
print(f'!ffmpeg -i "{m3u8_url}" tmp_output.mp4')
print(f'!mv tmp_output.mp4 "{output_path}"')
return output_path
def get_audio_from_mp4_file(mp4_file_path, output_path=None):
if output_path == None:
output_path = mp4_file_path.replace('.mp4', '_audio.mp4')
print(f'!ffmpeg -i "{mp4_file_path}" -vn -acodec copy tmp_output.mp4')
print(f'!mv tmp_output.mp4 "{output_path}"')
return output_path
def dl_movie_from_url(url, output_path=None):
m3u8_url = get_m3u8_url(url)
output_path = dl_mp4_from_m3u8_url(m3u8_url, output_path=output_path)
return output_path
def dl_audio_from_url(url, output_path=None):
path = dl_movie_from_url(url, output_path=output_path)
output_path = get_audio_from_mp4_file(path, output_path=output_path)
return output_path
使用例
urlにダウンロードしたい録画のURL、pathに保存するファイル名を指定して以下を実行すると実行すべきコマンドが出力される。
url = 'https://twitcasting.tv/twitcasting_jp/movie/189032259'
path = "ツイキャス公式_2015-08-02.mp4"
output_path = dl_movie_from_url(url, output_path=path)
# 音声だけダウンロード
# output_path = dl_audio_from_url(url, output_path=path)
# 出力
# !ffmpeg -i "https://dl01.twitcasting.tv/tc.vod/v/189032259-1612037427-1612066227-00bbfdf5-84e78fc7ace57fe9/fmp4/index.m3u8" tmp_output.mp4
# !mv tmp_output.mp4 "ツイキャス公式_2015-08-02.mp4"
出力されたコマンドを実行するとダウンロードできる。2
!ffmpeg -i "https://dl01.twitcasting.tv/tc.vod/v/189032259-1612038902-1612067702-00bbfdf5-e8edeb25aafecafa/fmp4/index.m3u8" tmp_output.mp4
!mv tmp_output.mp4 "ツイキャス公式_2015-08-02.mp4"