ホームページ  >  記事  >  バックエンド開発  >  Python を使用して WeChat で遊ぶ方法

Python を使用して WeChat で遊ぶ方法

PHP中文网
PHP中文网オリジナル
2017-06-21 16:26:021641ブラウズ

コードはここにあります: wzyonggege/python-wechat-itchat

ワードクラウドはミニオンの画像に置き換えることができます

------ ---------- -------------------------------------- --------------------------------------

0.最近

WeChatをプレイするいくつかの方法を研究しました。WebバージョンのWeChat WeChat Webバージョンを使用して、QRコードをスキャンしてログインし、パケットをキャプチャして情報をクロールしたり、投稿して情報を送信したりすることもできます。

その後、オープンソースプロジェクトのitchatを発見しました。作者は@LittleCoderで、WeChatの探索を大幅に容易にするWeChatインターフェースが完成しました。

itchat ライブラリをインストールします

pip install itchat
まず、次のコードを実行して、QR コードが生成され、ログインが確認され、メッセージが表示されます。 'filehelper' に送信されました。この

filehelper は WeChat のファイル転送アシスタントです。

import itchat# 登录itchat.login()# 发送消息itchat.send(u'你好', 'filehelper')
ログインしてメッセージを送るだけでなく、こんな遊びもできますよ〜

1. WeChat友達の男女比

WeChat上の友達の男女比をカウントしたい場合もちろんとても簡単です。まず友達リスト、統計リストの性別数を取得します

import itchat# 先登录itchat.login()# 获取好友列表friends = itchat.get_friends(update=True)[0:]# 初始化计数器,有男有女,当然,有些人是不填的male = female = other = 0# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算# 1表示男性,2女性for i in friends[1:]:sex = i["Sex"]if sex == 1:male += 1elif sex == 2:female += 1else:other += 1# 总数算上,好计算比例啊~total = len(friends[1:])# 好了,打印结果print u"男性好友:%.2f%%" % (float(male) / total * 100)print u"女性好友:%.2f%%" % (float(female) / total * 100)print u"其他:%.2f%%" % (float(other) / total * 100)
結果を見るのは嬉しいです:

(OK、私には男性の友達が多いという真実が暴露されました) ~~)

十分直感的ではないようですが、興味のある友人は追加できます 視覚的な表示には、Python ベースの Echarts を使用します (機会があれば詳しく説明します)

まずインストールしてください

pip install echarts-python
通常、割合を表示するにはパーセンテージ円グラフを使用します

# 使用echarts,加上这段from echarts import Echart, Legend, Piechart = Echart(u'%s的微信好友性别比例' % (friends[0]['NickName']), 'from WeChat')chart.use(Pie('WeChat',              [{'value': male, 'name': u'男性 %.2f%%' % (float(male) / total * 100)},               {'value': female, 'name': u'女性 %.2f%%' % (float(female) / total * 100)},               {'value': other, 'name': u'其他 %.2f%%' % (float(other) / total * 100)}],              radius=["50%", "70%"]))chart.use(Legend(["male", "female", "other"]))del chart.json["xAxis"]del chart.json["yAxis"]chart.plot()
でんでんでんでん〜

2. 友達の個人的な署名のワードクラウド

友達リストを取得すると、返されたjsonに個人的な署名が含まれた情報も表示されました。私は創造力を発揮して、全員の個人的な署名を取得し、使用頻度の高い単語を調べて、ワード クラウドも作成しました。

# coding:utf-8import itchat# 先登录itchat.login()# 获取好友列表friends = itchat.get_friends(update=True)[0:]for i in friends:# 获取个性签名signature = i["Signature"]print signature
まずすべてを取得します

印刷後、span、class、emoji、emoji1f3c3 などのフィールドが多数あることがわかります。絵文字はパーソナライズされた署名で使用されているため、これらのフィールドをフィルタリングする必要があります。

for i in friends:# 获取个性签名signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")# 正则匹配过滤掉emoji表情,例如emoji1f3c3等rep = re.compile("1f\d.+")signature = rep.sub("", signature)print signature
を除外するための通常の置換メソッドを作成します。次に、jiebaを使用して単語をセグメント化し、まず、jiebaとwordcloudライブラリをインストールします

pip install jieba
pip install wordcloud
code

# coding:utf-8import itchatimport reitchat.login()friends = itchat.get_friends(update=True)[0:]tList = []for i in friends:signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")rep = re.compile("1f\d.+")signature = rep.sub("", signature)tList.append(signature)# 拼接字符串text = "".join(tList)# jieba分词import jiebawordlist_jieba = jieba.cut(text, cut_all=True)wl_space_split = " ".join(wordlist_jieba)# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloudimport PIL.Image as Image# 这里要选择字体存放路径,这里是Mac的,win的字体在windows/Fonts中my_wordcloud = WordCloud(background_color="white", max_words=2000, 
                         max_font_size=40, random_state=42,                         font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)plt.imshow(my_wordcloud)plt.axis("off")plt.show()
を実行します。コード

これ。 。 Wordcloudの使用法によると、配色を生成するための画像がここにあります

ので、コードを修正しました

。はい、これは Mac で生成されたものです。

3. WeChat の自動返信を QQ と同様に実装します。メッセージを受信した後にメッセージを返すと同時に、ファイル アシスタントにメッセージを送信すると、ファイル アシスタントでメッセージを表示できます。

コードは非常に簡単です。見てみましょう

# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratorimport osimport numpy as npimport PIL.Image as Imaged = os.path.dirname(__file__)alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,                         max_font_size=40, random_state=42,                         font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf')\.generate(wl_space_split)image_colors = ImageColorGenerator(alice_coloring)plt.imshow(my_wordcloud.recolor(color_func=image_colors))plt.imshow(my_wordcloud)plt.axis("off")plt.show()# 保存图片 并发送到手机my_wordcloud.to_file(os.path.join(d, "wechat_cloud.png"))itchat.send_image("wechat_cloud.png", 'filehelper')

実行後はログインしたままになり、自動返信モードをオンにして、携帯電話で表示できます:

もちろん、さらにテキスト メッセージでは、画像 (絵文字も画像としてカウントされます)、音声、名刺、地理的位置、共有、およびメモ タイプの情報 (つまり、メッセージの取り消しなどのプロンプトを含むメッセージ) を受信することもできます。デコレータを書き込むだけです。次のフォームに同意して、試してみてください

#coding=utf8import itchat# 自动回复# 封装好的装饰器,当接收到的消息是Text,即文字消息@itchat.msg_register('Text')def text_reply(msg):# 当消息不是由自己发出的时候if not msg['FromUserName'] == myUserName:# 发送一条提示给文件助手itchat.send_msg(u"[%s]收到好友@%s 的信息:%s\n" %(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),                         msg['User']['NickName'],                         msg['Text']), 'filehelper')# 回复给好友return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (msg['Text'])if __name__ == '__main__':itchat.auto_login()# 获取自己的UserNamemyUserName = itchat.get_friends(update=True)[0]["UserName"]itchat.run()

以上がPython を使用して WeChat で遊ぶ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。