成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

手把手教你擴(kuò)展個(gè)人微信號(hào)(2)(微信控制器、群發(fā)助手、好友刪除檢測(cè))

LeanCloud / 2128人閱讀

摘要:本文為教程的第二部分,主要以微信控制器群發(fā)助手好友刪除檢測(cè)為例演示如何調(diào)用微信。教程流程簡(jiǎn)介這一系列教程從如何分析微信協(xié)議開(kāi)始,第一部分教你如何從零開(kāi)始獲取并模擬擴(kuò)展個(gè)人微信號(hào)所需要的協(xié)議。

現(xiàn)在的日常生活已經(jīng)離不開(kāi)微信,本文將會(huì)拋磚引玉演示如何使用Python調(diào)用微信API做一些有意思的東西。

看完這一系列教程,你就能從頭開(kāi)始實(shí)現(xiàn)自己關(guān)于微信的想法。

本文為教程的第二部分,主要以微信控制器、群發(fā)助手、好友刪除檢測(cè)為例演示如何調(diào)用微信API。

Python基礎(chǔ)并不困難,所以即使沒(méi)有這方面基礎(chǔ)輔助搜索引擎也完全可以學(xué)習(xí)本教程。

關(guān)于本教程有任何建議或者疑問(wèn),都?xì)g迎郵件與我聯(lián)系(i7meavnktqegm1b@qq.com),或者在github上提出。

教程流程簡(jiǎn)介

這一系列教程從如何分析微信協(xié)議開(kāi)始,第一部分教你如何從零開(kāi)始獲取并模擬擴(kuò)展個(gè)人微信號(hào)所需要的協(xié)議。

第二部分將會(huì)就這些協(xié)議進(jìn)行利用,以各項(xiàng)目為例介紹一些微信有意思功能的實(shí)現(xiàn)。

第三部分就協(xié)議的一些高級(jí)用法進(jìn)行介紹,對(duì)框架做進(jìn)一步介紹與擴(kuò)展。

本文為教程的第二部分。

簡(jiǎn)單成果展示

完成了本文的學(xué)習(xí),你將會(huì)完成三個(gè)小項(xiàng)目:(出于方便二次閱讀,括號(hào)中都放上了源碼鏈接)

通過(guò)微信操作的音樂(lè)播放器(源碼)

消息內(nèi)容與對(duì)象可自定義的消息群發(fā)助手(源碼)

特定好友刪除檢測(cè)(源碼)

使用微信協(xié)議完成機(jī)器人較為平常,如果對(duì)具體細(xì)節(jié)感興趣,可以添加個(gè)人號(hào)littlecodersh并回復(fù)“源代碼”。

本文主要基于微信API的第三方包itchat,你可以在項(xiàng)目主頁(yè)獲取更多信息。

本部分所需環(huán)境

本文是這一教程的第二部分,需要基本的pip可用的Python環(huán)境。

本教程使用的環(huán)境如下:

Windows 8.1 (其他平臺(tái)也可用)

Python 2 or 3

微信版本6.3.25

微信控制器

在項(xiàng)目主頁(yè)上,專門(mén)有人就微信作為智能家居入口向我提出了很多想法。

如果微信可以作為控制器,就可以不必自制手機(jī)端客戶端的麻煩。

其實(shí)這個(gè)需求實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,這里我借鑒了yaphone的RasWxMusicbox,使用了其中部分的代碼作為演示。

這是一個(gè)通過(guò)微信控制電腦播放音樂(lè)的小項(xiàng)目,那么主要就是三個(gè)功能:

輸入“幫助”,顯示幫助

輸入“關(guān)閉”,關(guān)閉音樂(lè)播放

輸入具體歌名,進(jìn)入歌曲的選擇

換成代碼就是這樣一個(gè)邏輯:

if msg == u"關(guān)閉":
    close_music()
    print(u"音樂(lè)已關(guān)閉")
if msg == u"幫助":
    print(u"幫助信息")
else:
    print(interact_select_song(msg))

