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

2021-02-26 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在線計算:
https://md5calculator.chromefans.org/?langid=zh-cn

得到的數字的前七位就是我們的密碼了,像這一串就是 6782538.

如果uin是負的話,可以試試uin拼接手機IMEI碼(就是和正的相反,進行拼接),取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 輸入:


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

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

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

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


pip install pandas==0.25.1
pip install 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 輸入以上命令即可安裝,加上之前兩個步驟的包,有:


pip install jieba
pip install codecs
pip install pandas==0.25.1
pip install numpy

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

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

完整代碼,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)

不只是一個寶典

相關焦點

  • 情人節的奇葩聊天機器人:太會撩!
    在這個糖分極高的節日裡,AI 聊天機器人也出來湊熱鬧了。他們到底有多會撩?/ 兩個機器人相愛了?/ 情人節禮物 AI 幫忙選?/還在為情人節不知道送什麼禮物發愁?印度首家對話式 AI 平臺 Haptik 在情人節期間曾推出了「禮物機器人」。這款機器人可以通過跟用戶聊天,了解他們挑選禮物的需求,並且為他們推薦在預算內的禮物。
  • 一般情人節送什麼好,情人節表白禮物推薦
    情人節表白禮物有哪些推薦?情人節是一個非常浪漫的節日,很多的情侶都會在這一天,給自己的男朋友或女朋友,送上自己心意的情人節禮物。
  • 男友送我的情人節禮物是高仿,我該不該分手?
    這幾天,本槓總是收到類似的「投訴」基本上都是圍繞著剛剛結束的「情人節禮物」的問題請看第一題↓↓↓其實禮物只是一段關係中的附加品一個人對你怎麼樣,還是得看平日裡的表現只要不是故意的欺騙是不是假貨有什麼關係呢?
  • 情人節送什麼禮物好_2016情人節禮物推薦創意
    情人節送什麼禮物好?我們準備了數千款浪漫時尚適合作為情侶禮物的情人節禮物推薦給您。情人節送什麼給女朋友?送出最浪漫的情人節禮物是男生們的心願。給女友送情人節禮物,要送上最有特色的情人節禮物,情人節那天讓她感動。情人節禮物有時候還會幫你達成心願的哦。
  • 揭秘 | 日本情人節裡的各種巧克力
    過幾天又到了一年一度的情人節(虐狗節)。眾所周知,日本人一年中一般會過兩個情人節,一個是2月14日這個傳統情人節(バレンタインデー),還有一個便是3月14日的白色情人節(ホワイトデー)。那麼你知道日本人在這天會選擇怎樣過節嗎?跟隨小編的腳步一起來了解一下吧~情人節嘛,巧克力肯定是必不可少的存在。雖然情人節並非來源於日本,但在這一天送巧克力的習慣,卻是在日本流行起來的。
  • 白色情人節,你一定不知道二維碼是用來告白的!
    一個月前的那一次情人節是第一次表白的日子,而今天的白色情人節,則是回應的日子。如果今天的表白不成功,那你則是過了一個黑色情人節。白色情人節興起源於日本的一家糖果店的一次促銷,一家名為石村萬盛堂的甜食製造商宣傳說在這一天男女雙方應當贈送甜點。由於當時的甜點大多數是白色的,也因此有了白色情人節的稱呼。白色情人節的熱潮從日本傳到了臺灣,又傳到了內地,而現在在回應心意的時候早已經不單單送禮了,你要學會用二維碼情書來輔助告白。
  • 韓語每日一句44:情人節如何甜蜜告白呢?
    在這種甜蜜的日子裡,你是否也準備告白呢?別人常說,不想以後後悔的話,有些話就親口說出來哦。還不知道要說啥好?在這種美好的日子裡,樂樂老師情人節韓語告白篇送給大家!可以用韓語或者中文向你喜歡的人告白吧❤讓你擁有韓劇般的浪漫↓↓
  • 情侶戒指一對純銀男女款對戒鑲施華洛世奇鋯生日情人節禮物送女友
    卡蒂羅&故宮上新手鍊女純銀手飾ins小眾設計情人節生日禮物送女友【在售價】 258.0【券後價】218.0掃描圖片二維碼下單一路鹿有你純銀手鍊女學生 ins小眾設計情侶手飾情人節禮物送女友【在售價】 85.0【券後價】65.0掃描圖片二維碼下單
  • 今天|我的情人節禮物
    今天是情人節。
  • 情人節怎麼過?鄧超送孫儷親手種的花,竇驍送何超蓮特別禮物
    2月14日是大年初三也是西方的情人節,在這個特別的日子裡,明星藝人們都會發文送祝福或是表白愛人。
  • 【日本文化】你不了解的日本情人節送巧克力習俗
    2月14日是情人節,說起情人節,是戀人、朋友、家人等一般都會互相贈送禮物,表達感謝的心情和愛的節日。
  • 情人節活動 禮物贈送介紹
    (* ̄^ ̄(* ̄^ ̄(* ̄^ ̄) 嘛,正如乃們知道的那樣~今天是情人節活動的第一天~從今天(2月14日)中午12點開始到3月13日,登陸即可到郵箱領取一份「本命禮物」啦~除了「本命禮物」,米娜桑也可以到全新的限時挑戰關裡獲得「義理禮物」~獲取到的「本命禮物」和「義理禮物」什麼的都可以在【裝備-當季特產】裡查看
  • 朋友圈2017情人節禮物爆笑實用指南,送金銀花的往死裡揍
    更多有趣好玩,請關注【西風野馬】又到了一年一度的情人節,首先祝各位情人節快樂!
  • 聊天記錄曝光……
    就遇上了這麼一個完美的她林先生是在交友軟體上認識的網友雨晴二人隨後發展成了男女朋友交往中林先生得知女友本職工作是一名幼教晚上兼職做做主播沒想到在之後的一次直播中雨晴突然難過地痛哭起來林先生這才得知女友身體不好但公司有強制直播任務只要禮物達標
  • 最特殊的情人節禮物,朋友圈刷爆了!!
    說到收禮物我腦海裡第一個想到的就是電視劇裡的一個箱子裡大變活人 哈哈哈~ 過情人節巧克力是不可或缺的,市面上巧克力真是琳琅滿目。 可吃又合適的禮物。含著巧克力過情人節讓人有幸福的感覺。 送溫暖圍巾:暖的感覺在心裡捧在手中,甜在心中! 這個情人節,要有點不一樣! 不一樣(特別)的禮物,送給不一樣(特別)的你!
  • Python學習:mac電腦安裝python教程
    與python2.7 共存2 下載安裝包進入官方安裝包下載頁面,https://www.python.org/downloads/mac-osx/找到合適的安裝包,基本上mac電腦都是64位的系統,因此選擇64位的安裝包進行下載
  • 情人節,如何讓男人為你主動買禮物?
    女人要的不是禮物,而是心思。一個男人當面對你好的時候,不一定是真的喜歡你,也有可能是在裝紳士。只有每天迫不及待想見你,人前人後都對你好,各種想給你買禮物。這才是真的喜歡上你。因為男性求偶的象徵,就是渴望和奉獻。
  • 收到日本男生白色情人節回禮,笑尿了~
    白色情人節流行於日本、中國臺灣等地區,在送禮方面也不同:具體為2月14日女方送男方一份禮物,主要是巧克力,3月14日白色情人節,就該輪到男方送女方禮物了
  • 祝福「大夢夢」迎來最珍貴的生日禮物!
    喜上加喜的是:我們大夢夢贏得了人生中最珍貴的生日禮物!雙胞胎帥哥!接下來讓我們看看謝夢在《昕薇》雜誌社的歷程以及迎接這兩個小寶貝的過程吧!2016年3月1日大夢夢迎來人生中最珍貴的禮物!再次恭喜大夢夢喜得貴子提前迎來最珍貴的生日禮物!
  • 【告白】日本白色情人節,該如何將甜蜜成功返還給她?
    1980年,日本全國糖果點心業工會將其正式定為「糖果日」,也就是今天的白色情人節的前身。也有一種說法是,提出白色情人節的是全日本飴菓子工業協同組合。  年輕人之間開始出現情人節還禮潮後,全日本飴菓子工業協同組合於1978年6月決定將3月14日命名為「白色情人節」,即贈送糖果的日子,並於1980年3月由全日本飴菓子工業協同組合的關東部會舉行了第一次「白色情人節」活動,命名為「回應愛意的白色情人節」。  每年一到白色情人節,日本商家都會推出各種各樣的活動。