# Copyright (C) 2001-2007 Python Software Foundation# Author: Anthony Baxter# Contact: email-sig@python.org"""Class representing audio/* type MIME documents."""__all__ = ['MIMEAudio']import sndhdrfrom io import BytesIOfrom email import encodersfrom email.mime.nonmultipart import MIMENonMultipart_sndhdr_MIMEmap = {'au' : 'basic','wav' :'x-wav','aiff':'x-aiff','aifc':'x-aiff',}# There are others in sndhdr that don't have MIME types. :(# Additional ones to be added to sndhdr? midi, mp3, realaudio, wma??def _whatsnd(data):"""Try to identify a sound file type.sndhdr.what() has a pretty cruddy interface, unfortunately. This is whywe re-do it here. It would be easier to reverse engineer the Unix 'file'command and use the standard 'magic' file, as shipped with a modern Unix."""hdr = data[:512]fakefile = BytesIO(hdr)for testfn in sndhdr.tests:res = testfn(hdr, fakefile)if res is not None:return _sndhdr_MIMEmap.get(res[0])return Noneclass MIMEAudio(MIMENonMultipart):"""Class for generating audio/* MIME documents."""def __init__(self, _audiodata, _subtype=None,_encoder=encoders.encode_base64, *, policy=None, **_params):"""Create an audio/* type MIME document._audiodata is a string containing the raw audio data. If this datacan be decoded by the standard Python `sndhdr' module, then thesubtype will be automatically included in the Content-Type header.Otherwise, you can specify the specific audio subtype via the_subtype parameter. If _subtype is not given, and no subtype can beguessed, a TypeError is raised._encoder is a function which will perform the actual encoding fortransport of the image data. It takes one argument, which is thisImage instance. It should use get_payload() and set_payload() tochange the payload to the encoded form. It should also add anyContent-Transfer-Encoding or other headers to the message asnecessary. The default encoding is Base64.Any additional keyword arguments are passed to the base classconstructor, which turns them into parameters on the Content-Typeheader."""if _subtype is None:_subtype = _whatsnd(_audiodata)if _subtype is None:raise TypeError('Could not find audio MIME subtype')MIMENonMultipart.__init__(self, 'audio', _subtype, policy=policy,**_params)self.set_payload(_audiodata)_encoder(self)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。