中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
一鍵生成微信個(gè)人專屬報(bào)告!
官網(wǎng):www.youquhome.cn

這兩天在逛GitHub的時(shí)候發(fā)現(xiàn)了一個(gè)非常有趣的開源項(xiàng)目,利用python對(duì)個(gè)人微信好友進(jìn)行全方位的數(shù)據(jù)分析,具體內(nèi)容是昵稱、年齡、性別、地區(qū)等,通過(guò)可視化的圖表的形式,給你一個(gè)專屬的微信個(gè)人數(shù)據(jù)報(bào)告。

具體報(bào)告分為了9個(gè)部分,如下圖所示,每打開一個(gè)html文件都是一個(gè)統(tǒng)計(jì)圖表,另外還有一個(gè)所有好友頭像的拼圖,老Y打開了幾個(gè)簡(jiǎn)單截了圖。

地圖可以放大縮小,考慮到不知道地圖規(guī)不規(guī)范就不整個(gè)截圖了

……

老Y覺(jué)得挺有意思的,今天就給大家介紹一下這個(gè)項(xiàng)目,這個(gè)項(xiàng)目是用python語(yǔ)言編寫(一共600多行代碼),程序運(yùn)行十分簡(jiǎn)單,只需要掃碼登錄操作就可以了。

關(guān)于python和python第三方庫(kù)的安裝,老Y在這篇文章中詳細(xì)介紹過(guò)了(40行代碼,實(shí)現(xiàn)微信控制電腦(關(guān)機(jī)、打開電腦攝像頭拍照……)

安裝好python后需要安裝一些第三方庫(kù)

wxpy

pyecharts

requests

pillow

pyecharts_snapshot

echarts-countries-pypkg

echarts-china-provinces-pypkg

opencv-python

如果你嫌一個(gè)個(gè)安裝麻煩的話,也可以一起安裝,語(yǔ)法如下圖所示,已經(jīng)把所有的庫(kù)名放在了requirement.txt文件中,只需要在讀取安裝就可以了。

安裝好第三方庫(kù),直接運(yùn)行g(shù)enerate_wx_data.py文件就可以了。

運(yùn)行后會(huì)出現(xiàn)一個(gè)網(wǎng)頁(yè)版微信二維碼,掃描登錄就可以了。

不一會(huì)就會(huì)完成,當(dāng)前文件夾就生成了兩個(gè)文件夾,一個(gè)data用來(lái)存放,前面截圖的9個(gè)專題報(bào)告,image則存儲(chǔ)著所有好友的頭像。

……

最后把代碼貼一下(左右滑動(dòng)),如果有不知道怎么操作的也歡迎在微信上和老Y交流。也可以直接下載:https://ilaoygzs.lanzoux.com/im5XKkai0be

# -*- coding:utf-8 -*-

from wxpy import *
from platform import system
from os.path import exists
from os import makedirs
from os import listdir
from shutil import rmtree
from queue import Queue
from threading import Thread
from time import sleep
from pyecharts.charts import Pie
from pyecharts.charts import Map
from pyecharts.charts import WordCloud
from pyecharts.charts import Bar
from pyecharts import options as opts
from requests import post
import PIL.Image as Image
import re
import random
import math
from cv2 import CascadeClassifier
from cv2 import imread
from cv2 import cvtColor
from cv2 import COLOR_BGR2GRAY


# 引入打開文件所用的庫(kù)
# Window與Linux和Mac OSX有所不同
# lambda用來(lái)定義一個(gè)匿名函數(shù),可實(shí)現(xiàn)類似c語(yǔ)言的define定義
if('Windows' in system()):
    # Windows
    from os import startfile
    open_html = lambda x : startfile(x)
elif('Darwin' in system()):
    # MacOSX
    from subprocess import call
    open_html = lambda x : call(["open", x])
else:
    # Linux
    from subprocess import call
    open_html = lambda x: call(["xdg-open", x])


# 分析好友性別比例
def sex_ratio():

    # 初始化
    male, female, other = 000

    # 遍歷
    for user in friends:
        if(user.sex == 1):
            male += 1
        elif(user.sex == 2):
            female += 1
        else:
            other += 1

    name_list = ['男性''女性''未設(shè)置']
    num_list = [male, female, other]

    pie = Pie()
    pie.add("微信好友性別比例", [list(z) for z in zip(name_list, num_list)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="微信好友性別比例"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"))
    pie.render('data/好友性別比例.html')


# 分析好友地區(qū)分布
def region_distribution():

    # 使用一個(gè)字典統(tǒng)計(jì)好友地區(qū)分布數(shù)量
    province_dict = {'北京'0'上海'0'天津'0'重慶'0,
                     '河北'0'山西'0'吉林'0'遼寧'0'黑龍江'0,
                     '陜西'0'甘肅'0'青海'0'山東'0'福建'0,
                     '浙江'0'臺(tái)灣'0'河南'0'湖北'0'湖南'0,
                     '江西'0'江蘇'0'安徽'0'廣東'0'海南'0,
                     '四川'0'貴州'0'云南'0'內(nèi)蒙古'0'新疆'0,
                     '寧夏'0'廣西'0'西藏'0'香港'0'澳門'0}

    # 遍歷
    for user in friends:
        # 判斷省份是否存在,有可能是外國(guó)的,這種情況不考慮
        if (user.province in province_dict):
            key = user.province
            province_dict[key] += 1

    province = list(province_dict.keys())
    values = list(province_dict.values())


    # maptype='china' 只顯示全國(guó)直轄市和省級(jí),數(shù)據(jù)只能是省名和直轄市的名稱
    map = Map()
    map.add("微信好友地區(qū)分布", [list(z) for z in zip(province, values)], "china")
    map.set_global_opts(
            title_opts=opts.TitleOpts(title="微信好友地區(qū)分布"),
            visualmap_opts=opts.VisualMapOpts(),
        )
    map.render(path="data/好友地區(qū)分布.html")



    # 對(duì)好友數(shù)最多的省份進(jìn)行一進(jìn)步分析
    max_count_province = ''
    for key, value in province_dict.items():
        if(value == max(province_dict.values())):
            max_count_province = key
            break

    # 使用一個(gè)字典統(tǒng)計(jì)好友地區(qū)分布數(shù)量
    city_dict = {}
    # 遍歷
    for user in friends:
        if(user.province == max_count_province):
            # 更新鍵值對(duì)
            if(user.city in city_dict.keys()):
                city_dict[user.city] += 1
            else:
                city_dict[user.city] = 1

    bar = Bar()
    bar.add_xaxis([x for x in city_dict.keys()])
    bar.add_yaxis("地區(qū)分布", [x for x in city_dict.values()])
    bar.render('data/某省好友地區(qū)分布.html')


# 統(tǒng)計(jì)認(rèn)識(shí)的好友的比例
def statistics_friends():
    # 初始化
    unknown, known_male, known_female, known_other = 0000

    # 遍歷
    for user in friends:
        # 備注不為空
        if((user.remark_name).strip()):
            if(user.sex == 1):
                known_male += 1
            elif(user.sex == 2):
                known_female += 1
            else:
                known_other += 1
        else:
            unknown += 1

    name_list = ['未設(shè)置備注的好友''設(shè)置備注的男性好友''設(shè)置備注的女性好友''設(shè)置備注的其他好友']
    num_list = [unknown, known_male, known_female, known_other]

    pie = Pie()
    pie.add("你認(rèn)識(shí)的好友比例", [list(z) for z in zip(name_list, num_list)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="你認(rèn)識(shí)的好友比例"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"))
    pie.render('data/你認(rèn)識(shí)的好友比例.html')


# 分析備注名稱
def analyze_remark_name():
    close_partner_dict = {'寶寶,豬,仙女,親愛(ài),老婆':0'老公':0'父親,爸':0'母親,媽':0'閨蜜,死黨,基友':0}

    # 遍歷好友數(shù)據(jù)
    for user in friends:
        for key in close_partner_dict.keys():
            # 判斷該好友備注名是否包含close_partner_dict中的任意一個(gè)key
            name = key.split(',')
            for sub_name in name:
                if(sub_name in user.remark_name):
                    close_partner_dict[key] += 1
                    break


    name_list = ['最重要的她''最重要的他''爸爸''媽媽''死黨']
    num_list = [x for x in close_partner_dict.values()]

    pie = Pie()
    pie.add("可能是你最親密的人", [list(z) for z in zip(name_list, num_list)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="可能是你最親密的人"))
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"))
    pie.render('data/你最親密的人.html')



# 分析個(gè)性簽名
def analyze_signature():

    # 個(gè)性簽名列表
    data = []
    for user in friends:

        # 清除簽名中的微信表情emoj,即<span class.*?</span>
        # 使用正則查找并替換方式,user.signature為源文本,將<span class.*?</span>替換成空
        new_signature = re.sub(re.compile(r"<span class.*?</span>", re.S), "", user.signature)

        # 只保留簽名為1行的數(shù)據(jù),過(guò)濾為多行的簽名
        if(len(new_signature.split('\n')) == 1):
            data.append(new_signature)

    # 將個(gè)性簽名列表轉(zhuǎn)為string
    data = '\n'.join(data)

    # 進(jìn)行分詞處理,調(diào)用接口進(jìn)行分詞
    # 這里不使用jieba或snownlp的原因是無(wú)法打包成exe文件或者打包后文件非常大
    postData = {'data':data, 'type':'exportword''arg':'''beforeSend':'undefined'}
    response = post('http://life.chacuo.net/convertexportword',data=postData)
    data = response.text.replace('{"status":1,"info":"ok","data":["''')
    # 解碼
    data = data.encode('utf-8').decode('unicode_escape')

    # 將返回的分詞結(jié)果json字符串轉(zhuǎn)化為python對(duì)象,并做一些處理
    data = data.split("=====================================")[0]

    # 將分詞結(jié)果轉(zhuǎn)化為list,根據(jù)分詞結(jié)果,可以知道以2個(gè)空格為分隔符
    data = data.split('  ')

    # 對(duì)分詞結(jié)果數(shù)據(jù)進(jìn)行去除一些無(wú)意義的詞操作
    stop_words_list = [','',''、''the''a''is''…''·''э''д''э''м''ж''и''л''т''ы''н''з''м''…''…''…''…''…''、''.''。''!''!'':'':''~''|''▽''`''ノ''?''a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z''A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z''0''1''2''3''4''5''6''7''8''9''\'''‘''’''“''”''的''了''是''你''我''他''她','=''\r''\n''\r\n''\t''以下關(guān)鍵詞''['']''{''}''('')''('')''span''<''>''class''html''?''就''于''下''在''嗎''嗯']
    tmp_data = []
    for word in data:
        if(word not in stop_words_list):
            tmp_data.append(word)
    data = tmp_data


    # 進(jìn)行詞頻統(tǒng)計(jì),結(jié)果存入字典signature_dict中
    signature_dict = {}
    for index, word in enumerate(data):

        print(u'正在統(tǒng)計(jì)好友簽名數(shù)據(jù),進(jìn)度%d/%d,請(qǐng)耐心等待……' % (index + 1, len(data)))

        if(word in signature_dict.keys()):
            signature_dict[word] += 1
        else:
            signature_dict[word] = 1

    # 開始繪制詞云
    name = [x for x in signature_dict.keys()]
    value = [x for x in signature_dict.values()]
    wordcloud = WordCloud()
    wordcloud.add('微信好友個(gè)性簽名詞云圖', [list(z) for z in zip(name, value)], word_size_range=[1,100], shape='star')
    wordcloud.render('data/好友個(gè)性簽名詞云.html')


# 下載好友頭像,此步驟消耗時(shí)間比較長(zhǎng)
def download_head_image(thread_name):

    # 隊(duì)列不為空的情況
    while(not queue_head_image.empty()):
        # 取出一個(gè)好友元素
        user = queue_head_image.get()

        # 下載該好友頭像,并保存到指定位置,生成一個(gè)15位數(shù)的隨機(jī)字符串
        random_file_name = ''.join([str(random.randint(0,9)) for x in range(15)])
        user.get_avatar(save_path='image/' + random_file_name + '.jpg')

        # 輸出提示
        print(u'線程%d:正在下載微信好友頭像數(shù)據(jù),進(jìn)度%d/%d,請(qǐng)耐心等待……' %(thread_name, len(friends)-queue_head_image.qsize(), len(friends)))




# 生成一個(gè)html文件,并保存到文件file_name中
def generate_html(file_name):
    with open(file_name, 'w', encoding='utf-8'as f:
        data = '''
            <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
            <meta charset="UTF-8">
            <title>一鍵生成微信個(gè)人專屬數(shù)據(jù)報(bào)告(了解你的微信社交歷史)</title>
            <meta name='keywords' content='微信個(gè)人數(shù)據(jù)'>
            <meta name='description' content=''> 


            <iframe name="iframe1" marginwidth=0 marginheight=0 width=100% height=60% src="data/好友地區(qū)分布.html" frameborder=0></iframe>
            <iframe name="iframe2" marginwidth=0 marginheight=0 width=100% height=60% src="data/某省好友地區(qū)分布.html" frameborder=0></iframe>
            <iframe name="iframe3" marginwidth=0 marginheight=0 width=100% height=60% src="data/好友性別比例.html" frameborder=0></iframe>
            <iframe name="iframe4" marginwidth=0 marginheight=0 width=100% height=60% src="data/你認(rèn)識(shí)的好友比例.html" frameborder=0></iframe>
            <iframe name="iframe5" marginwidth=0 marginheight=0 width=100% height=60% src="data/你最親密的人.html" frameborder=0></iframe>
            <iframe name="iframe6" marginwidth=0 marginheight=0 width=100% height=60% src="data/特殊好友分析.html" frameborder=0></iframe>
            <iframe name="iframe7" marginwidth=0 marginheight=0 width=100% height=60% src="data/共同所在群聊分析.html" frameborder=0></iframe>
            <iframe name="iframe8" marginwidth=0 marginheight=0 width=100% height=60% src="data/好友個(gè)性簽名詞云.html" frameborder=0></iframe>
            <iframe name="iframe9" marginwidth=0 marginheight=0 width=100% height=60% src="data/微信好友頭像拼接圖.html" frameborder=0></iframe>
            <iframe name="iframe10" marginwidth=0 marginheight=0 width=100% height=60% src="data/使用人臉的微信好友頭像拼接圖.html" frameborder=0></iframe>
        '''

        f.write(data)



# 初始化所需文件夾
def init_folders():
    if(not (exists('image'))):
        makedirs('image')
    else:
        rmtree('image')
        makedirs('image')

    if(not (exists('data'))):
        makedirs('data')
    else:
        rmtree('data')
        makedirs('data')



# 拼接所有微信好友頭像
def merge_head_image():
    # 拼接頭像
    pics = listdir('image')  # 得到user目錄下的所有文件,即各個(gè)好友頭像
    numPic = len(pics)
    eachsize = int(math.sqrt(float(640 * 640) / numPic))  # 先圈定每個(gè)正方形小頭像的邊長(zhǎng),如果嫌小可以加大
    numrow = int(640 / eachsize)
    numcol = int(numPic / numrow)  # 向下取整
    toImage = Image.new('RGB', (eachsize * numrow, eachsize * numcol))  # 先生成頭像集模板

    x = 0  # 小頭像拼接時(shí)的左上角橫坐標(biāo)
    y = 0  # 小頭像拼接時(shí)的左上角縱坐標(biāo)

    for index, i in enumerate(pics):

        print(u'正在拼接微信好友頭像數(shù)據(jù),進(jìn)度%d/%d,請(qǐng)耐心等待……' % (index + 1, len(pics)))

        try:
            # 打開圖片
            img = Image.open('image/' + i)
        except IOError:
            print(u'Error: 沒(méi)有找到文件或讀取文件失敗')
        else:
            # 縮小圖片
            img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
            # 拼接圖片
            toImage.paste(img, (x * eachsize, y * eachsize))
            x += 1
            if x == numrow:
                x = 0
                y += 1

    toImage.save('data/拼接' + ".jpg")


    # 生成一個(gè)網(wǎng)頁(yè)
    with open('data/微信好友頭像拼接圖.html''w', encoding='utf-8'as f:
        data = '''
            <!DOCTYPE html>
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
                  <meta charset="utf-8" /> 
                  <title>微信好友頭像拼接圖</title> 
            </head>
            <body>
                <p><font size=4px><strong>微信好友頭像拼接圖</strong></font></p>
                      
                <img src="拼接.jpg" />
            </body>
            </html>
        '''

        f.write(data)



# 檢測(cè)使用真實(shí)人臉的好友個(gè)數(shù)
def detect_human_face():

    # 得到user目錄下的所有文件名稱,即各個(gè)好友頭像
    pics = listdir('image')

    # 使用人臉的頭像個(gè)數(shù)
    count_face_image = 0

    # 存儲(chǔ)使用人臉的頭像的文件名
    list_name_face_image = []

    # 加載人臉識(shí)別模型
    face_cascade = CascadeClassifier('model/haarcascade_frontalface_default.xml')

    for index, file_name in enumerate(pics):
        print(u'正在進(jìn)行人臉識(shí)別,進(jìn)度%d/%d,請(qǐng)耐心等待……' % (index+1, len(pics)))
        # 讀取圖片
        img = imread('image/' + file_name)

        # 檢測(cè)圖片是否讀取成功,失敗則跳過(guò)
        if img is None:
            continue

        # 對(duì)圖片進(jìn)行灰度處理
        gray = cvtColor(img, COLOR_BGR2GRAY)
        # 進(jìn)行實(shí)際的人臉檢測(cè),傳遞參數(shù)是scaleFactor和minNeighbor,分別表示人臉檢測(cè)過(guò)程中每次迭代時(shí)圖
        faces = face_cascade.detectMultiScale(gray, 1.35)
        if (len(faces) > 0):
            count_face_image += 1
            list_name_face_image.append(file_name)

    print(u'使用人臉的頭像%d/%d' %(count_face_image,len(pics)))



    # 開始拼接使用人臉的頭像
    pics = list_name_face_image
    numPic = len(pics)
    eachsize = int(math.sqrt(float(640 * 640) / numPic))  # 先圈定每個(gè)正方形小頭像的邊長(zhǎng),如果嫌小可以加大
    numrow = int(640 / eachsize)
    numcol = int(numPic / numrow)  # 向下取整
    toImage = Image.new('RGB', (eachsize * numrow, eachsize * numcol))  # 先生成頭像集模板

    x = 0  # 小頭像拼接時(shí)的左上角橫坐標(biāo)
    y = 0  # 小頭像拼接時(shí)的左上角縱坐標(biāo)

    for index, i in enumerate(pics):

        print(u'正在拼接使用人臉的微信好友頭像數(shù)據(jù),進(jìn)度%d/%d,請(qǐng)耐心等待……' %(index+1,len(pics)))
        try:
            # 打開圖片
            img = Image.open('image/' + i)
        except IOError:
            print(u'Error: 沒(méi)有找到文件或讀取文件失敗')
        else:
            # 縮小圖片
            img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
            # 拼接圖片
            toImage.paste(img, (x * eachsize, y * eachsize))
            x += 1
            if x == numrow:
                x = 0
                y += 1

    toImage.save('data/使用人臉的拼接' + ".jpg")


    # 生成一個(gè)網(wǎng)頁(yè)
    with open('data/使用人臉的微信好友頭像拼接圖.html''w', encoding='utf-8'as f:
        data = '''
            <!DOCTYPE html>
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
                  <meta charset="utf-8" /> 
                  <title>使用人臉的微信好友頭像拼接圖</title> 
            </head>
            <body>
                <p><font size=4px><strong>描述內(nèi)容</strong></font></p>
                      
                <img src="使用人臉的拼接.jpg" />
            </body>
            </html>
        '''


        data = data.replace('描述內(nèi)容','在{}個(gè)好友中,有{}個(gè)好友使用真實(shí)的人臉作為頭像'.format(len(friends), count_face_image))
        f.write(data)


# 特殊好友分析
def analyze_special_friends():

    # 星標(biāo)好友(很重要的人), 不讓他看我的朋友圈的好友, 不看他朋友圈的好友, 消息置頂好友, 陌生人
    star_friends, hide_my_post_friends, hide_his_post_friends, sticky_on_top_friends, stranger_friends = 00000

    for user in friends:


        # 星標(biāo)好友為1,為0表示非星標(biāo),不存在星標(biāo)選項(xiàng)的為陌生人
        if('StarFriend' in (user.raw).keys()):
            if((user.raw)['StarFriend'] == 1):
                star_friends += 1
        else:
            stranger_friends += 1

        # 好友類型及權(quán)限:1和3好友,259和33027不讓他看我的朋友圈,65539和65537和66051不看他的朋友圈,65795兩項(xiàng)設(shè)置全禁止, 73731陌生人
        if((user.raw)['ContactFlag'in [2593302765795]):
            hide_my_post_friends += 1
        if ((user.raw)['ContactFlag'in [66051655376553965795]):
            hide_his_post_friends += 1

        # 消息置頂好友為2051
        if ((user.raw)['ContactFlag'in [2051]):
            sticky_on_top_friends += 1

        # 陌生人
        if ((user.raw)['ContactFlag'in [73731]):
            stranger_friends += 1


    bar = Bar()
    bar.add_xaxis(['星標(biāo)''不讓他看我朋友圈''不看他朋友圈''消息置頂''陌生人'])
    bar.add_yaxis('特殊好友分析', [star_friends, hide_my_post_friends, hide_his_post_friends, sticky_on_top_friends, stranger_friends])
    bar.render('data/特殊好友分析.html')



# 共同所在群聊成員分析
def group_common_in():

    # 獲取所有活躍的群聊
    groups = bot.groups()

    # 每個(gè)好友與你相同的群聊個(gè)數(shù)
    dict_common_in = {}

    # 遍歷所有好友,第0個(gè)為你自己,所以去掉
    for x in friends[1:]:
        # 依次在每個(gè)群聊中搜索
        for y in groups:
            # x在y中
            if(x in y):
                # 獲取微信名稱
                name = x.nick_name
                # 判斷是否有備注,有的話就使用備注
                if(x.remark_name and x.remark_name != ''):
                    name = x.remark_name

                # 增加計(jì)數(shù)
                if(name in dict_common_in.keys()):
                    dict_common_in[name] += 1
                else:
                    dict_common_in[name] = 1

    # 從dict_common_in結(jié)果中取出前n大個(gè)數(shù)據(jù)
    n = 0

    if(len(dict_common_in) > 5):
        n = 6
    elif(len(dict_common_in) > 4):
        n = 5
    elif(len(dict_common_in) > 3):
        n = 4
    elif(len(dict_common_in) > 2):
        n = 3
    elif(len(dict_common_in) > 1):
        n = 2
    elif(len(dict_common_in) > 0):
        n = 1

    # 排序,并轉(zhuǎn)化為list
    sort_list = sorted(dict_common_in.items(), key=lambda item: item[1], reverse=True)

    # 取出前n大的值
    sort_list = sort_list[:n]

    bar = Bar()
    bar.add_xaxis([x[0for x in sort_list])
    bar.add_yaxis("共同所在群聊分析", [x[1for x in sort_list])
    bar.render('data/共同所在群聊分析.html')


# 運(yùn)行前,請(qǐng)先確保安裝了所需庫(kù)文件
# 若沒(méi)安裝,請(qǐng)執(zhí)行以下命令:pip install -r requirement.txt
if __name__ == '__main__':

    # 初始化所需文件夾
    init_folders()


    # 啟動(dòng)微信機(jī)器人,自動(dòng)根據(jù)操作系統(tǒng)執(zhí)行不同的指令
    if('Windows' in system()):
        # Windows
        bot = Bot()
    elif('Darwin' in system()):
        # MacOSX
        bot = Bot(cache_path=True)
    elif('Linux' in system()):
        # Linux
        bot = Bot(console_qr=2,cache_path=True)
    else:
        # 自行確定
        print(u"無(wú)法識(shí)別你的操作系統(tǒng)類型,請(qǐng)自己設(shè)置")
        exit()


    # 獲取好友數(shù)據(jù)
    print(u'正在獲取微信好友數(shù)據(jù)信息,請(qǐng)耐心等待……')
    friends = bot.friends(update=False)
    # i.nick_name, i.remark_name, i.sex, i.province, i.city, i.signature
    print(u'微信好友數(shù)據(jù)信息獲取完畢\n')


    print(u'正在分析你的群聊,請(qǐng)耐心等待……')
    group_common_in()
    print(u'分析群聊完畢\n')


    print(u'正在獲取微信好友頭像信息,請(qǐng)耐心等待……')
    # 創(chuàng)建一個(gè)隊(duì)列,用于多線程下載頭像,提高下載速度
    queue_head_image = Queue()

    # 將每個(gè)好友元素存入隊(duì)列中
    # 如果為了方便調(diào)試,可以僅僅插入幾個(gè)數(shù)據(jù),friends[1:10]
    for user in friends:
        queue_head_image.put(user)

    # 啟動(dòng)10個(gè)線程下載頭像
    for i in range(110):
        t = Thread(target=download_head_image,args=(i,))
        t.start()
    print(u'微信好友頭像信息獲取完畢\n')


    print(u'正在分析好友性別比例,請(qǐng)耐心等待……')
    sex_ratio()
    print(u'分析好友性別比例完畢\n')


    print(u'正在分析好友地區(qū)分布,請(qǐng)耐心等待……')
    region_distribution()
    print(u'分析好友地區(qū)分布完畢\n')

    print(u'正在統(tǒng)計(jì)你認(rèn)識(shí)的好友,請(qǐng)耐心等待……')
    statistics_friends()
    print(u'統(tǒng)計(jì)你認(rèn)識(shí)的好友完畢\n')

    print(u'正在分析你最親密的人,請(qǐng)耐心等待……')
    analyze_remark_name()
    print(u'分析你最親密的人完畢\n')

    print(u'正在分析你的特殊好友,請(qǐng)耐心等待……')
    analyze_special_friends()
    print(u'分析你的特殊好友完畢\n')

    print(u'正在分析你的好友的個(gè)性簽名,請(qǐng)耐心等待……')
    analyze_signature()
    print(u'分析你的好友的個(gè)性簽名完畢\n')




    # 由于下載頭像是多線程進(jìn)行,并且存在可能下載時(shí)間比較久的情況
    # 所以當(dāng)我們完成所有其他功能以后,需要等待微信好友頭像數(shù)據(jù)下載完畢后再進(jìn)行操作
    while(not queue_head_image.empty()):
        sleep(1)

    print(u'正在拼接所有微信好友頭像數(shù)據(jù),請(qǐng)耐心等待……')
    merge_head_image()
    print(u'拼接所有微信好友頭像數(shù)據(jù)完畢\n')

    print(u'正在檢測(cè)使用人臉作為頭像的好友數(shù)量,請(qǐng)耐心等待……')
    detect_human_face()
    print(u'檢測(cè)使用人臉作為頭像的好友數(shù)量完畢\n')


    # 生成一份最終的html文件
    print(u'所有數(shù)據(jù)獲取完畢,正在生成微信個(gè)人數(shù)據(jù)報(bào)告,請(qǐng)耐心等待……')
    generate_html('微信個(gè)人數(shù)據(jù)報(bào)告.html')
    print(u'生成微信個(gè)人數(shù)據(jù)報(bào)告完畢,該文件為當(dāng)前目錄下的[微信個(gè)人數(shù)據(jù)報(bào)告.html]\n')


    # 調(diào)用系統(tǒng)方式自動(dòng)打開這個(gè)html文件
    print(u'已為你自動(dòng)打開 微信個(gè)人數(shù)據(jù)報(bào)告.html')
    open_html('微信個(gè)人數(shù)據(jù)報(bào)告.html')

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于iframe實(shí)現(xiàn)打印
jquery easyui tab加載內(nèi)容的幾種方法
JS打印指定頁(yè)面且去樣式后的內(nèi)容,window.print
html 打印相關(guān)操作與實(shí)現(xiàn)詳解
原始數(shù)據(jù)都一樣,為啥Pyecharts做出來(lái)的圖一個(gè)是彩色的,另一個(gè)是黑白的?
extjs 組件打印 問(wèn)題
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服