From e8597d9c2db8b11c96f8fb81ba318584c4282bff Mon Sep 17 00:00:00 2001 From: Youfou Date: Tue, 28 Mar 2017 01:37:32 +0800 Subject: [PATCH] v0.3.3 1. temporarily fix itchat version requirement to 1.2.32, to avoid some instability; 2. remove the special info about aliyun pypi mirror; 3. adjust some emoji selection for `sync_message_in_groups`; 4. fix that `Message.url` was not unescaped; 5. add `MAP` message support for `Message.forward()`. --- README.rst | 11 +++++----- docs/index.rst | 11 +++++----- requirements.txt | 2 +- setup.py | 2 +- wxpy/__init__.py | 2 +- wxpy/api/messages/message.py | 15 ++++++++++++- wxpy/ext/sync_message_in_groups.py | 35 ++++++++++++++++-------------- 7 files changed, 48 insertions(+), 30 deletions(-) diff --git a/README.rst b/README.rst index 7252d01..81ce482 100644 --- a/README.rst +++ b/README.rst @@ -37,15 +37,16 @@ wxpy: 用 Python 玩微信 pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy -针对 **阿里云主机** 用户的特别说明 +.. + 针对 **阿里云主机** 用户的特别说明 - 阿里云主机默认使用自家的 PYPI 镜像,但截止目前 (2017-3-26) 已滞后长达 33 天!已有不少用户因此安装了滞后的版本,导致与项目文档产生偏差而无法使用。 + 阿里云主机默认使用自家的 PYPI 镜像,但截止目前 (2017-3-26) 已滞后长达 33 天!已有不少用户因此安装了滞后的版本,导致与项目文档产生偏差而无法使用。 - 因此,强烈建议阿里云主机用户采用豆瓣 PYPI 镜像进行安装 (或替换为 PYPI 官方源):: + 因此,强烈建议阿里云主机用户采用豆瓣 PYPI 镜像进行安装 (或替换为 PYPI 官方源):: - pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy + pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy - *以上说明会在阿里云 PYPI 镜像同步问题修复后移除。* + *以上说明会在阿里云 PYPI 镜像同步问题修复后移除。* 简单上手 diff --git a/docs/index.rst b/docs/index.rst index 155b2c0..a5a3e0a 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -43,15 +43,16 @@ wxpy: 用 Python 玩微信 pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy -针对 **阿里云主机** 用户的特别说明 +.. + 针对 **阿里云主机** 用户的特别说明 - 阿里云主机默认使用自家的 PYPI 镜像,但截止目前 (2017-3-26) 已滞后长达 33 天!已有不少用户因此安装了滞后的版本,导致与项目文档产生偏差而无法使用。 + 阿里云主机默认使用自家的 PYPI 镜像,但截止目前 (2017-3-26) 已滞后长达 33 天!已有不少用户因此安装了滞后的版本,导致与项目文档产生偏差而无法使用。 - 因此,强烈建议阿里云主机用户采用豆瓣 PYPI 镜像进行安装 (或替换为 PYPI 官方源):: + 因此,强烈建议阿里云主机用户采用豆瓣 PYPI 镜像进行安装 (或替换为 PYPI 官方源):: - pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy + pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy - *以上说明会在阿里云 PYPI 镜像同步问题修复后移除。* + *以上说明会在阿里云 PYPI 镜像同步问题修复后移除。* 简单上手 diff --git a/requirements.txt b/requirements.txt index c49c419..c7f0d97 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -itchat>=1.3.1 +itchat==1.2.32 requests diff --git a/setup.py b/setup.py index c3e26e0..67be508 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ ] }, install_requires=[ - 'itchat>=1.3.1', + 'itchat==1.2.32', 'requests', ], url='https://github.com/youfou/wxpy', diff --git a/wxpy/__init__.py b/wxpy/__init__.py index 3648dd8..38f795c 100644 --- a/wxpy/__init__.py +++ b/wxpy/__init__.py @@ -54,7 +54,7 @@ def reply_my_friend(msg): from .utils import dont_raise_response_error, embed, ensure_one, mutual_friends __title__ = 'wxpy' -__version__ = '0.3.2' +__version__ = '0.3.3' __author__ = 'Youfou' __license__ = 'MIT' __copyright__ = '2017, Youfou' diff --git a/wxpy/api/messages/message.py b/wxpy/api/messages/message.py index 1d1c682..19d6152 100644 --- a/wxpy/api/messages/message.py +++ b/wxpy/api/messages/message.py @@ -1,3 +1,4 @@ +import html import os import tempfile from datetime import datetime @@ -54,6 +55,9 @@ def __init__(self, raw, bot): self.voice_length = self.raw.get('VoiceLength') self.url = self.raw.get('Url') + if isinstance(self.url, str): + self.url = html.unescape(self.url) + self.id = self.raw.get('NewMsgId') self.text = None @@ -211,11 +215,15 @@ def forward(self, chat, prefix=None, suffix=None, raise_for_unsupported=False): * 分享 (`SHARING`) - * 会被转化为 `标题 + 链接` 形式的纯文本 + * 会转化为 `标题 + 链接` 形式的文本消息 * 语音 (`RECORDING`) * 会以文件方式发送 + + * 地图 (`MAP`) + + * 会转化为 `位置名称 + 地图链接` 形式的文本消息 :param Chat chat: 接收转发消息的聊天对象 :param str prefix: 转发时增加的 **前缀** 文本,原消息为文本时会自动换行 @@ -292,6 +300,11 @@ def raise_properly(text): elif self.type is SHARING: return wrapped_send('msg', '{}\n{}'.format(self.text, self.url)) + elif self.type is MAP: + return wrapped_send('msg', '{}: {}\n{}'.format( + self.location['poiname'], self.location['label'], self.url + )) + elif self.type is ATTACHMENT: # noinspection SpellCheckingInspection diff --git a/wxpy/ext/sync_message_in_groups.py b/wxpy/ext/sync_message_in_groups.py index 6d55496..b74da32 100644 --- a/wxpy/ext/sync_message_in_groups.py +++ b/wxpy/ext/sync_message_in_groups.py @@ -7,22 +7,21 @@ from wxpy.api.chats import FEMALE, MALE emojis = \ - '😃🐻🍔⚽🌇💡🔣🎌💌🙈🙉🙊💥💦💨💫🐵🐒🦍🐶🐕🐩🐺🦊🐱🐈🦁🐯🐅🐆🐴🐎🦄🐮🐂🐃🐄🐷🐖🐗' \ - '🐽🐏🐑🐐🐪🐫🐘🦏🐭🐁🐀🐹🐰🐇🐿🦇🐨🐼🐾🦃🐔🐓🐣🐤🐥🐦🐧🕊🦅🦆🦉🐸🐊🐢🦎🐍🐲🐉🐳🐋' \ - '🐬🐟🐠🐡🐙🐚🦀🦐🦑🐌🦋🐛🐜🐝🐞🕷🕸🦂💐🌸💮🏵🌹🥀🌺🌻🌼🌷🌱🌲🌳🌴🌵🌾🌿☘🍀🍁🍂🍃' \ - '🍄🌰🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜☀🌝🌞⭐🌟🌠☁⛅⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌈☂☔⚡' \ - '❄☃⛄☄🔥💧🌊🎄✨🎋🎍🤷😂❤😍😊🤔😘🙄📲🚻👀💻✊📝🎇🎂🛍🎅🎥👨💪🎓🎃🕎🕉👩🎊🏊👑' \ - '☪🏈💘👰🎿🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🥝🍅🥑🍆🥔🥕🌽🌶🥒🥜🍞🥐🥖🥞🧀🍖🍗🥓🍟🍕🌭🌮' \ - '🌯🍳🍲🥗🍿🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🍦🍧🍨🍩🍪🍰🍫🍬🍭🍮🍯🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻' \ - '🥂🥃🍽🍴🥄👾🕴🏇⛷🏂🏌🏄🚣⛹🏋🚴🚵🤸🤼🤽🤾🤹🎪🎭🎨🎰🎗🎟🎫🎖🏆🏅🥇🥈🥉⚾🏀🏐🏉🎾' \ - '🎱🎳🏏🏑🏒🏓🏸🥊🥋🎯⛳⛸🎣🎽🎮🎲🎼🎤🎧🎷🎸🎹🎺🎻🥁🎬🏹🏎🏍🗾🏔⛰🌋🗻🏕🏖🏜🏝🏞🏟' \ - '🏛🏗🏘🏙🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽⛪🕌🕍⛩🕋⛲⛺🌁🌃🌄🌅🌆🌉🌌🎠🎡🎢' \ - '🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚚🚛🚜🚲🛴🛵🚏🛤⛽🚨🚥🚦🚧⚓⛵🚤' \ - '🛳⛴🛥🚢✈🛩🛫🛬💺🚁🚟🚠🚡🛰🚀⛱🎆🎑💴💵💶💷🗿🛂🛃🛄🛅☠🛀🛌💣🕳📿💎🔪🏺🗺💈🖼🛎' \ - '🚪🛏🛋🚽🚿🛁⌛⏳⌚⏰⏱⏲🕰🌡🎈🎉🎎🎏🎐🎀🎁🕹📯🎙🎚🎛📻📱☎📞📟📠🔋🔌🖥🖨⌨🖱🖲💽' \ - '💾💿📀🎞📽📺📷📸📹📼🔍🔎🔬🔭📡🕯🔦🏮📔📕📖📗📘📙📚📓📃📜📄📰🗞📑🔖🏷💰💸💳✉📧📨' \ - '📩📤📥📦📫📪📬📭📮🗳✏✒🖋🖊🖌🖍📁📂🗂📅📆🗒🗓📇📈📉📊📋📌📍📎🖇📏📐✂🗃🗄🗑🔒🔓' \ - '🔏🔐🔑🗝🔨⛏⚒🛠🗡⚔🔫🛡🔧🔩⚙🗜⚗⚖🔗⛓💉💊🚬⚰⚱🛢🔮🚰🏁🚩🏴🏳' + '😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚🙂🤗🤔😐😑😶🙄😏😣😥😮🤐😯' \ + '😪😫😴😌🤓😛😜😝🤤😒😓😔😕🙃🤑😲😇🤠🤡🤥😺😸😹😻😼😽🙀😿😾🙈' \ + '🙉🙊🌱🌲🌳🌴🌵🌾🌿🍀🍁🍂🍃🍇🍈🍉🍊🍋🍌🍍🍏🍐🍑🍒🍓🥝🍅🥑🍆🥔' \ + '🥕🌽🥒🍄🥜🌰🍞🥐🥖🥞🧀🍖🍗🥓🍔🍟🍕🌭🌮🌯🥙🥚🍳🥘🍲🥗🍿🍱🍘🍙' \ + '🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯🍼🥛☕🍵🍶🍾🍷🍸' \ + '🍹🍺🍻🥂🥃🍴🥄🔪🏺🌍🌎🌏🌐🗾🌋🗻🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯' \ + '🏰💒🗼🗽⛪🕌🕍🕋⛲⛺🌁🌃🌄🌅🌆🌇🌉🌌🎠🎡🎢💈🎪🎭🎨🎰🚂🚃🚄🚅' \ + '🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚲🛴🛵🚏⛽🚨' \ + '🚥🚦🚧⚓⛵🛶🚤🚢🛫🛬💺🚁🚟🚠🚡🚀🚪🛌🚽🚿🛀🛁⌛⏳⌚⏰🌑🌒🌓🌔' \ + '🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞⭐🌟🌠⛅🌀🌈🌂☔⚡⛄🔥💧🌊🎃🎄🎆🎇✨🎈🎉' \ + '🎊🎋🎍🎎🎏🎐🎑🎁🎫🏆🏅🥇🥈🥉⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋' \ + '🥅🎯⛳🎣🎽🎿🎮🎲🃏🎴🔇🔈🔉🔊📢📣📯🔔🔕🎼🎵🎶🎤🎧📻🎷🎸🎹🎺🎻' \ + '🥁📱📲📞📟📠🔋🔌💻💽💾💿📀🎥🎬📺📷📸📹📼🔍🔎🔬🔭📡💡🔦📔📕📖' \ + '📗📘📙📚📓📒📃📜📄📰📑🔖💰💴💵💶💷💸💳💱💲📧📨📩📤📥📦📫📪📬' \ + '📭📮📝💼📁📂📅📆📇📋📌📍📎📏📐🔒🔓🔏🔐🔑🔨🔫🏹🔧🔩🔗🚬🗿🔮🛒' def assign_emoji(chat): @@ -71,6 +70,10 @@ def sync_message_in_groups( * 语音 (`RECORDING`) * 会以文件方式发送 + + * 地图 (`MAP`) + + * 会转化为 `位置名称 + 地图链接` 形式的文本消息 :param Message msg: 需同步的消息对象 :param Group groups: 需同步的群列表