I've setup a script to download an mp3 using urllib2 in Python.
url = 'example.com'
req2 = urllib2.Request(url)
response = urllib2.urlopen(req2)
#grab the data
data = response.read()
mp3Name = "song.mp3"
song = open(mp3Name, "w")
song.write(data) # was data2
song.close()
Turns out it was somehow related to me downloading it on Windows or my current Python version. I tested the code on my Ubuntu distro and the mp3 file downloaded perfectly fine... So I just used the simple urllib2.openurl
method and it worked perfect!
To summarize:
urllib2.openurl
in Python on an Ubuntu distro.Does anyone have any clue what was causing the weird issue running the code on my Windows box? I wonder why downloading on Windows mangled the mp3?
Try binary file mode. open(mp3Name, "wb")
You're probably getting line ending translations.
The file is binary, yes. It's the mode that wasn't. When a file is opened, it can be set to read as a text file (this is default). When it does this, it will convert line endings to match the platform. On Windows, line ends are \r\n
In most other places it's either \r
or \n
. This change messes up the data stream.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With