那么現(xiàn)在需要解決的就是如何關(guān)閉音樂(lè),如何選擇音樂(lè)和如何使用微信交互。

關(guān)閉音樂(lè)我們這里使用打開(kāi)空文件的方式,而選擇音樂(lè)我們使用網(wǎng)易云音樂(lè)的API完成:

import os
# 通過(guò)該命令安裝該API: pip install NetEaseMusicApi
from NetEaseMusicApi import interact_select_song

with open("stop.mp3", "w") as f: pass
def close_music():
    os.startfile("stop.mp3")

而微信的調(diào)用可以通過(guò)itchat包簡(jiǎn)單的完成,這里要注意的是:

有些賬號(hào)無(wú)法與自己通信,所以我們選擇與文件傳輸助手(filehelper)通信

為了防止對(duì)于其他消息的響應(yīng),我們?cè)诘谝恍羞^(guò)濾了無(wú)關(guān)信息

itchat.run的選項(xiàng)分別為允許熱拔插,方便調(diào)試

# 接上段程序
# 通過(guò)該命令安裝該API: pip install itchat
import itchat

@itchat.msg_register(itchat.content.TEXT)
def music_player(msg):
    if msg["ToUserName"] != "filehelper": return
    if msg["Text"] == u"關(guān)閉":
        close_music()
        itchat.send(u"音樂(lè)已關(guān)閉", "filehelper")
    if msg["Text"] == u"幫助":
        itchat.send(u"幫助信息", "filehelper")
    else:
        itchat.send(interact_select_song(msg["Text"]), "filehelper")

itchat.auto_login(True)
itchat.send(HELP_MSG, "filehelper") 
itchat.run()

itchat對(duì)常用功能都做好了封裝,調(diào)用還是非常容易的。

完整的程序我放在了gist上面,使用時(shí)不要忘記安裝第三方包。

通過(guò)與文件傳輸助手的交互,微信就能夠輕松變成其他程序的入口。

群發(fā)助手

在短信的時(shí)代,逢年過(guò)節(jié)都會(huì)需要接收和發(fā)送大量的短信。

雖然自己也看到短信就煩,但不發(fā)又怕會(huì)錯(cuò)過(guò)什么。

所以當(dāng)時(shí)就產(chǎn)生了各式各樣的群發(fā)工具,最簡(jiǎn)單的比如在消息中加入昵稱,讓人感覺(jué)不像群發(fā)。

不過(guò)可惜的是,微信自帶的群發(fā)助手真的只是群發(fā)。

當(dāng)然,稍加操作,一切皆有可能。

例如在消息中加入昵稱:

通過(guò)get_friends方法可以輕松獲取所有的好友(好友首位是自己)

基于不同的好友可以發(fā)送不同的消息

這條程序運(yùn)行后是真的會(huì)發(fā)消息出去,如果只是演示目的,把itchat.send改為print即可

#coding=utf8
import itchat, time

itchat.auto_login(True)

SINCERE_WISH = u"祝%s新年快樂(lè)!"

friendList = itchat.get_friends(update=True)[1:]
for friend in friendList:
    # 如果是演示目的,把下面的方法改為print即可
    itchat.send(SINCERE_WISH % (friend["DisplayName"]
        or friend["NickName"]), friend["UserName"])
    time.sleep(.5)

又例如給特定的人發(fā)送特定的消息。

我們這里通過(guò)群聊實(shí)現(xiàn),劃定一個(gè)群聊,在群聊內(nèi)則私信發(fā)送祝福。

如果僅是創(chuàng)建群聊不說(shuō)話,對(duì)方是不會(huì)有提示的

群聊如果不保存到通訊錄,是無(wú)法在各設(shè)備之間同步的(所以itchat也無(wú)法讀取到)

群聊在被獲取的時(shí)候不會(huì)自帶用戶列表,所以需要使用update_chatroom更新用戶列表

當(dāng)然,如果只是演示目的,把itchat.send改為print即可

#coding=utf8
import itchat, time

itchat.auto_login(True)

REAL_SINCERE_WISH = u"祝%s新年快樂(lè)?。?

