ほったからし投資

良い子も悪い子も真似しないこと。米国株式投資なんてやめておきなさい。

m3u8の中身をwgetに渡してローカルに保存するコード書いた

このエントリーをはてなブックマークに追加

帰宅中に突然思いついたので昨日の夜に書いたコード。

とあるエロサイトは動画ファイルがm3u8で記述されており、その中身をwgetに渡しまくって、ローカルのパスを記述したm3u8を再構築するためのコードの一部。

下記のコードは、m3u8を入力とし、環境パスに通っているwgetで動画ファイルをダウンロードしたのち、新しいm3u8ファイルを構築する。

avgleとかにもhtmlの構文解析する能力があれば有効。

boost::filesystem::path file = "ファイル名.m3u8";
std::string name = file.stem().string();
boost::filesystem::create_directory(name);
boost::filesystem::ifstream input(file);
std::string line;
boost::filesystem::ofstream m3u8(out_name + "_local.m3u8");
while (getline(input, line))
{
    if (line.find("https") != line.npos)
    {
        std::string last_element(line.substr(line.rfind("/") + 1));
        std::string command = std::string("wget ") + "--no-check-certificate \"" +line + "\"" + " -O " + name + "/" + last_element;
        system(command.c_str());
        m3u8 << name + "/" + last_element << std::endl;
    }
    else
    {
        m3u8 << line << std::endl;
    }
}