aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrusinthread <rusinthread@cock.li>2017-01-07 23:57:44 +0300
committerrusinthread <rusinthread@cock.li>2017-01-07 23:57:44 +0300
commit5bf61081d39bf47e756b5c9775e8614036f8fab8 (patch)
treed9e987ccfd79a7567987c7447c53f19fd2e1fcf9
parentb08c2582ec94c34672902ab1579ec584d04d5727 (diff)
improve decoding of type1 ciphertexts
-rw-r--r--README.md2
-rw-r--r--data_lib.py43
-rwxr-xr-xgen_md.py8
-rwxr-xr-xmain.py12
4 files changed, 42 insertions, 23 deletions
diff --git a/README.md b/README.md
index bec6067..10f11ff 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@
В ответ получаешь:
```
-ФОТОРОБОТ80%ТОЧЗНОСТЬ
+ФОТОРОБОТ80%ТОЧНОСТЬ
```
## Другое
diff --git a/data_lib.py b/data_lib.py
index 90b1bfd..5bf468e 100644
--- a/data_lib.py
+++ b/data_lib.py
@@ -1,21 +1,41 @@
import os
import json
import re
+import datetime
+import time
CWD = os.path.dirname(os.path.realpath(__file__))
-def load_data():
+def _data_sort_len(i):
+ return len(i['text'])
+
+def _data_sort_date(i):
+ return int(time.mktime(datetime.datetime.strptime(i['date'], '%d/%m/%y').timetuple()))
+
+# sort: 'len', 'date'
+def load_data(sort='len', sort_reverse=False):
with open(os.path.join(CWD, "data.json")) as f:
data = json.loads(f.read())
# ignore placeholders
data = list(filter(lambda i: i['text'] != '', data))
-
+
+ # sort
+ if sort == 'len':
+ sort_f = _data_sort_len
+ elif sort == 'date':
+ sort_f = _data_sort_date
+ else:
+ raise Error("Unknown sort type " + str(sort))
+
+ data = sorted(data, key=sort_f, reverse=sort_reverse)
+
+
return data
def clean_string(s, remove_junk=False):
s = s.replace(')', ') ')
- s = re.sub(r'(\!|\.)([^\)])', r'\1 \2', s)
+ s = re.sub(r'(\!|\.|\]|\,)([^\)])', r'\1 \2', s)
#s = s.replace('/', ' ')
s = s.upper()
@@ -35,16 +55,20 @@ def clean_string(s, remove_junk=False):
'С ВЫШЕСТОЯЩИМИ',
#'ПРИСУТСТВИЕ',
#'ЛИНЕЙНО',
- 'ЗАКОННО!',
+ 'ИНСТРУКЦИИ',
+ 'ЗАКОННО',
'ПОХЛЕБКА',
'СВЯЗЕЙ',
'ЖУЮЩЕГО ХРЯЩИ',
+ 'ИНДЕКСИРОВАН БЕЗУКОРИЗНЕНННО',
'ИНДЕКСИРОВАН БЕЗУКОРИЗНЕННО',
'ОТКЛАДЫВАЕТСЯ ЛИНЕЙНО',
+ 'УСТАЛИ СМОТРЯЩИХ',
'- ЕГО ВЕЛИЧЕСТВО',
'ГУБЕРНИЯ',
'С ВЫШЕСТОЯЩИМИ КОНТРОЛЬ',
- 'С ЛОКАЦИИ',
+ 'С ЛОКАЦИИ',
+ 'КАЗНЬ ВЫШЕСТОЯЩ',
#'КАЗНЬ',
'ГУБЕРНИЯ',
'ПРОВЕРКИ',
@@ -97,17 +121,20 @@ def clean_string(s, remove_junk=False):
# только с пробелами
junks_nwords = list(filter(lambda w: w not in junks_words, junks))
+ #print(junks_nwords)
if remove_junk:
s = s.split(' ')
- s = list(filter(lambda l: re.sub(r'\.|\!$', '', l) not in junks_words, s))
+ s = list(filter(lambda l: re.sub(r'\.|\!|,$', '', l) not in junks_words, s))
s = ' '.join(s)
for j in junks_nwords:
s = s.replace(j, '')
- # хортица - это буква Х
s = s.replace('Х О Р Т И Ц А', 'Х_О_Р_Т_И_Ц_А')
+ s = s.replace('ЯРОСЛАВСКАЯ ГУБЕРНИЯ', 'ЯРОСЛАВСКАЯ_ГУБЕРНИЯ')
+ s = s.replace('ЩУКА В МЕШКЕ', 'ЩУКА_В_МЕШКЕ')
+ s = s.replace('Ъ - ВЕЛИЧЕСТВЕННО', 'Ъ_-_ВЕЛИЧЕСТВЕННО')
s = re.sub(r'\s+', ' ', s).strip()
return s
@@ -116,7 +143,7 @@ def decode(s, is_url=False):
buf = ''
for word in s.split(' '):
word = word.strip()
- if word == '':
+ if word == '' or word == '!':
continue
if re.match(r'^\d+', word):
diff --git a/gen_md.py b/gen_md.py
index 54e2282..29b704f 100755
--- a/gen_md.py
+++ b/gen_md.py
@@ -1,6 +1,4 @@
#!/usr/bin/python3.4
-import datetime
-import time
import sys
import os
import shutil
@@ -26,9 +24,6 @@ MD_START = """
"""
-def sort_data_by_date(item):
- return int(time.mktime(datetime.datetime.strptime(item['date'], '%d/%m/%y').timetuple()))
-
def resize(in_path, out_path):
subprocess.call(['convert', in_path, '-resize', '250', out_path])
@@ -46,8 +41,7 @@ def gen_previews():
resize(img_path, img_preview_path)
def main():
- data = load_data()
- data = sorted(data, key=sort_data_by_date)
+ data = load_data(sort='date')
print("Generating previews (don't forget to git add them)...")
gen_previews()
diff --git a/main.py b/main.py
index 34c0b33..d6e064a 100755
--- a/main.py
+++ b/main.py
@@ -3,6 +3,7 @@
import argparse
import sys
import os
+from pprint import pprint
try:
from termcolor import cprint
@@ -10,7 +11,7 @@ try:
except ImportError:
colors_supported = False
-from data_lib import load_data, decode_auto
+from data_lib import load_data, decode_auto, clean_string
def print_colored(s, color, fallback_prefix=''):
@@ -32,8 +33,8 @@ def main():
parser.add_argument('--reverse-decoded', action='store_true')
args = parser.parse_args()
- data = load_data()
-
+ data = load_data('date', sort_reverse=True)
+
if args.decode:
# filter by type
if args.type == 2:
@@ -41,9 +42,6 @@ def main():
else:
data = list(filter(lambda i: 'type' not in i, data))
- # sort by text length
- data = sorted(data, key=lambda i: len(i['text']))
-
for obj in data:
text = obj['text']
text_decoded = decode_auto(text,
@@ -53,7 +51,7 @@ def main():
# print all information
print(obj['text'])
- print_colored(text, 'green', fallback_prefix='[CLEANED] ')
+ print_colored(clean_string(text, remove_junk=(not args.with_junk)), 'green', fallback_prefix='[CLEANED] ')
print_colored(text_decoded, 'cyan', fallback_prefix='[DECODED] ')
if 'pic' in obj: