Heim  >  Artikel  >  Backend-Entwicklung  >  So spielen Sie mit WeChat mit Python

So spielen Sie mit WeChat mit Python

PHP中文网
PHP中文网Original
2017-06-21 16:26:021683Durchsuche

Der Code wird hier platziert: wzyonggege/python-wechat-itchat

Die Wortwolke kann durch ein Minion-Bild ersetzt werden

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

0. itchat

Kürzlich habe ich einige Möglichkeiten untersucht, WeChat zu spielen. Wir können uns mit der Webversion von WeChat anmelden, indem wir den QR-Code scannen, um Pakete zu erfassen und Informationen zu crawlen auch posten, um Informationen zu versenden.

Dann habe ich itchat entdeckt, ein Open-Source-Projekt Der Autor ist @LittleCoderEr hat die WeChat-Schnittstelle fertiggestellt, die uns die Erkundung von WeChat erheblich erleichtert itchat erreichen.

Installieren Sie die itchat-Bibliothek

pip install itchat

Lassen Sie uns zunächst einen einfachen Test durchführen, um sich bei WeChat anzumelden. Nach dem Scannen wird ein QR-Code generiert Code Nach Bestätigung der Anmeldung auf dem Mobiltelefon wird eine Nachricht an „filehelper“ gesendet. Dieser filehelper ist der Dateiübertragungsassistent auf WeChat.

import itchat# 登录itchat.login()# 发送消息itchat.send(u'你好', 'filehelper')

Zusätzlich zum Einloggen und Versenden von Nachrichten können wir auch so spielen, runtergehen~

1. Das Verhältnis von männlichen zu weiblichen Freunden WeChat

Denken Sie, es ist natürlich sehr einfach, das Geschlechterverhältnis Ihrer Freunde in WeChat zu zählen. Holen Sie sich zunächst die Freundesliste und zählen Sie die Geschlechteranzahl in der Liste

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)

Schauen Sie sich die Ergebnisse an:

(Okay, es hat die Wahrheit enthüllt, dass ich mehr männliche Freunde habe~~)

Es scheint nicht intuitiv zu sein Genug. Freunde, die interessiert sind, können eine visuelle Anzeige hinzufügen (ich werde ausführlich darüber sprechen, wenn ich die Gelegenheit dazu habe)
Installieren Sie es zuerst

pip install echarts-python

Das Anzeigeverhältnis verwendet im Allgemeinen das prozentuale Kreisdiagramm

# 使用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()

Ding ding ding ~

2 personalisierte Signatur-Wortwolke

Beim Abrufen der Freundesliste werden auch die JSON-Informationen zurückgegeben. Als ich die Informationen mit personalisierten Signaturen sah, wurde ich kreativ und schnappte mir die personalisierten Signaturen aller, schaute mir die hochfrequenten Wörter an und erstellte sie eine Wortwolke.

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

Ergreifen Sie zuerst alle
Nach dem Drucken werden Sie feststellen, dass es viele Felder für Span, Klasse, Emoji, Emoji1f3c3 usw. gibt, da Emoticons verwendet werden In den personalisierten Signatursymbolen müssen diese Felder herausgefiltert werden. Schreiben Sie eine reguläre und Ersetzungsmethode zum Herausfiltern

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

Als nächstes verwenden Sie jieba, um die Wörter zu segmentieren Erstellen Sie zunächst eine Wortwolke. Installieren Sie sie zuerst und führen Sie den Code

pip install jieba
pip install wordcloud

aus

dieses. . Es scheint etwas hässlich. Laut Wordcloud-Nutzung kann ich hier ein Bild zum Generieren eines WeChat-Logos finden
# 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()

und den Code geändert

# 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')
Hmm~ Es scheint in Ordnung zu sein, das wurde unter Mac generiert, im Anhang ist ein

3. Automatische WeChat-Antwort

Dann implementieren wir eine automatische Antwort ähnlich der auf QQ. Das Prinzip besteht darin, die Nachricht nach Erhalt der Nachricht zurückzusenden Senden Sie gleichzeitig eine an den Dateiassistenten. Sie können die Nachrichten einheitlich im Dateiassistenten anzeigen.

Der Code ist sehr einfach, werfen wir einen Blick darauf

hält Sie nach dem Ausführen angemeldet, schaltet den automatischen Antwortmodus ein und zeigt ihn auf Ihrem Telefon an :

Natürlich können Sie neben Textnachrichten auch Bilder (Emoticons zählen als Bilder), Sprache, Visitenkarten, geografischen Standort, Teilen und Informationen vom Typ Notiz (dass) empfangen Dies sind Nachrichten, die von jemandem veranlasst werden, z. B. das Zurückziehen von Nachrichten. Es ist akzeptabel, den Dekorateur in der folgenden Form zu schreiben. Sie können
#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()

ausprobieren

Das obige ist der detaillierte Inhalt vonSo spielen Sie mit WeChat mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn