EXTM3U形式(拡張子 .m3u8)で指定されたURLからコンテンツをダウンロードする場合の手順を備忘録的に投稿しておきます。
EXTM3U形式ファイル
標準の拡張子は(.m3u8)ですが、ダウンロードする環境によっては別の拡張子になっている場合もあります。
メモ帳などで開いて、先頭行に[#EXTM3U]が記載されていれば「EXTM3U」形式です。古いファイル形式の場合は無い場合もあります。
EXTM3U形式は、複数の動画や音声形式のファイルをリスト化したもので、楽曲のプレイリストのような役目を果たします。
EXTM3Uファイルからダウンロード
Pythonを使って、「EXTM3U」形式の内容を読み取って、URLからダウンロードしてファイルを保存できます。
ファイルを1行読み取って、先頭に “#” が無い場合にはURLからダウンロードして保存するだけのコードです。
import requests
filepath='C:\\Users\\t_nak\\Downloads\\'
srcf = open('C:\\Users\\t_nak\\Downloads\\Source.m3u8', 'r')
datalist = srcf.readlines()
for data in datalist:
if data.startswith('#') == False:
url = data.replace('\n', '')
last_name = url[url.rfind('/') + 1:]
urlData = requests.get(url).content
dlf = open(filepath + last_name ,mode='wb')
dlf.write(urlData)
dlf.close()
srcf.close()
EXTM3Uファイルを編集
このままだと、断片化されたファイルをダウンロードするだけなので、EXTM3Uを編集してみます。
先回と同様にPythonでスクリプトを作成。
import requests
filepath='C:\\Users\\t_nak\\Downloads\\'
srcf = open('C:\\Users\\t_nak\\Downloads\\Source.m3u8', 'r')
distf = open('C:\\Users\\t_nak\\Downloads\\Destination.m3u8', 'w')
datalist = srcf.readlines()
for data in datalist:
if data.startswith('#') == False:
url = data.replace('\n', '')
last_name = url[url.rfind('/') + 1:]
urlData = requests.get(url).content
dlf = open(filepath + last_name ,mode='wb')
dlf.write(urlData)
distf.write(filepath + last_name + '\n')
dlf.close()
else:
distf.write(data)
srcf.close()
distf.close()
編集用のファイルを作成して、1行読み取ってURLからダウンロードした場合は、保存先のパスに変更して、新しいEXTM3U形式のファイルに編集します。
まとめ
今回はPythonで、EXTM3U形式(拡張子 .m3u8)で指定されたURLからコンテンツをダウンロードする場合の手順について書きました。
Pythonを利用するとC#などアプリとしてビルドする必要もなく簡単にファイルをダウンロードするようなコードを試すことが可能です。
EXTM3U形式からファイルをダウンロードしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。