Download di un file audio da un sito Web

audio c# download html-agility-pack web

Domanda

Quello che sto cercando di fare è anche scaricare un file audio da un sito web. Il file audio viene riprodotto quando si fa clic sulle piccole cuffie e si attiva un suono. Mi stavo chiedendo se è possibile trovare e scaricare il suono.

Il mio tentativo di cercare di trovarlo:

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

    }

Immagine di ciò che sto cercando di ottenere e Link al sito web

Qualsiasi aiuto è apprezzato :)

Risposta accettata

Prima di tutto, se non si dispone delle autorizzazioni dell'autore del sito per farlo, probabilmente non si dovrebbe farlo.

Ora, se si ha il permesso appropriata e un motivo valido per farlo; è possibile ispezionare la fonte e vedere che non ci sono funzioni apparenti associate all'immagine - e le immagini non riproducono il suono. Quindi la funzionalità è probabilmente controllata con JavaScript.

Quindi, inizi a guardare attraverso il codice JavaScript, cercando elementi che si attengono all'elemento di interesse. Dovresti trovare questo codice in pokedex.js :

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

Quindi quando fai clic sull'immagine, un tag embed viene aggiunto al markup. Osservando il tag src, puoi giungere alla conclusione che i file sono in /pokedex/images/cries/<id>.mp3 , dove il sito genera l'ID in un tag con ID #identifier .

Da lì in poi è sufficiente trovare l'ID per ogni suono di cui hai bisogno e scaricarlo. Questo viene fatto scaricando il codice HTML, trovando l'identificatore DIV e inserendolo nel modello di URL come sopra indicato:

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché