Télécharger un fichier audio depuis un site web

audio c# download html-agility-pack web

Question

Ce que j'essaie de faire, c'est aussi télécharger un fichier audio à partir d'un site Web. Le fichier audio est lu une fois que vous avez cliqué sur le petit cache-oreilles et un son est déclenché. Je me demandais s'il était possible de trouver et de télécharger le son.

Ma tentative d'essayer de le trouver:

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 :(
        }

    }

Image de ce que je cherche à obtenir et lien vers le site Web

Toute aide est appréciée :)

Réponse acceptée

Tout d’abord, si vous n’avez pas l’autorisation de l’auteur du site pour le faire, vous ne devriez probablement pas le faire.

Maintenant, si vous avez l'autorisation de et une raison correspond le valide pour le faire; vous pouvez inspecter la source et constater qu'aucune fonction apparente n'est associée à l'image - et que les images ne reproduisent pas le son. Donc, la fonctionnalité est probablement contrôlée avec JavaScript.

Alors, vous commencez à regarder à travers le JavaScript, à la recherche de choses qui s'attachent à l'élément d'intérêt. Vous devriez trouver ce code dans pokedex.js :

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

Ainsi, lorsque vous cliquez sur l'image, une balise embed est ajoutée au balisage. En regardant la balise src, vous pouvez en conclure que les fichiers se trouvent dans /pokedex/images/cries/<id>.mp3 , où le site /pokedex/images/cries/<id>.mp3 l'ID dans une balise avec l'identificateur ID #identifier .

À partir de là, il vous suffit de trouver l'ID de chaque son dont vous avez besoin et de le télécharger. Ceci est fait en téléchargeant le balisage HTML, en recherchant l'identifiant DIV et en l'insérant dans le modèle d'URL comme indiqué ci-dessus:

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

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow