たびとの旅路 ~電脳砂漠の冒険譚~

フロッピー頼りに歩き、クラウドの地平を見つめる今日まで。見つけたオアシス、迷い込んだ砂の迷宮、全てこの羊皮紙に。

第一章:幻の神器『TubeEater』追想録 ~旅の始まり~

旅の途中、ふと、かつて記した古い羊皮紙を見つけた。忘れないうちに、その記憶をここに書き留めておくとしよう。

久しぶりに、C#という名の魔法で、新たな神器を創り出そうと思った。周りの者に「どんな道具が欲しいか?」と尋ねると、一つの声が返ってきた。「YouTubeから、もっと簡単にビデオや音楽をダウンロードしたい」と。

世に、その手の魔法の道具は数多く存在する。今更、私が創る意味などあるのか? しかし、仕事でAIアプリを扱い、ビデオという魂に触れていた私は、その知識を活かせるかもしれない、という単純な好奇心に突き動かされた。 これは、.NET 6とWPFという、現代の魔法体系を使い、お手軽YouTubeダウンローダー「TubeEater」という名の、幻の神器を錬成する、その全ての始まりの記録である。

この羊皮紙のあらまし

この羊皮紙が導く者

  • かつて、YouTubeからビデオをダウンロードするという、禁断の夢を見た者
  • C#という名の魔法で、YouTubeという巨大な海と対話する術に、興味がある者
  • ビデオだけでなく、オーディオという名の魂の響きにも、興味を抱く者

第一の儀式:魂を釣り上げる、魔法の釣り竿を探す

まずは、YouTubeという巨大な情報の海から、目的の宝(ビデオやオーディオ)を釣り上げるための、魔法の釣り竿を探さねばならない。 NuGetという名の宝物庫を探索した結果、私は「VideoLibrary (libvideo)」という名の、強力な釣り竿を見つけ出した。

GitHub - omansak/libvideo: A lightweight .NET library to download YouTube videos.

その使い方は、驚くほど簡単だった。

using VideoLibrary;

void SaveVideoToDisk(string link)
{
    var youTube = YouTube.Default; // 釣り竿を構える
    var video = youTube.GetVideo(link); // 狙いを定め、釣り上げる
    File.WriteAllBytes(@"C:\" + video.FullName, video.GetBytes()); // 獲物を地上に引き上げる
}

しかも、GetAllVideosAsyncという、非同期の投網漁まで用意されている。これなら、GUIという名の船の上で使っても、船が固まることはあるまい。

第二の儀式:魂の響きを、新たな器へ(AACからMP3への変換)

この釣り竿で獲れるオーディオは、AACという名の美しい水晶だった。しかし、多くの旅人が求めるのは、より広く使われているMP3という名の、頑丈な器だ。 ならば、AACの水晶から、MP3の器へと、魂の響きを移し替える錬金術が必要となる。

この難解な儀式を可能にするのが、「NAudio」という名の、偉大なる魔導書だ。 その古文書はあまりに難解で、私は海外のサイトという名の砂漠を彷徨い、試行錯誤の末、ついに変換の呪文を見つけ出した。

var reader = new NAudio.Wave.MediaFoundationReader(aacPath);
var mediaType = NAudio.Wave.MediaFoundationEncoder.SelectMediaType(AudioSubtypes.MFAudioFormat_MP3, ...);
using var encoder = new NAudio.Wave.MediaFoundationEncoder(mediaType);
encoder.Encode(mp3Path, reader);

この呪文を唱えれば、AACの魂は、MP3という新たな器へと、その姿を変えるのだ。

羊皮紙を巻く前に

「VideoLibrary」と「NAudio」。 二つの強力な魔法を手に入れたことで、私はついに、幻の神器「TubeEater」を創り出すための、エンジンのような、核となる力を手に入れた。

この二つの魔法を軸に、私の冒険は、GUIという名の美しい鎧を鍛え上げる、次なるステージへと進んでいく。

この羊皮紙が、同じように自らの手で、夢の道具を創り出そうと挑む、未来の冒険者の、最初の道標となることを願う。

おっと、どうやら相棒が腹を空かせたようだ。今日はこのへんで筆を置くとしよう。

砂漠で見つけた魔法のランプ

ラクダの独り言

ご主人が「久しぶりに、新しい神器を創るぞ!」とか言って、やけに張り切っている。なんでも、歌や映像を、情報の海から釣り上げる、便利な釣り竿を創るらしい。俺に言わせりゃ、そんなもんより、砂漠のど真ん中でも冷たい水が湧き出る、魔法の水筒でも創ってくれた方が、よっぽどありがたいんだがな。まったく、人間の考えることはよく分からん。やれやれだぜ。