使用pyCURL下载并获取mp3文件内容
我正在尝试从下载的文件中获取内容。如果我把文件保存为 .mp3 格式,它甚至可以播放。但是当我获取内容时,里面有很多“可怕”的字符,比如 (û dInfo.ð"""".....::::EEEEEQQQQ]]]]]hhhhttttt¢¢¢¢®®®®®ººººÅÅÅÅÅÑÑÑÑÝÝÝÝÝèèèèôôôôôÿÿÿÿ:LAME3.96r´.l4 $N .ð]Ú5ÿû d Ô|c½i4BGçá"ʹU§ a0pTìÌ xà0 +£â?=yÃkðý§ýÛußAfØÿ®ÙBDgøQÊ0£a=¹ OTG@ )É ÄN¨hÎDMWQÛ0wmrÛA MdCeÞ9:!b>¢~Ú½´&ÞýÛ/¿h·{þ>Åï²{·w±Ä,ÅõtewßS©?Ï'è! p@lHåÀ1üoù!c Aæø?Íæ0#äzôüÿsì§òp}o¾Ðn¨:Ð À@1®-0¦ ÐËÛþÐ褹À~! êõCÄâr+Ççú!ɱA3uå^O¦I÷'ív(µ~ÉNÎ~8æÙøÕ+X
y¬gt}êÑ3xk¿½ÞZ÷]ë^ÖÅ¢}åýíªn¾?µ)_{×ÇÎÿÝ>ÿzÞ>wÿß¾5﬿»ü}z}kDtwk)Ó=Ú[ÿzfXÞµ%q Gŧ~(°Ë%¬ÇºJùÝÇá3JBĸÑâ·Ê!W²qll°¡WÎÚRÕ¨âU0BD$F$ÅÕÀèûÏ*©l^Î¥¢3ëÿû¢d¬LY~s`AJ@Á%ù 4¨ËÍ;3sB½²ý»é¨murz{S0Ühà @Qö0Â(ÚFíê9(øi¸ò½¸~äÌ]ï¼a b°±±§Rióÿ÷·±O?Ã?:3£M20 /ÿÿÿçßîzöDIþï_ÿÿÿÿú±c>a¾¨2e ÁÙ£¯ÿÿÿÿÿýþÿÿÿÿ ![]h1EOFðKçYwA%ÜSԾó":9Ç5 RþèvC?7òEWÔ´üJdzcKÿÿTdp Lï¬DÆØ£Rm7£Ww·´ÅUeé¢hÇRî÷ @\uä«À#¿6òXµËÖÿ+U Oó}å-) 这是我的代码:
fp = open('audio.txt', "wb")
ch = curl.Curl()
ch.setopt(curl.URL, url)
ch.setopt(curl.TRANSFERTEXT, True)
ch.setopt(curl.AUTOREFERER, True)
ch.setopt(curl.FOLLOWLOCATION, True)
ch.setopt(curl.POST, False)
ch.setopt(curl.HTTPHEADER, ['REMOTE_ADDR:' + self.ip, 'HTTP_X_FORWARDED_FOR:' + self.ip])
ch.setopt(curl.USERAGENT, self.useragent)
ch.setopt(curl.CONNECTTIMEOUT, self.connect_timeout)
ch.setopt(curl.TIMEOUT, self.curl_timeout)
ch.setopt(curl.SSL_VERIFYPEER, False)
ch.setopt(curl.COOKIE, "JSESSIONID=" + sessionid)
ch.setopt(curl.WRITEDATA, fp)
try:
result = ch.perform()
except curl.error as error:
#errno, errstr = error
ch.close()
return 'Ошибка считывания mp3 файла с сервиса ФМС.'
fp.close()
with open('audio.txt', 'r', encoding = "ISO-8859-1") as content_file:
content_file.seek(0)
content = content_file.read()
return content
我该如何获取正常的字符(使用UTF8编码)呢?谢谢。
1 个回答
试着去掉 ch.setopt(curl.TRANSFERTEXT, True) 这一行,因为 mp3 文件是二进制格式的。
然后把 fp = open('audio.txt', "wb") 改成 fp = open('audio.mp3', "wb"),这样你就能把正确的 mp3 文件保存到磁盘上了。
接下来可以试试下面的代码:
import mp3play
filename = r'audio.mp3'
mp3 = mp3play.load(filename)
mp3.play()
你需要先安装 mp3play 这个包。