소스 검색

Merge branch 'feature/find_gromots' of DemiSel/Messenger_1Million_Stats into master

pull/6/head
Figg 10 달 전
부모
커밋
0cd1e9247b
2개의 변경된 파일55개의 추가작업 그리고 0개의 파일을 삭제
  1. 11
    0
      million/analyze/word_finder.py
  2. 44
    0
      scripts/find_gromots.py

+ 11
- 0
million/analyze/word_finder.py 파일 보기

@@ -0,0 +1,11 @@
1
+import re
2
+from typing import List
3
+from million.model.message import Message
4
+
5
+
6
+def _wordFilter(msg: Message, words: List[str]) -> bool:
7
+    rgx = r"(\b"+ r'\b|\b'.join(words) + r"\b)"
8
+    return msg.content and re.search(rgx, msg.content, re.I)
9
+
10
+def findWords(messages: List[Message], words: List[str]) -> List[Message]:
11
+    return filter(lambda m: _wordFilter(m, words), messages)

+ 44
- 0
scripts/find_gromots.py 파일 보기

@@ -0,0 +1,44 @@
1
+from datetime import datetime
2
+from million.analyze.word_finder import findWords
3
+from million.parse.fb_exports import FacebookExportParser
4
+
5
+
6
+DATA_PATH = './data/'
7
+
8
+parser = FacebookExportParser()
9
+
10
+export = parser.parse(DATA_PATH)
11
+
12
+gros_mots = [
13
+    '.*merde.*',
14
+    'sexe',
15
+    'pute',
16
+    'pé?dé?',
17
+    'putain',
18
+    'bite',
19
+    'encul.*',
20
+    'cul',
21
+    'nichon',
22
+    'gueule',
23
+    'con(ne)?',
24
+    'chatte',
25
+    'niqu.*',
26
+    'chi(é|e).*',
27
+    'bais.*'
28
+    ]
29
+
30
+msg_gros_mots = findWords(export.messages, gros_mots)
31
+
32
+msg_gros_mots_grp = {}
33
+
34
+for msg in msg_gros_mots:
35
+    if msg.sender_name not in msg_gros_mots_grp: msg_gros_mots_grp[msg.sender_name] = []
36
+    msg_gros_mots_grp[msg.sender_name].append(msg)
37
+
38
+for name in sorted(msg_gros_mots_grp, key = lambda k: len(msg_gros_mots_grp[k])):
39
+    print(name)
40
+
41
+    for msg in msg_gros_mots_grp[name]:
42
+        time = datetime.fromtimestamp(msg.timestamp_ms / 1000)
43
+        time_str = time.strftime("%d/%m/%Y %H:%M:%S")
44
+        print(f"\t{time_str} : {msg.content}")

Loading…
취소
저장