chatroomName="wishgroup"
itchat.get_chatrooms(update=True)
chatrooms = itchat.search_chatrooms(name=chatroomName)
if chatrooms is None:
    print(u"沒(méi)有找到群聊:" + chatroomName)
else:
    chatroom = itchat.update_chatroom(chatrooms[0]["UserName"])
    for friend in chatroom["MemberList"]:
        friend = itchat.search_friends(userName=friend["UserName"])
        # 如果是演示目的,把下面的方法改為print即可
        itchat.send(REAL_SINCERE_WISH % (friend["DisplayName"]
            or friend["NickName"]), friend["UserName"])
        time.sleep(.5)

所以我的通訊錄里會(huì)有從來(lái)不用的客戶群、教師群什么的。

完整的程序我放在了gist上面,使用時(shí)不要忘記安裝第三方包。

當(dāng)然,為了防止誤操作,完整程序中我把所有的itchat.send換成了print

另外,不只有文字可以發(fā)送,文件、圖片也都是可行的,具體操作見(jiàn)itchat的文檔了。

itchat獲取微信可以獲取到的各種內(nèi)容也都非常方便。

其余的例如生日,節(jié)日什么的就看具體需求了。

好友刪除檢測(cè)

有時(shí)候我們會(huì)想知道某個(gè)好友有沒(méi)有刪除自己或者把自己拉入黑名單。

這一操作使用itchat也會(huì)變的非常簡(jiǎn)單。

原理的話,在于將好友拉入群聊時(shí),非好友和黑名單好友不會(huì)被拉入群聊。

所以群聊的返回值中就有了好友與你關(guān)系的數(shù)據(jù)。

另外,群聊在第一次產(chǎn)生普通消息時(shí)才會(huì)被除創(chuàng)建者以外的人發(fā)現(xiàn)的(系統(tǒng)消息不算普通消息)。

這樣,就可以隱蔽的完成好友檢測(cè)。

寫(xiě)成代碼的話,這個(gè)操作就是這樣的:(只是演示,不能運(yùn)行,運(yùn)行版本在段末)

chatroomUserName = "@1234567"
friend = itchat.get_friends()[1]

r = itchat.add_member_into_chatroom(chatroomUserName, [friend])
if r["BaseResponse"]["ErrMsg"] == "":
    status = r["MemberList"][0]["MemberStatus"]
    itchat.delete_member_from_chatroom(chatroom["UserName"], [friend])
    return { 3: u"該好友已經(jīng)將你加入黑名單。",
        4: u"該好友已經(jīng)將你刪除。", }.get(status,
        u"該好友仍舊與你是好友關(guān)系。")

其中,通過(guò)add_member_into_chatroom操作獲取我們需要的返回值,即可得到好友的狀態(tài)。

同樣的,這次我們也將文件傳輸助手作為終端,具體方法與控制器一節(jié)類似。

這次我們確定的交互方式是接收“名片”消息,并判斷名片中的好友與自己的關(guān)系。

那么獲取名片信息的內(nèi)容可以這么寫(xiě):

import itchat

@itchat.msg_register(itchat.content.CARD)
def get_friend(msg):
    if msg["ToUserName"] != "filehelper": return
    friendStatus = get_friend_status(msg["RecommendInfo"])
    itchat.send(friendStatus["NickName"], "filehelper")

itchat.auto_login(True)
itchat.run()

那么我們所需要的所有部分就都解決了,下面將他們組合起來(lái)即可。

完整的程序我放在了gist上面,使用時(shí)不要忘記安裝第三方包。

在網(wǎng)頁(yè)版微信的接口受到限制之前完全可以批量進(jìn)行這一操作,檢測(cè)哪些好友刪除了自己。

但目前顯然操作存在頻率限制,所以只能做一些變通了。

之后的內(nèi)容

到這里這一篇文章的主要內(nèi)容就結(jié)束了。

主要從微信作為終端使用、自定義的消息交互、微信協(xié)議研究三方面開(kāi)了一個(gè)簡(jiǎn)單的頭。

