Загрузка аудиофайла с веб-сайта

audio c# download html-agility-pack 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 , где сайт выводит идентификатор в теге с идентификатором идентификатора #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
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow