single.php

Python EXTM3U形式(m3u8)で指定されたURLからダウンロードする

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形式からファイルをダウンロードしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です