其余有一些過(guò)于大眾,如機(jī)器人,就不再贅述。

而另一些,需要一定的基礎(chǔ)或者不適合分享,就留給各位自行研究。

如果要留個(gè)懸念,可以想象添加好友的方法status傳2,輕松實(shí)現(xiàn)好友病毒式擴(kuò)張。

利用微信的API可以做很多事情,文檔我放在這里,祝好運(yùn)!

結(jié)束語(yǔ)

希望讀完這篇文章能對(duì)你有幫助,有什么不足之處萬(wàn)望指正(鞠躬)。

有什么想法或者想要關(guān)注我的更新,歡迎來(lái)GithubStar或者Fork。

160928

LittleCoder

EOF

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38220.html

相關(guān)文章

  • Python自制信機(jī)器人:群發(fā)消息、自動(dòng)接收好友

    摘要:所以就想著自己寫(xiě)一個(gè)干脆,經(jīng)過(guò)一周漫長(zhǎng)的開(kāi)發(fā)主要是時(shí)間太零散了,把第一版定制化微信機(jī)器人給完成了,第一版里實(shí)現(xiàn)了幾個(gè)功能自動(dòng)添加好友,并同時(shí)根據(jù)附加信息打備注。 showImg(https://segmentfault.com/img/remote/1460000018578411?w=1080&h=719); 運(yùn)營(yíng)公眾號(hào)也有半年了,今年5月份開(kāi)始的,之前一直用一款windows工具來(lái)...

    wmui 評(píng)論0 收藏0
  • 把手教你擴(kuò)展個(gè)人信號(hào)(1)

    摘要:關(guān)于本教程有任何建議或者疑問(wèn),都?xì)g迎郵件與我聯(lián)系,或者在上提出教程流程簡(jiǎn)介教程將會(huì)從如何分析微信協(xié)議開(kāi)始,第一部分將教你如何從零開(kāi)始獲取并模擬擴(kuò)展個(gè)人微信號(hào)所需要的協(xié)議。 現(xiàn)在的日常生活已經(jīng)離不開(kāi)微信,難免會(huì)生出微信有沒(méi)有什么API可以使用的想法。 那樣就可以拿自己微信做個(gè)消息聚合、開(kāi)個(gè)投票什么的,可以顯然沒(méi)有這種東西。 不過(guò)還好,有網(wǎng)頁(yè)版微信不就等于有了API么,這個(gè)項(xiàng)目就是出于這個(gè)...

    siberiawolf 評(píng)論0 收藏0
  • 30行代碼實(shí)現(xiàn)信自動(dòng)回復(fù)機(jī)器人

    摘要:行代碼實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人一寫(xiě)在前面今天下午又學(xué)到了另一種有趣的玩法微信自動(dòng)回復(fù)機(jī)器人。將返回消息返回給微信消息的發(fā)送人。以此實(shí)現(xiàn)將微信個(gè)人號(hào)變身為聊天機(jī)器人。 30行代碼實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人 一、寫(xiě)在前面 今天下午又學(xué)到了itchat另一種有趣的玩法---微信自動(dòng)回復(fù)機(jī)器人。 程序很簡(jiǎn)單僅僅三十行代碼左右,實(shí)現(xiàn)了機(jī)器人自動(dòng)與你的微信好友聊天,下面是我的機(jī)器人小籠包跟自己微信好友聊...

    lingdududu 評(píng)論0 收藏0
  • 教你如何在低成本、有限的時(shí)間里策劃裂變100社群_怎么做信防封群

    摘要:如何在低成本有限的時(shí)間里策劃一場(chǎng)合格的裂變活動(dòng)呢常做裂變的朋友可能回到個(gè)詞裂變系數(shù)投入與產(chǎn)出比。存在成本的裂變活動(dòng)嗎答案存在。在這條新規(guī)則宣布后,裂變分享率增加到了。優(yōu)點(diǎn)進(jìn)一步驗(yàn)證用戶的朋友圈,防止渾水摸魚(yú)。 ...

    BLUE 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<