Python itchat сканирует информацию о друзьях в WeChat

Python WeChat GitHub открытый источник
Python itchat сканирует информацию о друзьях в WeChat

Оригинальная ссылка:Tickets.WeChat.QQ.com/Yes/4ex dog R4GK молоко…

«ITCHAT» с открытым исходным кодом персональных микроканальных интерфейсов, сегодня мы используем ITCHAT ползать информацию Micro буквы информации, не рисуя пустые слова
Три изображения: «Мозаика аватара друзей WeChat», «Таблица гендерной статистики» и «Таблица статистики личной подписи».

"Мозаика аватара друзей WeChat"

"Гендерная карта"

«Характеристики подписи личности»

Установить

pip3 install itchat

В основном используемые методы:
itchat.login()WeChat Scan QR-код для входа в систему
itchat.get_friends()Назад к полному списку друзей, каждый друг как словарь, первый из которых является моей учетной записью, входящейupdate=True, обновит список друзей и вернется,get_friends(update=True)
itchat.get_head_img(userName="")в соответствии сuserNameПолучить аватар друга

Мозаика аватара друга Wechat

получить информацию о друзьях,get_head_imgПолучите аватар каждого друга, сохраните файл и уменьшите аватар на большую картину.
Сначала получите аватар вашего друга:

def headImg():
    itchat.login()
    friends = itchat.get_friends(update=True)
    # itchat.get_head_img() 获取到头像二进制,并写入文件,保存每张头像
    for count, f in enumerate(friends):
        # 根据userName获取头像
        img = itchat.get_head_img(userName=f["UserName"])
        imgFile = open("img/" + str(count) + ".jpg", "wb")
        imgFile.write(img)
        imgFile.close()

Здесь вам нужно заранее создать новую папку в том же каталогеimg, иначе он сообщитNo such file or directoryОшибка,imgИспользуется для сохранения изображения аватара, просмотра списка друзей в соответствии с индексомcountНазовите аватарку, и тут вы увидите, что в папке сохранились аватарки всех друзей.

Следующим шагом будет сшивание изображений

пройтись по папке с картинками,random.shuffle(imgs)Перемешать порядок картинок

Используйте большое изображение 640 * 640, чтобы равномерно разделить каждый аватар, рассчитать длину и ширину каждого маленького квадратного изображения, сжать аватар, склеить изображения, заполнить линию, обернуть и склеить, если есть много аватаров друзей, вы можете соответствующим образом увеличьте размер большой области изображения, конкретный код выглядит следующим образом:

def createImg():
    x = 0
    y = 0
    imgs = os.listdir("img")
    random.shuffle(imgs)
    # 创建640*640的图片用于填充各小图片
    newImg = Image.new('RGBA', (640, 640))
    # 以640*640来拼接图片,math.sqrt()开平方根计算每张小图片的宽高,
    width = int(math.sqrt(640 * 640 / len(imgs)))
    # 每行图片数
    numLine = int(640 / width)

    for i in imgs:
        img = Image.open("img/" + i)
        # 缩小图片
        img = img.resize((width, width), Image.ANTIALIAS)
        # 拼接图片,一行排满,换行拼接
        newImg.paste(img, (x * width, y * width))
        x += 1
        if x >= numLine:
            x = 0
            y += 1

    newImg.save("all.png")

Формируются аватарки друзей, а аватарки произвольно склеиваются и сращиваются

Гендерный график

такой жеitchat.login()Войдите, чтобы получить информацию о друзьях, согласноSexПоле определяет пол, 1 для мужчины, 2 для женщины, 3 для неизвестного

def getSex():
    itchat.login()
    friends = itchat.get_friends(update=True)
    sex = dict()
    for f in friends:
        if f["Sex"] == 1: #男
            sex["man"] = sex.get("man", 0) + 1
        elif f["Sex"] == 2: #女
            sex["women"] = sex.get("women", 0) + 1
        else: #未知
            sex["unknown"] = sex.get("unknown", 0) + 1
    # 柱状图展示
    for i, key in enumerate(sex):
        plt.bar(key, sex[key])
    plt.show()

Гистограмма гендерной статистики

Таблица статистики подписи личности

получить информацию о друзьях,SignatureПоле — это подпись друга. Сохраните персонализированную подпись в файл .txt. Некоторые подписи содержат выражения и другие слова, которые станут словами, похожими на смайлики. Замените эти и специальные символы.

def getSignature():
    itchat.login()
    friends = itchat.get_friends(update=True)
    file = open('sign.txt', 'a', encoding='utf-8')
    for f in friends:
        signature = f["Signature"].strip().replace("emoji", "").replace("span", "").replace("class", "")
        # 正则匹配
        rec = re.compile("1f\d+\w*|[<>/=]")
        signature = rec.sub("", signature)
        file.write(signature + "\n")

sign.txtВ файл записываются личные подписи всех друзей, а изображение облака слов генерируется с помощью пакета wordcloud.pip install wordcloud
Также доступныjiebaСегментация слов создает графы слов. Если сегментация слов не используется, это отображение предложений.jiebaПричастия могут быть уместныmax_font_sizeУвеличьте атрибут, например, 100.
Следует отметить, что операция не должна выполняться в виртуальной среде.deactivateВыйдите из виртуальной среды и запустите снова.Подробный код выглядит следующим образом:


# 生成词云图
def create_word_cloud(filename):
    # 读取文件内容
    text = open("{}.txt".format(filename), encoding='utf-8').read()

    # 注释部分采用结巴分词
    # wordlist = jieba.cut(text, cut_all=True)
    # wl = " ".join(wordlist)

    # 设置词云
    wc = WordCloud(
        # 设置背景颜色
        background_color="white",
        # 设置最大显示的词云数
        max_words=2000,
        # 这种字体都在电脑字体中,window在C:\Windows\Fonts\下,mac下可选/System/Library/Fonts/PingFang.ttc 字体
        font_path='C:\\Windows\\Fonts\\simfang.ttf',
        height=500,
        width=500,
        # 设置字体最大值
        max_font_size=60,
        # 设置有多少种随机生成状态,即有多少种配色方案
        random_state=30,
    )

    myword = wc.generate(text)  # 生成词云 如果用结巴分词的话,使用wl 取代 text, 生成词云图
    # 展示词云图
    plt.imshow(myword)
    plt.axis("off")
    plt.show()
    wc.to_file('signature.png')  # 把词云保存下

граф предложений

использоватьjiebaОблако слов, порожденное словом


Кажется, что «тяжелая работа» и «жизнь» по-прежнему очень важны

В дополнение к вышеуказанной информации, itchat также может собирать информацию, такую ​​как провинции и города, а также может реализовывать такие функции, как автоматический чат с роботами, которые здесь не будут описаны.

Наконец, прикрепите адрес github:GitHub.com/TooWant/IT…

Добро пожаловать на мой блог:blog.manjiexiang.cn/
Добро пожаловать, чтобы обратить внимание на WeChat: лучше узнать вас на весеннем ветру

image.png