Python 520告白特技:隱藏在聊天記錄裡的珍貴禮物

2021-02-13 Python實用寶典

馬上又雙叒叕是一年一度的戀愛節了!

又是一波絕好的機會!恩愛秀起來!

購物車清空!禮物送起來!朋友圈曬起來!

等等!什麼?!

你還沒準備好禮物麼?

但其實你不知道要送啥?

原來又雙叒叕要到

全民不知道送什麼禮物的系列日子了…

哎呦 你們這些

磨人的小(lao)妖(you)精(tiao)!

Python倒是覺得你還可以搶救一下!

說到詞雲應該不陌生,不知道的童靴往下看

詞雲,就是把網絡文本中出現頻率較高

"關鍵詞"予以視覺上的突出

瀏覽者只要一眼掃過文本就可以領略其主旨 

瞧 這是不是一個有聲音、有畫面的小愛心~

今天 我們採集情侶們之間的聊天日常

用此製作一份只屬於你們的小浪漫!

一、導出自己和對象的數據~

微信的備份功能並不能直接給你導出文本格式,它導出來其實是一種叫sqlite的資料庫。如果說用網上流傳的方法提取文本數據,iOS則需要下載itunes備份整機,安卓則需要本機的root權限,無論是哪種都非常麻煩,在這裡給大家介紹一種不需要整機備份和本機root權限,只導出和對象的聊天數據的方法。

那就是使用安卓模擬器導出,這樣既能ios/安卓通用,又能夠避免對本機造成不良影響,首先需要用電腦版的微信備份你和你對象的聊天記錄。以windows系統為例:

1. 下載夜神模擬器2. 在夜神模擬器中下載微信


3. 使用windows客戶端版的微信進行備份,如圖左下角


4. 點擊備份聊天記錄至電腦


5. 手機端選擇備份的對象

點擊進入下方的選擇聊天記錄,然後選擇和你對象的記錄

6. 導出完畢後打開模擬器,登錄模擬器的微信


7. 登錄成功後返回電腦版微信登錄,打開備份與恢復,選擇恢復聊天記錄到手機

選擇恢復記錄至手機

8. 勾選我們剛剛導出的聊天記錄,並在手機上點擊開始恢復


9. 打開夜神模擬器的root權限


10.   用模擬器的瀏覽器百度搜索RE文件管理器,下載(圖一)安裝後打開,會彈出對話框讓你給予root權限,選擇永久給予,打開RE文件管理器(圖二),進入以下文件夾(圖三), 這是應用存放數據的地方。/data/data/com.tencent.mm/MicroMsg

圖一

圖二

圖三

然後進入一個由數字和字母組合而成的文件夾,如上 圖三 的 

4262333387ddefc95fee35aa68003cc5

11. 找到該文件夾下的EnMicroMsg.db文件,將其複製到夜神模擬器的共享文件夾(圖四)。共享文件夾的位置為 /mnt/shell/emulated/0/others ( 圖五 )。現在訪問windows的 C:\Users\你的用戶名\Nox_share\OtherShare 獲取該資料庫文件( EnMicroMsg.db )。

圖四

圖五

