ウェブサイトからオーディオファイルをダウンロードする

audio c# download html-agility-pack web

質問

私がやっていることは、あまりにもWebサイトからオーディオファイルをダウンロードすることです。小さなイヤーマフをクリックすると、オーディオファイルが再生され、再生するサウンドがトリガーされます。サウンドを見つけてダウンロードすることが可能かどうか疑問に思っていました。

それを見つけようとする私の試み:

public void grabAudio()
    {
        string s = "http://pokedream.com/pokedex/pokemon/bulbasaur";

        HtmlWeb hw = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = hw.Load(s);

        var audio = doc.DocumentNode.SelectNodes("//div[@class='triggers']//img#pokecry-trigger")[0];
        if (doc.DocumentNode.SelectNodes("//div[@class='triggers']//img#pokecry-trigger")[0] != null)
        {
            //I have no idea what im doing :(
        }

    }

私が得ようとしているものの写真 とウェブサイトへのリンク

任意のすべてのヘルプは高く評価されています:)

受け入れられた回答

まず、あなたがサイトの作成者からこれを行うための権限を持っていない場合、おそらくそれを行うべきではありません。

さて、もしあなた適切な許可とこれを行う正当な理由を持っていれば;ソースを調べると、イメージに明白な機能がないことがわかります。イメージはサウンドを再生しません。したがって、機能はJavaScriptによって制御される可能性があります。

だから、あなたは関心のある要素に付随するものを探して、JavaScriptを調べ始める。このコードはpokedex.jsます:

$('#pokecry-trigger').click(function() {
    $('#pokecry').html('<embed src="/pokedex/images/cries/' + $('#identifier').text() + '.mp3" />');
  });

画像をクリックすると、 embedタグがマークアップに追加されます。 srcタグを見ると、ファイルが/pokedex/images/cries/<id>.mp3にあるという結論に達することができます。ここで、サイトはID #identifier持つタグにIDを出力します。

そこから、必要な各サウンドのIDを見つけてダウンロードするだけです。これは、HTMLマークアップをダウンロードし、識別子DIVを見つけて、上記のようにURLテンプレートに挿入することによって行われます。

string id = "001"; // found in the markup
string url = String.Format("http://pokedream.com/pokedex/images/cries/{0}.mp3", id);
using(var cli = new System.Net.WebClient()) 
{
    var mp3Data = cli.DownloadData(url);
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