回复音乐消息
| 135 | |
| 136 | |
| 137 | class MusicReply(WechatReply): |
| 138 | """ |
| 139 | 回复音乐消息 |
| 140 | """ |
| 141 | TEMPLATE_THUMB = u""" |
| 142 | <xml> |
| 143 | <ToUserName><![CDATA[{target}]]></ToUserName> |
| 144 | <FromUserName><![CDATA[{source}]]></FromUserName> |
| 145 | <CreateTime>{time}</CreateTime> |
| 146 | <MsgType><![CDATA[music]]></MsgType> |
| 147 | <Music> |
| 148 | <Title><![CDATA[{title}]]></Title> |
| 149 | <Description><![CDATA[{description}]]></Description> |
| 150 | <MusicUrl><![CDATA[{music_url}]]></MusicUrl> |
| 151 | <HQMusicUrl><![CDATA[{hq_music_url}]]></HQMusicUrl> |
| 152 | <ThumbMediaId><![CDATA[{thumb_media_id}]]></ThumbMediaId> |
| 153 | </Music> |
| 154 | </xml> |
| 155 | """ |
| 156 | |
| 157 | TEMPLATE_NOTHUMB = u""" |
| 158 | <xml> |
| 159 | <ToUserName><![CDATA[{target}]]></ToUserName> |
| 160 | <FromUserName><![CDATA[{source}]]></FromUserName> |
| 161 | <CreateTime>{time}</CreateTime> |
| 162 | <MsgType><![CDATA[music]]></MsgType> |
| 163 | <Music> |
| 164 | <Title><![CDATA[{title}]]></Title> |
| 165 | <Description><![CDATA[{description}]]></Description> |
| 166 | <MusicUrl><![CDATA[{music_url}]]></MusicUrl> |
| 167 | <HQMusicUrl><![CDATA[{hq_music_url}]]></HQMusicUrl> |
| 168 | </Music> |
| 169 | </xml> |
| 170 | """ |
| 171 | |
| 172 | def __init__(self, message, title='', description='', music_url='', hq_music_url='', thumb_media_id=None): |
| 173 | title = title or '' |
| 174 | description = description or '' |
| 175 | music_url = music_url or '' |
| 176 | hq_music_url = hq_music_url or music_url |
| 177 | super(MusicReply, self).__init__(message=message, title=title, description=description, |
| 178 | music_url=music_url, hq_music_url=hq_music_url, thumb_media_id=thumb_media_id) |
| 179 | |
| 180 | def render(self): |
| 181 | if self._args['thumb_media_id']: |
| 182 | return MusicReply.TEMPLATE_THUMB.format(**self._args) |
| 183 | else: |
| 184 | return MusicReply.TEMPLATE_NOTHUMB.format(**self._args) |
| 185 | |
| 186 | |
| 187 | class Article(object): |