itchat 保存好友信息以及生成好友头像图片墙
2019 第 41 篇,總第 65 篇文章
本文大約 4000?字,閱讀大約需要 12?分鐘
最近簡單運用 itchat 這個庫來實現一些簡單的應用,主要包括以下幾個應用:
統計保存好友的數量和信息
統計和保存關注的公眾號數量和信息
簡單生成好友頭像的圖片墻,利用一個第三方庫生成馬賽克風格的圖片墻
itchat 的 github 項目地址如下,這是一個開源的微信個人接口:
https://github.com/littlecodersh/ItChat
這個庫的安裝也很簡單,直接用?pip install itchat?即可安裝
接下來就開始介紹如何利用這個庫來實現上述操作。
1. 統計保存好友的數量和信息
首先是微信登錄,簡單的幾行代碼即可實現:
import?itchat#?避免頻繁掃描二維碼登錄 itchat.auto_login(hotReload=True) itchat.dump_login_status()運行這段代碼后,就會彈出一個二維碼,進行掃描登錄,其中?hotReload=True?是保證不用每次運行程序都需要彈出二維碼掃描登錄。
然后是獲取好友的信息:
we_friend?=?itchat.get_friends(update=True)[:]這里?we_friend?就是保存了好友信息的一個字典,并且?we_friend[0]?是保存用戶自己的信息,從we_friend[1]?開始才是真正的好友的信息,這里我們將主要保存以下信息:
| NickName | 昵稱 |
| RemarkName | 備注 |
| Sex | 性別 |
| Province | 省份 |
| City | 城市 |
| Signature | 簽名 |
保存好友的信息代碼如下:
friends?=?we_friend[1:] total_numbers?=?len(friends) print('你的好友數量為:?{}'.format(total_numbers)) friend_infos_dict?=?{} for?fri_info?in?friends:for?key?in?friend_key:if?friend_infos_dict.get(key,?False):friend_infos_dict[key].append(fri_info[key])else:friend_infos_dict[key]?=?[fri_info[key]] #?保存信息 fri_save_file_name?=?os.path.join(save_file_path,?'好友信息.csv') df?=?pd.DataFrame(friend_infos_dict) df.to_csv(fri_save_file_name,?sep=',')其中?save_file_path?是指定保存好友信息文件的文件夾路徑,
2. 保存公眾號信息
獲取公眾號信息并保存的代碼如下:
#?公眾號獲取的信息內容,分別是昵稱、城市、城市、簽名 mps_key?=?['NickName',?'City',?'Province',?'Signature'] #?獲取公眾號信息 mps?=?itchat.get_mps(update=True) mps_num?=?len(mps) print('你關注的公眾號數量:?{}'.format(mps_num))mps_save_file_name?=?os.path.join(save_file_path,?'公眾號信息.csv') mps_dict?=?{} for?mp?in?mps:for?key?in?mps_key:if?mps_dict.get(key,?False):mps_dict[key].append(mp[key])else:mps_dict[key]?=?[mp[key]]df?=?pd.DataFrame(mps_dict) df.to_csv(mps_save_file_name,?sep=',',?encoding='utf-8')3. 生成好友頭像圖片墻
首先同樣需要獲取好友的頭像,并保存到本地,代碼如下:
def?save_head_photo(save_photo_dir):itchat.auto_login(hotReload=True)itchat.dump_login_status()friends?=?itchat.get_friends(update=True)[1:]#?采集好友頭像并保存到本地num?=?0for?fri?in?friends:img?=?itchat.get_head_img(userName=fri['UserName'])img_path?=?os.path.join(save_photo_dir,?str(num)?+?'.jpg')if?not?os.path.exists(img_path):file_image?=?open(img_path,?'wb')file_image.write(img)file_image.close()num?+=?1print('完成好友頭像保存至路徑:?',?save_photo_dir)其中獲取頭像的函數是?itchat.get_head_image()?。
接著就是生成好友頭像的圖片墻,這里有兩種方式,第一種是比較常規的生成方法。首先需要導入以下庫
import?itchat import?math import?PIL.Image?as?Image import?os接著是設置畫布大小及每行的頭像數量,頭像的大小,代碼是:
?#?畫布大小image_size?=?1280#?算出每張圖片的大小多少合適each_size?=?int(math.sqrt(float(image_size?*?image_size)?/?len(ls)))#?每行圖片數量lines?=?int(image_size?/?each_size)print('each_size={},?lines={}'.format(each_size,?lines))#?創建?1280*1280?的畫布image?=?Image.new('RGBA',?(image_size,?image_size))利用的是?pillow?庫,安裝方式是?pip install pillow?。這里我設置的畫布大小就是 1280 * 1280。
然后就是讀取保存的頭像,并逐一粘貼到畫布上,代碼如下:
#?讀取保存的好友頭像圖片 ls?=?os.listdir(save_photo_dir) for?i?in?range(0,?len(ls)):try:img_path?=?os.path.join(save_photo_dir,?str(i)?+?".jpg")img?=?Image.open(img_path)except?IOError:print("Error?for?image:?{}".format(img_path))else:img?=?img.resize((each_size,?each_size),?Image.ANTIALIAS)image.paste(img,?(x?*?each_size,?y?*?each_size))??#?粘貼位置x?+=?1if?x?==?lines:??#?換行x?=?0y?+=?1image.save(os.path.join(os.getcwd(),?"好友頭像拼接圖.jpg"))第二種是參考了?當 Python 遇上你的微信好友?介紹的第三方庫?photomosaic?,安裝方法也很簡單:
pip?install?photomosaic這個第三方庫可以生成蒙太奇馬賽克風格的圖片或者視頻。
實現代碼如下:
import?photomosaic?as?pmdef?create_photomosaic(save_photo_dir,?background_photo):#?讀取背景圖片bg_photo?=?pm.imread(background_photo)#?讀取好友頭像圖片,定義圖片庫pool?=?pm.make_pool(os.path.join(save_photo_dir,?'*.jpg'))#?制作?50*50?的拼圖馬賽克image?=?pm.basic_mosaic(bg_photo,?pool,?(50,?50))#?保存結果pm.imsave('馬賽克好友頭像圖片.jpg',?image)其中上述的四行代碼也是最基本的使用代碼,包括:
選擇背景圖片
定義圖片庫
制作馬賽克拼圖
保存圖片
這里我簡單選擇了下面這張背景圖片:
生成結果如下:
小結
簡單運用 itchat 實現了以上三個小應用,實際上還可以有更多的應用,比如再根據好友信息分析性別比例、好友區域分布、簽名的情感分析、關注的公眾號類別、給特定的好友發送信息,以及制作微信機器人等。
本文的代碼已經上傳到 github 上:
https://github.com/ccc013/Python_Notes/tree/master/Projects/wechatProjects/itchat
也可以按如下操作獲取代碼:
1.關注公眾號“機器學習與計算機視覺”itchat",即可獲取代碼
參考:
手把手教你用itchat統計好友信息,了解一下?
當 Python 遇上你的微信好友
歡迎關注我的微信公眾號--機器學習與計算機視覺,或者掃描下方的二維碼,大家一起交流,學習和進步!
往期精彩推薦
機器學習系列
初學者的機器學習入門實戰教程!
模型評估、過擬合欠擬合以及超參數調優方法
常用機器學習算法匯總比較(完)
常用機器學習算法匯總比較(上)
機器學習入門系列(2)--如何構建一個完整的機器學習項目(一)
特征工程之數據預處理(上)
Github項目 & 資源教程推薦
[Github 項目推薦] 一個更好閱讀和查找論文的網站
[資源分享] TensorFlow 官方中文版教程來了
必讀的AI和深度學習博客
[教程]一份簡單易懂的 TensorFlow 教程
[資源]推薦一些Python書籍和教程,入門和進階的都有!
[Github項目推薦] 機器學習& Python 知識點速查表
[Github項目推薦] 推薦三個助你更好利用Github的工具
Github上的各大高校資料以及國外公開課視頻
這些單詞你都念對了嗎?順便推薦三份程序員專屬英語教程!
總結
以上是生活随笔為你收集整理的itchat 保存好友信息以及生成好友头像图片墙的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字体直链提取器_MIUI主题直链提取器下
- 下一篇: Linux文件目录基础笔记