0

    自动获取群员名称并用群员名称生成词云图,生成QQ好友列表昵称词云图

    2023.06.30 | admin | 158次围观

    利用昨天的QQ群获取的bkn值来获取指定QQ群的群员昵称,然后生成词云图qq群聊对话生成器在线制作,也可以根据自己的好友列表的昵称生成词云图。

    这个就直接上代码了:

    import re
    import requests
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud
    # 根据skey获取bkn值
    def get_bkn(skey):
        e = skey
        t = 5381
        n = 0
        o = len(e)
        # www.lanol.cn By:Lan
        while n < o:
            t += (t << 5) + ord(e[n])
            n += 1
        return t & 2147483647
    # 获取好友列表昵称
    def getfriendlist(bkn):
        url = 'https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list'
        data = {
            'bkn': bkn,
        }
        html = requests.post(url=url, headers=headers, data=data).json()
        result = html['result']
        ids = []
        names = []
        for i in result:
            ids.append(i)
        for i in range(1, len(ids)):
            a = result[str(ids[i])]
            mems = a['mems']
            for j in mems:
                names.append(j['name'])
        return str(names)
    # 获取群友名称
    def getgrouplist(bkn, groupid):
        url = 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'
        nicks = []
        data = {
            'gc': groupid,
            'st': '0',
            'end': '20',
            'sort': '0',
            'bkn': bkn,
        }
        html = requests.post(url=url, headers=headers, data=data).json()
        nums = html['count']
        for i in range(0, nums, 40):
            data = {
                'gc': groupid,
                'st': i,
                'end': i + 40,
                'sort': '0',
                'bkn': bkn,
            }
            html = requests.post(url=url, headers=headers, data=data).json()
            mems = html['mems']  # From: www.lanol.cn Author:Lan
            for i in mems:
                nicks.append(i['nick'])
        return str(nicks)
    def getresult(words):
        words = str(words).replace('nbsp', '').replace(''', '').replace('u3000', '').replace('u202d', '').replace(
            'amp', '')
        font = 'msyh.ttc'
        # From:www.lanol.cn Author:Lan
        wc = WordCloud(font_path=font,  # 如果是中文必须要添加这个,否则会显示成框框
                       background_color='white',
                       width=1800,
                       height=1080,
                       ).generate(words)
        wc.to_file('a.png')
        plt.imshow(wc)
        plt.axis('off')
        input("结果已生成在代码目录下的a.png,
    欢迎来我博客转一转www.lanol.cn
    回车后退出")
        plt.show()
    if __name__ == '__main__':
        cookie = input("请输入QQ登陆的Cookie值:")
        headers = {
            'cookie': cookie
        }
        bkn = get_bkn(re.findall('; skey=(.*?);', cookie)[0])
        a = input('1,生成好友列表词云图
    2,生成群友昵称词云图
    >>>')
        if a == '1':
            getresult(getfriendlist(bkn))
        elif a == '2':
            groupid = input("请输入群号:")
            getresult(getgrouplist(bkn, groupid))
        else:
            input("当前功能不存在")

    这个一些细节部分根据自己需要然后优化修改一下就行了。

    生成的结果图片在软件目录的a.png(自己可以获取群名称,我就懒得改了)

    cookie获取方法下次再水一篇帖子。

    使用教程:

    因为刚刚有人评论不会使用,所以就来一个使用教程吧。

    首先呢,你需要有一个python环境,然后需要安装wordcloud模块qq群聊对话生成器在线制作,request模块以及matplotlib模块

    然后再新建一个py文件,将上面的代码全部复制到py文件中,然后运行即可。

    Cookie获取方法:

    进入这个网站:

    登陆之后,刷新,点击F12,点击XHR,再点击这里面的随便一条记录

    找到Cookie,然后将后面的内容全部复制,如图我的这个就是pgv_pvi开始一直复制到2034也就是结尾,这个就是Cookie值

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    标签: qq
    发表评论