12. 導出該資料庫後,使用一款叫 sqlcipher 的軟體讀取數據(連結: https://pan.baidu.com/s/1Im3n02yseo-4IxeDY9srqQ 提取碼: ka4z)

在這之前,我們還需要知道該資料庫的密碼,根據前人的經驗,該密碼的公式如下

字符串 IMEI (手機序列號) UIN(用戶信息號)

將該字符串進行MD5計算後的前七位便是該資料庫的密碼

如 "355757010761231 857456862" 實際上中間沒有空格,然後放入MD5計算取前面七位數字,後續會詳細介紹

哇,真是「簡單易懂」啊,沒關係,接下來告訴大家IMEI和UIN怎麼獲得。

首先是IMEI,在模擬器右上角的系統設置 —— 屬性設置裡就可以找得到啦,如圖所示。

現在我們獲得了IMEI號,那UIN號呢?

同樣地,用RE文件管理器打開這個文件

/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml

長按改文件,點擊右上角的三個點—選擇打開方式—文本瀏覽器,找到default_uin,後面的數字就是了 !

得到這兩串數字後,就可以開始計算密碼啦,如果我的IMEI是355757010762041,Uin是857749862,那麼合起來就是355757010762041857749862,將這串數字放入免費MD5在線計算

得到的數字的前七位就是我們的密碼了,像這一串就是 6782538. 如果uin是負的話,試試uin拼接手機IMEI碼(直接連在一起算MD5),取MD5的32位小寫密文前7個字符。

然後我們就可以進入我們的核心環節:使用 sqlcipher 導出聊天文本數據!

sqlcipher

點擊 File - open database - 選擇我們剛剛的資料庫文件,會彈出框框讓你輸入密碼,我們輸入剛剛得到的七位密碼,就可以進入到資料庫了,選擇message表格,這就是你與你的對象的聊天記錄!

我們可以將它導出成csv文件:File - export - table as csv.

接下來,我們將使用Python代碼,將裡面真正的聊天內容:content信息提取出來,如下所示。雖然這個軟體也允許select,但是它select後不允許導出,非常不好用,因此還不如我們自己寫一個:

將該文件命名為extract.py,windows打開CMD / macOS系統打開Terminal  進入到該文件夾下,執行命令:

記得把生成csv文件的編碼格式轉換成utf-8哦,不然可能會運行不下去:

用記事本打開—文件—另存為—編碼改為UTF-8即可

當然你還可以用正則表達式去除以下內容

不過我覺得這些也是必要的聊天信息之一,留著也無妨,因此在這裡就不加入進去啦,有需要的同學可以百度搜索python 正則表達式,學習正則表達式的使用。

最後得到的文本格式就是一行一句聊天內容,處理後我們就準備好進入下一個環節了!那就是令人激動的!生成詞雲!!

二、根據第一步得到的聊天數據生成詞雲1. 導入我們的聊天記錄,並對每一行進行分詞

聊天記錄是一行一行的句子,我們需要使用分詞工具把這一行行句子分解成由詞語組成的數組,這時候我們就需要用到結巴分詞了。

分詞後我們還需要去除詞語裡一些語氣詞、標點符號等等(停用詞),然後還要自定義一些詞典,比如說你們之間恩恩愛愛的話,一般結巴分詞是無法識別出來的,需要你自行定義,比如說:小傻瓜別感冒了,一般分詞結果是:

小/傻瓜/別/感冒/了


如果你把「小傻瓜」加入到自定義詞典裡(我們下面的例子裡是mywords.txt),則分詞結果則會是:

小傻瓜/別/感冒/了


下面對我們的聊天記錄進行分詞:

在這個函數裡,我們使用了codecs打開我們的聊天記錄文件,然後進行結巴分詞,最終返回一個包含所有詞語的數組。記得運行前要安裝jieba分詞包,默認你已經安裝了python3,如果沒有請查閱這個文檔:

https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624

windows打開CMD / macOS系統打開Terminal 輸入:

pip install jieba

安裝完成後,在編輯器中輸入我們剛剛的python代碼,我將其命名為segment.py,切記在同個目錄下放置 聊天記錄.txt 及 自定義詞表 mywords.txt, 然後在CMD/Terminal中輸入命令運行

python segment.py

你就可以看見你們的聊天記錄分詞後的效果啦

2. 計算分詞後的詞語對應的頻數

為了方便計算,我們需要引入一個叫pandas的包,然後為了計算每個詞的個數,我們還要引入一個叫numpy的包,cmd/terminal中輸入以下命令安裝pandas和numpy:

詳細的解析我都寫在下方的注釋裡啦,大家可以自行閱讀並實踐。不過需要注意的是,裡面的load_file_segment()是我們第一步裡的函數,如果你不知道如何把這兩個步驟合在一起,沒關係,最後我們會提供一份完整的代碼.


同第一步一樣,運行這份代碼你就可以看到每個詞語及其對應的頻數。需要注意的是,這裡有個加載停用詞的操作,你需要把停用詞表放在當前文件夾下,我們這裡提供一份停用詞表下載

stopwords.txt: https://pythondict.com/wp-content/uploads/2019/08/2019080607572893.txt

3. 生成詞雲

終於到了最後一部分啦!你是不是開心而又滿懷激動的心情呢(滑稽,在這一步開始之前,我們需要先安裝需要使用的包,我們需要用到的包有:

pip install matplot

pip install scipy==1.2.1

pip install wordcloud

打開CMD/Terminal 輸入以上命令即可安裝,加上之前兩個步驟的包,有:

如果你在安裝這些包的時候出現了什麼問題,請記得在我們下方評論區提出,我們會一一解答的哦。

運行目錄的文件結構如下:

完整代碼,wordCloud.py 如下,附有詳細的解析:


點擊下方閱讀原文可以獲得文字版的完整代碼!在公眾號後臺回復 情人節禮物 可以直接下載包括代碼、圖片、字體的完整資源。

值得注意的是這裡面的bimg和wordcloud對象的生成,我們知道png格式背景一般是透明的,因此如果你的圖像是png格式的話,其生成詞雲的時候背景色應該設為None,然後mode應該設為RGBA。

我們還可以控制詞雲字體的大小和數目的多少,使用下面這兩個參數:

max_font_size=60, max_words=3000

調用方式如下所示:

wordcloud = WordCloud(background_color='white', mask=bimg, max_font_size=x, max_words=y, font_path='simhei.ttf') 

運行前,確保安裝了所有的包,並且當前目錄下有我們所需要的所有文件哦

下面就可以用我們的聊天記錄,畫心型詞雲啦!!!:

CMD/Terminal 進入代碼所在文件夾,運行:python wordcloud.py

得到的圖像如下:


怎麼樣,是不是很好看,如果你想要這些圖片的原圖做一個屬於自己的詞雲的話,請訪問python實用寶典的官網,點擊下方閱讀原文直達!還有原始碼等著你哦!在公眾號後臺回復 情人節禮物 也可以直接下載包括代碼、圖片、字體的完整資源。最後,祝大家有情人眾人眷屬!

如果你喜歡今天的Python 教程,請持續關注Python實用寶典,如果對你有幫助,麻煩在下面點一個贊/在看,有任何問題都可以在下方留言,我們會耐心解答的!

點擊下方閱讀原文可以獲取所有代碼和連結哦!

Python實用寶典 (pythondict.com)

不只是一個寶典

相關焦點

  • Python 情人節告白特技:隱藏在聊天記錄裡的珍貴禮物
    等等!什麼?!你還沒準備好禮物麼?但其實你不知道要送啥?導入我們的聊天記錄,並對每一行進行分詞聊天記錄是一行一行的句子,我們需要使用分詞工具把這一行行句子分解成由詞語組成的數組,這時候我們就需要用到結巴分詞了。
  • 七夕告白特技:聊天記錄裡,都是我愛你
    禮物送起來!朋友圈曬起來!等等!什麼?!你還沒準備好七夕禮物麼?但其實你不知道要送啥?原來又雙叒叕要到了全民不知道送什麼禮物的系列日子了…導入我們的聊天記錄,並對每一行進行分詞聊天記錄是一行一行的句子,我們需要使用分詞工具把這一行行句子分解成由詞語組成的數組,這時候我們就需要用到結巴分詞了。
  • 520,親手做的禮物是最暖的告白!
    一年一度的520表白日!單身的你,會收到男神的告白嗎?擁有愛情的你,還會收穫驚喜嗎?對爸爸媽媽,對友仔閨蜜,對世界上所有善意懷有的人們,我們都想說一句——520,我愛你520來了,你準備好,怎麼向你愛的人表白了嗎?與其糾結買什麼禮物比較特殊,不如自己親手做一個獨一無二的小禮物,情誼滿滿,而且到哪都不用擔心「撞禮物」哦!(今天來不及送沒關係,明天521,還是「我愛你」!)
  • Python將QQ聊天記錄生成詞雲
    然而人生嘛,最重要的就是體驗,沉浸在過去的回憶裡沒有意義,積極面對才能讓自己更好地重振旗鼓。所以,當大家都一致地在這個活動裡各種秀恩愛時,我決定走一條不一樣的路來為單身狗和剛分手的小夥伴們打打氣:時間能改變的,是那些原本就不堅定的東西,未來的路還很長,笑一笑,一切都會過去的!
  • 520告白季 佳能小方口袋照片機送給她
    下周就是520告白季啦,年輕的你在這樣一個特殊的日子裡,是否期望向心儀的她告白呢?一頓浪漫的燭光晚餐也好,一次不經意的快樂出行也好,一束嬌豔的玫瑰也好,總要搭配一件精心挑選的禮物,才顯得夠特別!
  • 每一個告白都觸及真心!520,快說出你的心意吧
    我們在雙方最難過的日子裡互相傾聽訴說,在那之後我才發現,原來世界上真會有一個人,讓你真正體會到被愛的滋味。所以,我希望用盧冠廷的《但願人長久》裡唱的一句歌詞跟她告白:「漫長夜晚星若可不休,問人怎麼卻不會永久。」
  • 520禮物送什麼好? 520表白日給女友表白女生送什麼禮物推薦
    520禮物送什麼好? 520表白日給女友表白女生送什麼禮物推薦時間:2020-05-19 22:50   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:520禮物送什麼好?520表白日給女友表白女生送什麼禮物推薦 520表白日又要襲來了,各位小哥哥小姐姐有沒有準備好手中的禮物,在這個浪漫的日次裡來個會心一擊,今天小編為大家帶來送給女生的禮物清單,希望各位單身男士好好把握哦。 1、超豪華巧克力禮盒 52     原標題:520禮物送什麼好?
  • 520|最貼心的禮物
    520|最貼心的禮物 2020-05-20 16:12 來源:澎湃新聞·澎湃號·政務
  • python + wxpy, 和你聊天的可能是我的機器人小表弟
    之前看到一篇有關於python的文章是寫自動給女友每天晚上說晚安,就是在python裡用WXPY包連接微信,然後登陸(還是要你用手機掃描二維碼,
  • 520告白文案,那些經典電影裡的告白臺詞,總有一句打動你!
    520馬上就要到了,相信很多兄弟姐妹們已經開始給另一半準備禮物了。其實,節日本身的禮物並沒有那麼重要,重要的是藏在禮物背後的那份心意,節日的意義是為了提醒我們,不要忘了愛與被愛。520,有禮物自然也少不了暖心話,小編為大家準備了8條電影裡的動人告白文案,快快學起來吧!1、斯人若彩虹,遇上方知有。
  • 微信隱藏聊天記錄怎麼設置?微信隱藏聊天記錄在哪裡找出來?[多圖]
    微信隱藏聊天記錄功能怎麼使用?iOS7.0.16內測版本中,會有一個隱藏聊天記錄的功能,這個功能很多人還不了解具體的作用,能將你不想看到的聊天隱藏起來,具體的操作下面會有介紹,方便大家了解新的功能。微信隱藏聊天記錄設置方法1、聊天消息可設置「不顯示」在消息列表中左滑聯繫人時,菜單中多了一個黃色的「不顯示」按鈕。
  • 520送什麼禮物給女朋友,能浪漫一輩子
    520送什麼禮物給女朋友,能浪漫一輩子時間:2020-05-19 22:56   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:520送什麼禮物給女朋友,能浪漫一輩子 520諧音我愛你,超浪漫的網絡情人節即將來臨,在即將面臨的送禮告白熱潮裡,有野心的男士們力求的就是給女士一個終生難忘的520情人節禮物
  • 遇到520,斯柯達愛的告白
    噹噹噹噹噹噹當又快到了5?20 「我愛你」的表白日一年一度的國際虐狗日(其實只在中國)你想好怎麼告白了嗎?在地圖上為TA書寫出「520」一句印在大地的「我愛你」代表的是天長地久使用運動軟體記錄你的「520」形狀運動軌跡並截圖將截圖和個人信息發送至我們參加投票活動票數最高者將得到鑽戒一枚參加條件:限四川、重慶、雲南、貴州、廣西、西藏六省市。
  • 520專屬賀禮「超人」跨越銀河來告白
    年年歲歲花相似,歲歲年年人相同這麼多年的520,依舊還是一個人……不是終情君心比天高死傲嬌其實,是因為早已有一個人走到了我的心裡。他來自宇宙那邊另一個銀河系,他懲奸除惡可以拯救全人類,他有硬朗的臉龐和迷人的身材,聽說胸肌更是可以夾鉛筆!他就是每一個少年少女心中的超級英雄!
  • @男朋友,這才是我想要的520禮物!
    雅詩蘭黛今年520主打的#限定告白唇膏禮盒#沒有一支雞肋色號,人世間再也不會有收到死亡芭比粉還要假裝微笑的磨難!#520是和色號名一樣的熱情正紅色,夏天塗特別吸睛。#130是偏棕紅調的楓葉色,自帶細膩金閃,迷人的人間富貴花罷遼!#140是黃皮四季都很愛的復古紅棕色,自帶復古港風濾鏡。
  • 微信iOS內測版本再更新:群聊記錄可分享、聊天記錄可隱藏
    邀請人進群聊時,可以分享聊天記錄了 功能如題。不過,這個功能不是測試版裡的,而是7.0.15 for iOS版的。 先分享一個小故事,有一次聚餐,一位大佬在聚餐群裡發了個大紅包,不小心把人數多填了一個,參加聚餐的一位可愛的小夥伴為了搶多出來的紅包,就把自己的小號拉入了群裡。
  • 520送男朋友什麼禮物合適,看你男友是哪種類型?
    520送男朋友什麼禮物合適,看你男友是哪種類型?時間:2020-05-19 22:59   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:520送男朋友什麼禮物合適,看你男友是哪種類型?
  • 520女生渴望收到的禮物,讓女生瞬間感動的禮物
    兩人很熟悉,經常聊天,如何找女生渴望的禮物?讓女生瞬間感動的禮物。俗話說送禮物,就要送到心坎上。女生最關心的,其實不是禮物是怎樣,而是是否能感受到,你對他的關心呵護。如果送的禮物,恰好是她所需要的,那麼,她將對你的印象將更進一步。
  • 微信聊天記錄刪除了怎樣恢復?領取隱藏技能包
    微信聊天記錄刪除了怎樣恢復?領取隱藏技能包 2020年02月12日 20:12作者:網絡編輯:宏偉   微信聊天記錄不小心刪除了怎麼恢復
  • 520,搜狗輸入法AI助手寫起告白詩來,方文山也要靠邊站?
    在520之際,搜狗輸入法推出「智能汪仔,幫你寫愛的告白詩」主題H5,通過AI為你定製告白詩句這一玩法吸引用戶注意力、快速引爆,撩動年輕人的愛情告白式。同時,加強了年輕用戶對搜狗輸入法品牌以及智能AI助手汪仔的功能認知,H5頁面上線當天就收穫了千萬PV,共送出30萬條定製告白詩。