w0jt
w0jt

Reputation: 55

Download a file from a site (partly written in Javascript) using Python

I'm trying to use Python to download a voice file (mp3) from this site:

I've tried to use mechanize and twill but I haven't got the proper result. I've heard about selenium as well. Anyway, I don't even know if it makes sense technically (mechanize + Javascript).

I was looking for an answer and finally I've found this solution.

It seems like a similar problem to mine but I have absoutely no idea what should I put instead of the 4th line.

If you have any proposition (maybe completely different to mine) I'll be glad to see it.

Upvotes: 2

Views: 691

Answers (1)

redShadow
redShadow

Reputation: 6777

(Moving to answer to get more space)

Thanks for pointing me to selenium, I didn't know that and it looks cool; anyways: I had a quick look and the js seems to fire an ajax request, that yields no apparent result -- I guess the audio transfer is done some way in the background via flash or so; anyways: what about using the service they offer: developer.ivona.com instead of trying hacking your webservice out of the demo interface..?

Anyways, here it is the hacked web-service you asked for:

This is the URL you want to GET:

"http://www.ivona.com/voicetest.php?rtr=1&t2r=%(the_text)s..&v2r=dXNfc2FsbGk.&lang=us" % dict(
    the_text=base64.b64encode("Hello, world!"),
    the_voice=base64.b64encode("us_salli"),
    )

You can test that with, for example, mplayer:

mplayer "http://www.ivona.com/voicetest.php?rtr=1&t2r=SGVsbG8sIHdvcmxkIQ==..&v2r=dXNfc2FsbGk.&lang=us"

And, from Python, use urllib to retrieve and store somewhere.

Beware that, since this is an unauthorized use, you might get blocked / incur in legal issues / etc. -- don't use in a production application!

Upvotes: 1

Related Questions