chgksuite 0.24.0b2__py3-none-any.whl → 0.24.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chgksuite/common.py +12 -4
- chgksuite/composer/chgksuite_parser.py +17 -8
- chgksuite/composer/pptx.py +5 -4
- chgksuite/composer/telegram.py +700 -168
- chgksuite/composer/telegram_bot.py +115 -0
- chgksuite/resources/regexes_by.json +13 -13
- chgksuite/resources/regexes_en.json +12 -12
- chgksuite/resources/regexes_kz_cyr.json +12 -12
- chgksuite/resources/regexes_ru.json +13 -13
- chgksuite/resources/regexes_sr.json +12 -12
- chgksuite/resources/regexes_ua.json +13 -13
- chgksuite/resources/regexes_uz_cyr.json +12 -12
- chgksuite/version.py +1 -1
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/METADATA +2 -3
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/RECORD +19 -18
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/WHEEL +1 -1
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/entry_points.txt +0 -0
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/licenses/LICENSE +0 -0
- {chgksuite-0.24.0b2.dist-info → chgksuite-0.24.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
import sqlite3
|
|
5
|
+
import threading
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
|
|
8
|
+
import requests
|
|
9
|
+
import toml
|
|
10
|
+
from telegram import Update
|
|
11
|
+
from telegram.ext import Application, ContextTypes, MessageHandler, filters
|
|
12
|
+
|
|
13
|
+
from chgksuite.common import get_chgksuite_dir
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TelegramSidecarBot:
|
|
17
|
+
def __init__(self, bot_token, db_path):
|
|
18
|
+
self.db_path = db_path
|
|
19
|
+
self._local = threading.local()
|
|
20
|
+
self.token = bot_token
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def conn(self):
|
|
24
|
+
if not hasattr(self._local, "connection"):
|
|
25
|
+
self._local.connection = sqlite3.connect(self.db_path)
|
|
26
|
+
return self._local.connection
|
|
27
|
+
|
|
28
|
+
async def handle_message(self, update: Update, _: ContextTypes.DEFAULT_TYPE):
|
|
29
|
+
cursor = self.conn.cursor()
|
|
30
|
+
raw_data = json.dumps(update.to_dict(), ensure_ascii=False)
|
|
31
|
+
cursor.execute(
|
|
32
|
+
"INSERT INTO messages (raw_data, chat_id, created_at) VALUES (?, ?, ?)",
|
|
33
|
+
(raw_data, update.message.chat.id, datetime.now().isoformat()),
|
|
34
|
+
)
|
|
35
|
+
self.conn.commit()
|
|
36
|
+
|
|
37
|
+
async def error_handler(self, update, context):
|
|
38
|
+
print(f"Update {update} caused error: {context.error}")
|
|
39
|
+
|
|
40
|
+
async def check_connectivity(self):
|
|
41
|
+
url = f"https://api.telegram.org/bot{self.token}/getMe"
|
|
42
|
+
req = requests.get(url)
|
|
43
|
+
cursor = self.conn.cursor()
|
|
44
|
+
if req.status_code == 200 and "ok" in req.json():
|
|
45
|
+
cursor.execute(
|
|
46
|
+
"INSERT INTO bot_status (raw_data, created_at) VALUES (?, ?)",
|
|
47
|
+
(json.dumps({"status": "ok"}), datetime.now().isoformat()),
|
|
48
|
+
)
|
|
49
|
+
self.conn.commit()
|
|
50
|
+
else:
|
|
51
|
+
print(f"couldn't check status, req: {req.text}")
|
|
52
|
+
cursor.execute(
|
|
53
|
+
"INSERT INTO bot_status (raw_data, created_at) VALUES (?, ?)",
|
|
54
|
+
(
|
|
55
|
+
json.dumps(
|
|
56
|
+
{
|
|
57
|
+
"status": "bad",
|
|
58
|
+
"error": req.text,
|
|
59
|
+
"status_code": req.status_code,
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
datetime.now().isoformat(),
|
|
63
|
+
),
|
|
64
|
+
)
|
|
65
|
+
self.conn.commit()
|
|
66
|
+
return True
|
|
67
|
+
|
|
68
|
+
def run(self):
|
|
69
|
+
loop = asyncio.get_event_loop()
|
|
70
|
+
application = (
|
|
71
|
+
Application.builder()
|
|
72
|
+
.token(self.token)
|
|
73
|
+
.connect_timeout(30.0)
|
|
74
|
+
.read_timeout(30.0)
|
|
75
|
+
.write_timeout(30.0)
|
|
76
|
+
.build()
|
|
77
|
+
)
|
|
78
|
+
application.add_handler(MessageHandler(filters.ALL, self.handle_message))
|
|
79
|
+
application.add_error_handler(self.error_handler)
|
|
80
|
+
loop.run_until_complete(application.initialize())
|
|
81
|
+
loop.run_until_complete(application.start())
|
|
82
|
+
loop.run_until_complete(
|
|
83
|
+
application.updater.start_polling(
|
|
84
|
+
allowed_updates=Update.ALL_TYPES, drop_pending_updates=True
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
loop.run_forever()
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def run_bot_in_thread(bot_token, db_path):
|
|
91
|
+
"""Run the bot in a daemon thread."""
|
|
92
|
+
|
|
93
|
+
def thread_function():
|
|
94
|
+
loop = asyncio.new_event_loop()
|
|
95
|
+
asyncio.set_event_loop(loop)
|
|
96
|
+
bot = TelegramSidecarBot(bot_token, db_path)
|
|
97
|
+
connectivity_ok = loop.run_until_complete(bot.check_connectivity())
|
|
98
|
+
if not connectivity_ok:
|
|
99
|
+
raise Exception("bot couldn't connect")
|
|
100
|
+
bot.run()
|
|
101
|
+
|
|
102
|
+
bot_thread = threading.Thread(target=thread_function, daemon=True)
|
|
103
|
+
bot_thread.start()
|
|
104
|
+
return bot_thread
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def main():
|
|
108
|
+
toml_path = os.path.join(get_chgksuite_dir(), "telegram.toml")
|
|
109
|
+
with open(toml_path, "r", encoding="utf8") as f:
|
|
110
|
+
bot_token = toml.load(f)["bot_token"]
|
|
111
|
+
run_bot_in_thread(bot_token, "test_bot.db")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
if __name__ == "__main__":
|
|
115
|
+
main()
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"tourrev": "^([0-9IVXLCDM]+)
|
|
4
|
-
"question": "П[Ыы][Тт][Аа][Нн][Ьь]?[Нн][Ее]
|
|
5
|
-
"handout": "Р[Аа][Зз][Дд][Аа][Тт]([Аа][Чч][Нн]|[Кк][Аа][Вв])[Ыы][
|
|
6
|
-
"answer": "А[Дд][Кк][Аа][Зз][Ыы]?
|
|
7
|
-
"zachet": "З[Аа][Лл][Іі][Кк]
|
|
8
|
-
"nezachet": "Н[Ее][Зз][Аа][Лл][Іі][Кк]
|
|
9
|
-
"comment": "К[Аа][Мм]([Ее][Нн][Тт]([Аа][Рр]([Ыы][Йй])?|\\.)|\\.)
|
|
10
|
-
"author": "А[Ўў][Тт][Аа][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?
|
|
11
|
-
"source": "К[Рр][Ыы][Нн][Іі][Цц][АаЫы]
|
|
12
|
-
"editor": "[Рр][Ээ][Дд][Аа][Кк][Тт][Аа][Рр]([Ыы])?(
|
|
13
|
-
"date": "Д[Аа][Тт][Аа]
|
|
2
|
+
"tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
|
|
3
|
+
"tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
|
|
4
|
+
"question": "П[Ыы][Тт][Аа][Нн][Ьь]?[Нн][Ее]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
|
|
5
|
+
"handout": "Р[Аа][Зз][Дд][Аа][Тт]([Аа][Чч][Нн]|[Кк][Аа][Вв])[Ыы][\\s\\s][Мм][Аа][Тт][Ээ][Рр][Ыы][Яя][Лл][\\.:]",
|
|
6
|
+
"answer": "А[Дд][Кк][Аа][Зз][Ыы]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
7
|
+
"zachet": "З[Аа][Лл][Іі][Кк]\\s?[\\.:]",
|
|
8
|
+
"nezachet": "Н[Ее][Зз][Аа][Лл][Іі][Кк]\\s?[\\.:]",
|
|
9
|
+
"comment": "К[Аа][Мм]([Ее][Нн][Тт]([Аа][Рр]([Ыы][Йй])?|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
10
|
+
"author": "А[Ўў][Тт][Аа][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
|
|
11
|
+
"source": "К[Рр][Ыы][Нн][Іі][Цц][АаЫы]\\s?[\\.:]",
|
|
12
|
+
"editor": "[Рр][Ээ][Дд][Аа][Кк][Тт][Аа][Рр]([Ыы])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
13
|
+
"date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
|
|
14
14
|
"date2": "(^|\\s)студзеня|лютага|сакавіка|красавіка|мая|чэрвеня|ліпеня|жніўня|верасня|кастрычніка|лістапада|снежня(\\s|$)",
|
|
15
|
-
"number": "^[0-9]+[\\.\\)]
|
|
15
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
16
16
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"tourrev": "^([0-9IVXLCDM]+)
|
|
4
|
-
"question": "Q[Uu][Ee][Ss][Tt][Ii][Oo][Nn]
|
|
5
|
-
"answer": "A[Nn][Ss][Ww][Ee][Rr]
|
|
2
|
+
"tour": "^(#\\s+)?(B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd])\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
|
|
3
|
+
"tourrev": "^([0-9IVXLCDM]+)\\s(B[Ll][Oo][Cc][Kk]|R[Oo][Uu][Nn][Dd])([\\.:])?$",
|
|
4
|
+
"question": "Q[Uu][Ee][Ss][Tt][Ii][Oo][Nn]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
|
|
5
|
+
"answer": "A[Nn][Ss][Ww][Ee][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
6
6
|
"handout": "^H[Aa][Nn][Dd][Oo][Uu][Tt][\\.:]",
|
|
7
|
-
"zachet": "A[Cc][Ee][Pp][Tt]
|
|
8
|
-
"nezachet": "R[Ee][Jj][Ee][Cc][Tt]
|
|
9
|
-
"comment": "C[Oo][Mm][Mm]?([Ee][Nn][Tt])?
|
|
10
|
-
"author": "A[Uu][Tt][Hh][Oo][Rr][Ss]?
|
|
11
|
-
"source": "S[Oo][Uu][Rr][Cc][Ee][Ss]?
|
|
12
|
-
"editor": "E[Dd][Ii][Tt]([Oo][Rr][Ss]?|[Ee][Dd]
|
|
13
|
-
"date": "D[Aa][Tt][Ee]
|
|
7
|
+
"zachet": "A[Cc][Ee][Pp][Tt]\\s?[\\.:]",
|
|
8
|
+
"nezachet": "R[Ee][Jj][Ee][Cc][Tt]\\s?[\\.:]",
|
|
9
|
+
"comment": "C[Oo][Mm][Mm]?([Ee][Nn][Tt])?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
10
|
+
"author": "A[Uu][Tt][Hh][Oo][Rr][Ss]?\\s?[\\.:]",
|
|
11
|
+
"source": "S[Oo][Uu][Rr][Cc][Ee][Ss]?\\s?[\\.:]",
|
|
12
|
+
"editor": "E[Dd][Ii][Tt]([Oo][Rr][Ss]?|[Ee][Dd]\\s[Bb][Yy])\\s?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
13
|
+
"date": "D[Aa][Tt][Ee]\\s?[\\.:]",
|
|
14
14
|
"date2": "(^|\\s)Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?(\\s|$)",
|
|
15
|
-
"number": "^[0-9]+[\\.\\)]
|
|
15
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
16
16
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"question": "([0-9]+)
|
|
4
|
-
"handout": "^Ү[Лл][Ее][Сс][Тт][Іі][Рр][Уу][
|
|
5
|
-
"answer": "Ж[Аа][Уу][Аа][Пп]
|
|
6
|
-
"zachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Аа][Тт][Ыы][Нн]
|
|
7
|
-
"nezachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Бб][Аа][Йй][Тт][Ыы][Нн]
|
|
8
|
-
"comment": "Т[Үү][Сс][Іі][Нн][Іі][Кк][Тт][Ее][Мм][Ее]
|
|
9
|
-
"author": "А[Вв][Тт][Оо][Рр]([Лл][Аа][Рр])?
|
|
10
|
-
"source": "Д[Ее][Рр][Ее][Кк][Кк][Өө][Зз]([Дд][Ее][Рр])?
|
|
11
|
-
"editor": "Р[Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Лл][Аа][Рр])?(
|
|
12
|
-
"date": "Д[Аа][Тт][Аа]
|
|
2
|
+
"tour": "^(#\\s+)?([0-9]+)\\s?[-–—]\\s?[Тт][Уу][Рр]\\s*$",
|
|
3
|
+
"question": "([0-9]+)\\s?[-–—]\\s?\\sС[Ұұ][Рр][Аа][Ққ]([\\.:]|\n|\r\n|$)",
|
|
4
|
+
"handout": "^Ү[Лл][Ее][Сс][Тт][Іі][Рр][Уу][\\s\\s][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][Ыы][\\.:]",
|
|
5
|
+
"answer": "Ж[Аа][Уу][Аа][Пп]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
6
|
+
"zachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Аа][Тт][Ыы][Нн]\\s[Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))?\\s?[\\.:]",
|
|
7
|
+
"nezachet": "Қ[Аа][Бб][Ыы][Лл][Дд][Аа][Нн][Бб][Аа][Йй][Тт][Ыы][Нн]\\s[Жж][Аа][Уу][Аа][Пп](\\([Тт][Аа][Рр]\\))?\\s?[\\.:]",
|
|
8
|
+
"comment": "Т[Үү][Сс][Іі][Нн][Іі][Кк][Тт][Ее][Мм][Ее]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
9
|
+
"author": "А[Вв][Тт][Оо][Рр]([Лл][Аа][Рр])?\\s?[\\.:]",
|
|
10
|
+
"source": "Д[Ее][Рр][Ее][Кк][Кк][Өө][Зз]([Дд][Ее][Рр])?\\s?[\\.:]",
|
|
11
|
+
"editor": "Р[Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Лл][Аа][Рр])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
12
|
+
"date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
|
|
13
13
|
"date2": "(^|\\s)[Яя][Нн][Вв][Аа][Рр][ЬьЯя]|[Фф][Ее][Вв][Рр][Аа][Лл][ЬьЯя]|[Мм][Аа][Рр][Тт][Аа]?|[Аа][Пп][Рр][Ее][Лл][ЬьЯя]|[Мм][Аа][ЙйЯя]|[Ии][Юю][Нн][ЬьЯя]|[Ии][Юю][Лл][ЬьЯя]|[Аа][Вв][Гг][Уу][Сс][Тт][Аа]?|[Сс][Ее][Нн][Тт][Яя][Бб][Рр][ЬьЯя]|[Оо][Кк][Тт][Яя][Бб][Рр][ЬьЯя]|[Нн][Оо][Яя][Бб][Рр][ЬьЯя]|[Дд][Ее][Кк][Аа][Бб][Рр][ЬьЯя](\\s|$)",
|
|
14
|
-
"number": "^[0-9]+[\\.\\)]
|
|
14
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
15
15
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"tourrev": "^([0-9IVXLCDM]+)
|
|
4
|
-
"question": "В[Оо][Пп][Рр][Оо][Сс]
|
|
5
|
-
"handout": "^Р[Аа][Зз][Дд][Аа][Тт][Оо][Чч][Нн][Ыы][Йй]
|
|
6
|
-
"answer": "О[Тт][Вв][Ее][Тт][Ыы]?
|
|
7
|
-
"zachet": "З[Аа][Чч][ЕеЁё][Тт]
|
|
8
|
-
"nezachet": "Н[Ее][Зз][Аа][Чч][ЕеЁё][Тт]
|
|
9
|
-
"comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр][Ии][ИиЙй]|\\.)|\\.)
|
|
10
|
-
"author": "А[Вв][Тт][Оо][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?
|
|
11
|
-
"source": "И[Сс][Тт][Оо][Чч][Нн][Ии][Кк]\\(?[Ии]?\\)?
|
|
12
|
-
"editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ыы]|[Сс][Кк][Аа][Яя]
|
|
13
|
-
"date": "Д[Аа][Тт][Аа]
|
|
2
|
+
"tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
|
|
3
|
+
"tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
|
|
4
|
+
"question": "В[Оо][Пп][Рр][Оо][Сс]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
|
|
5
|
+
"handout": "^Р[Аа][Зз][Дд][Аа][Тт][Оо][Чч][Нн][Ыы][Йй]\\s+[Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
|
|
6
|
+
"answer": "О[Тт][Вв][Ее][Тт][Ыы]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
7
|
+
"zachet": "З[Аа][Чч][ЕеЁё][Тт]\\s?[\\.:]",
|
|
8
|
+
"nezachet": "Н[Ее][Зз][Аа][Чч][ЕеЁё][Тт]\\s?[\\.:]",
|
|
9
|
+
"comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр][Ии][ИиЙй]|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
10
|
+
"author": "А[Вв][Тт][Оо][Рр](\\(?[Ыы]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
|
|
11
|
+
"source": "И[Сс][Тт][Оо][Чч][Нн][Ии][Кк]\\(?[Ии]?\\)?\\s?[\\.:]",
|
|
12
|
+
"editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ыы]|[Сс][Кк][Аа][Яя]\\s[Гг][Рр][Уу][Пп][Пп][Аа])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
13
|
+
"date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
|
|
14
14
|
"date2": "(^|\\s)[Яя][Нн][Вв][Аа][Рр][ЬьЯя]|[Фф][Ее][Вв][Рр][Аа][Лл][ЬьЯя]|[Мм][Аа][Рр][Тт][Аа]?|[Аа][Пп][Рр][Ее][Лл][ЬьЯя]|[Мм][Аа][ЙйЯя]|[Ии][Юю][Нн][ЬьЯя]|[Ии][Юю][Лл][ЬьЯя]|[Аа][Вв][Гг][Уу][Сс][Тт][Аа]?|[Сс][Ее][Нн][Тт][Яя][Бб][Рр][ЬьЯя]|[Оо][Кк][Тт][Яя][Бб][Рр][ЬьЯя]|[Нн][Оо][Яя][Бб][Рр][ЬьЯя]|[Дд][Ее][Кк][Аа][Бб][Рр][ЬьЯя](\\s|$)",
|
|
15
|
-
"number": "^[0-9]+[\\.\\)]
|
|
15
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
16
16
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"tourrev": "^([0-9IVXLCDM]+)
|
|
4
|
-
"question": "P[Ii][Tt][Aa][Nn][Jj][Ee]
|
|
5
|
-
"answer": "O[Dd][Gg][Oo][Vv][Oo][Rr]
|
|
2
|
+
"tour": "^(#\\s+)?R[Uu][Nn][Dd][Aa]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
|
|
3
|
+
"tourrev": "^([0-9IVXLCDM]+)\\sR[Uu][Nn][Dd][Aa]([\\.:])?$",
|
|
4
|
+
"question": "P[Ii][Tt][Aa][Nn][Jj][Ee]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
|
|
5
|
+
"answer": "O[Dd][Gg][Oo][Vv][Oo][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
6
6
|
"handout": "^(M[Aa][Tt][Ee][Rr][Ii][Jj][Aa][Ll]|P[Oo][Dd][Ee][Ll][Jj][Ee][Nn][Oo])[\\.:]",
|
|
7
|
-
"zachet": "P[Rr][Ii][Hh][Vv][Aa][Tt][Aa]
|
|
8
|
-
"nezachet": "N[Ee]
|
|
9
|
-
"comment": "K[Oo][Mm][Ee][Nn][Tt][Aa][Rr]
|
|
10
|
-
"author": "A[Uu][Tt][Oo][Rr][Ii]?
|
|
11
|
-
"source": "I[Zz][Vv][Oo][Rr][Ii]?
|
|
12
|
-
"editor": "U[Rr][Ee][Dd][Nn][Ii][Kk][Ii]?
|
|
13
|
-
"date": "D[Aa][Tt][Uu][Mm]
|
|
7
|
+
"zachet": "P[Rr][Ii][Hh][Vv][Aa][Tt][Aa]\\s[Ss][Ee]\\s?[\\.:]",
|
|
8
|
+
"nezachet": "N[Ee]\\s[Pp][Rr][Ii][Hh][Vv][Aa][Tt][Aa]\\s[Ss][Ee]\\s?[\\.:]",
|
|
9
|
+
"comment": "K[Oo][Mm][Ee][Nn][Tt][Aa][Rr]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
10
|
+
"author": "A[Uu][Tt][Oo][Rr][Ii]?\\s?[\\.:]",
|
|
11
|
+
"source": "I[Zz][Vv][Oo][Rr][Ii]?\\s?[\\.:]",
|
|
12
|
+
"editor": "U[Rr][Ee][Dd][Nn][Ii][Kk][Ii]?\\s?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
13
|
+
"date": "D[Aa][Tt][Uu][Mm]\\s?[\\.:]",
|
|
14
14
|
"date2": "WILL_FILL_LATER",
|
|
15
|
-
"number": "^[0-9]+[\\.\\)]
|
|
15
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
16
16
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"tourrev": "^([0-9IVXLCDM]+)
|
|
4
|
-
"question": "З[Аа][Пп][Ии][Тт][Аа][Нн][Нн][Яя]
|
|
5
|
-
"handout": "Р[Оо][Зз][Дд][Аа][Тт][Кк][Оо][Вв][Ии][Йй][
|
|
6
|
-
"answer": "В[Іі][Дд][Пп][Оо][Вв][Іі][Дд][Ьь]?
|
|
7
|
-
"zachet": "З[Аа][Лл][Іі][Кк]
|
|
8
|
-
"nezachet": "Н[Ее][Зз][Аа]Лл][Іі][Кк]
|
|
9
|
-
"comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр]|\\.)|\\.)
|
|
10
|
-
"author": "А[Вв][Тт][Оо][Рр](\\(?[Ии]?\\)?|[Кк][АаИи])?
|
|
11
|
-
"source": "Д[Жж][Ее][Рр][Ее][Лл][ОоАа]
|
|
12
|
-
"editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ии]|[Сс][Ьь][Кк][Аа]
|
|
13
|
-
"date": "Д[Аа][Тт][Аа]
|
|
2
|
+
"tour": "^(#\\s+)?Т[Уу][Рр]\\s?№?\\s?([0-9IVXLCDM]*)([\\.:])?$",
|
|
3
|
+
"tourrev": "^([0-9IVXLCDM]+)\\s[Тт][Уу][Рр]([\\.:])?$",
|
|
4
|
+
"question": "З[Аа][Пп][Ии][Тт][Аа][Нн][Нн][Яя]\\s?[№N]?([0-9\\s]*)\\s?([\\.:]|\n|\r\n|$)",
|
|
5
|
+
"handout": "Р[Оо][Зз][Дд][Аа][Тт][Кк][Оо][Вв][Ии][Йй][\\s\\s][Мм][Аа][Тт][Ее][Рр][Іі][Аа][Лл][\\.:]",
|
|
6
|
+
"answer": "В[Іі][Дд][Пп][Оо][Вв][Іі][Дд][Ьь]?\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
7
|
+
"zachet": "З[Аа][Лл][Іі][Кк]\\s?[\\.:]",
|
|
8
|
+
"nezachet": "Н[Ее][Зз][Аа]Лл][Іі][Кк]\\s?[\\.:]",
|
|
9
|
+
"comment": "К[Оо][Мм][Мм]?([Ее][Нн][Тт]([Аа][Рр]|\\.)|\\.)\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
10
|
+
"author": "А[Вв][Тт][Оо][Рр](\\(?[Ии]?\\)?|[Кк][АаИи])?\\s?[\\.:]",
|
|
11
|
+
"source": "Д[Жж][Ее][Рр][Ее][Лл][ОоАа]\\s?[\\.:]",
|
|
12
|
+
"editor": "[Рр][Ее][Дд][Аа][Кк][Тт][Оо][Рр]([Ии]|[Сс][Ьь][Кк][Аа]\\s[Гг][Рр][Уу][Пп][Аа])?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
13
|
+
"date": "Д[Аа][Тт][Аа]\\s?[\\.:]",
|
|
14
14
|
"date2": "(^|\\s)cічня|лютого|березня|квітня|травня|червня|липня|серпня|вересня|жовтня|листопада|грудня(\\s|$)",
|
|
15
|
-
"number": "^[0-9]+[\\.\\)]
|
|
15
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
16
16
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"tour": "^(
|
|
3
|
-
"question": "([0-9]+)
|
|
4
|
-
"answer": "Ж[Аа][Вв][Оо][Бб]
|
|
5
|
-
"handout": "Т[Аа][Рр][Ққ][Аа][Тт][Мм][Аа][
|
|
6
|
-
"zachet": "Қ[Аа][Бб][Уу][Лл]
|
|
7
|
-
"nezachet": "Қ[Аа][Бб][Уу][Лл]
|
|
8
|
-
"comment": "И[Зз][Оо][Ҳҳ]
|
|
9
|
-
"author": "М[Уу][Аа][Лл][Лл][Ии][Фф]([Лл][Аа][Рр])?
|
|
10
|
-
"source": "М[Аа][Нн][Бб][Аа]
|
|
11
|
-
"editor": "(
|
|
12
|
-
"date": "С[Аа][Нн][Аа]
|
|
2
|
+
"tour": "^(#\\s+)?([0-9]+)\\s?[-–—]\\s?[Тт][Уу][Рр]\\s*$",
|
|
3
|
+
"question": "([0-9]+)\\s?[-–—]\\s?\\sС[Аа][Вв][Оо][Лл]([\\.:]|\n|\r\n|$)",
|
|
4
|
+
"answer": "Ж[Аа][Вв][Оо][Бб]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
5
|
+
"handout": "Т[Аа][Рр][Ққ][Аа][Тт][Мм][Аа][\\s\\s][Мм][Аа][Тт][Ее][Рр][Ии][Аа][Лл][\\.:]",
|
|
6
|
+
"zachet": "Қ[Аа][Бб][Уу][Лл]\\s?[\\.:]",
|
|
7
|
+
"nezachet": "Қ[Аа][Бб][Уу][Лл]\\s[Ээ][Мм][Аа][Сс]?[\\.:]",
|
|
8
|
+
"comment": "И[Зз][Оо][Ҳҳ]\\s?[№N]?([0-9]+)?\\s?[\\.:]",
|
|
9
|
+
"author": "М[Уу][Аа][Лл][Лл][Ии][Фф]([Лл][Аа][Рр])?\\s?[\\.:]",
|
|
10
|
+
"source": "М[Аа][Нн][Бб][Аа]\\s?[\\.:]",
|
|
11
|
+
"editor": "(М|Тур\\sм)[Уу][Ҳҳ][Аа][Рр][Рр][Ии][Рр]([Лл][Аа][Рр][Ии]?)?(\\s?[\\.:]|\\s[\\-–—]+\\s)",
|
|
12
|
+
"date": "С[Аа][Нн][Аа]\\s?[\\.:]",
|
|
13
13
|
"date2": "(^|\\s)январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь(\\s|$)",
|
|
14
|
-
"number": "^[0-9]+[\\.\\)]
|
|
14
|
+
"number": "^[0-9]+[\\.\\)]\\s*"
|
|
15
15
|
}
|
chgksuite/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.24.
|
|
1
|
+
__version__ = "0.24.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chgksuite
|
|
3
|
-
Version: 0.24.
|
|
3
|
+
Version: 0.24.1
|
|
4
4
|
Summary: A package for chgk automation
|
|
5
5
|
Home-page: https://gitlab.com/peczony/chgksuite
|
|
6
6
|
Author: Alexander Pecheny
|
|
@@ -24,8 +24,7 @@ Requires-Dist: pyperclip
|
|
|
24
24
|
Requires-Dist: python-docx
|
|
25
25
|
Requires-Dist: python-pptx
|
|
26
26
|
Requires-Dist: requests
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist: TgCrypto
|
|
27
|
+
Requires-Dist: python-telegram-bot
|
|
29
28
|
Requires-Dist: toml
|
|
30
29
|
Dynamic: author
|
|
31
30
|
Dynamic: author-email
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
chgksuite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
chgksuite/__main__.py,sha256=0-_jfloveTW3SZYW5XEagbyaHKGCiDhGNgcLxsT_dMs,140
|
|
3
3
|
chgksuite/cli.py,sha256=8YoHWfc-wv6gdYMPH3X8HxV9SG70S7M6IQqavJaBXV4,31990
|
|
4
|
-
chgksuite/common.py,sha256=
|
|
4
|
+
chgksuite/common.py,sha256=FkEntLcVTApjLtTFTDf2QiMOath05i322wcmJIFjztQ,11093
|
|
5
5
|
chgksuite/parser.py,sha256=AVNeTUgv0aGHsxWunV_7bM4Ul2hbDslkzqg0dU49lic,37285
|
|
6
6
|
chgksuite/parser_db.py,sha256=W1--OcDnx18mehH1T2ISHu3Saeq-9mqHo-xJopNySXI,11135
|
|
7
7
|
chgksuite/trello.py,sha256=BG1Qb_W7Uu4o3Mfc_tK71ElU8ysdSplGlj_sAKfvUn4,14730
|
|
8
8
|
chgksuite/typotools.py,sha256=Jdk65Wn_bXqpQtOT7PkBZyD2ZG1MBeeZFPMzcHEPkf4,12771
|
|
9
|
-
chgksuite/version.py,sha256=
|
|
9
|
+
chgksuite/version.py,sha256=23Q5wqrB_jTfEuw8bupXFhwqZO0_-oiISvjn1gCVUsA,23
|
|
10
10
|
chgksuite/vulture_whitelist.py,sha256=P__p_X0zt10ivddIf81uyxsobV14vFg8uS2lt4foYpc,3582
|
|
11
11
|
chgksuite/composer/__init__.py,sha256=MAOVZIYXmZmD6nNQSo9DueV6b5RgxF7_HGeLvsAhMJs,6490
|
|
12
|
-
chgksuite/composer/chgksuite_parser.py,sha256=
|
|
12
|
+
chgksuite/composer/chgksuite_parser.py,sha256=MFcLUWbccMqo3OYEuaAIA0loEvWM_PNS9vR7c1z_c60,8843
|
|
13
13
|
chgksuite/composer/composer_common.py,sha256=S5ipehxep6LlGIZ9dcBnifbVaMYXijMhq6-pUHRISo8,15309
|
|
14
14
|
chgksuite/composer/db.py,sha256=71cINE_V8s6YidvqpmBmmlWbcXraUEGZA1xpVFAUENw,8173
|
|
15
15
|
chgksuite/composer/docx.py,sha256=5MASXACM-ztWrr3VdO8HZ-W-hWWQ5TY1jXMsCQIufGc,18346
|
|
16
16
|
chgksuite/composer/latex.py,sha256=WtLdUICxeX4_5vHEJRF0YhFLpTsOUwBkQFunQS488FA,9248
|
|
17
17
|
chgksuite/composer/lj.py,sha256=nty3Zs3N1H0gNK378U04aAHo71_5cABhCM1Mm9jiUEA,15213
|
|
18
18
|
chgksuite/composer/openquiz.py,sha256=CWGxb_cPG2Qh3dQ3hu0pS5fOfhKc8klZuO38Lo9hUF8,7020
|
|
19
|
-
chgksuite/composer/pptx.py,sha256=
|
|
19
|
+
chgksuite/composer/pptx.py,sha256=y1W2m3Cj28rDWguX5drczZvfIwm9QPsJ8_da5YTd1aE,19164
|
|
20
20
|
chgksuite/composer/reddit.py,sha256=-Eg4CqMHhyGGfCteVwdQdtE1pfUXQ42XcP5OYUrBXmo,3878
|
|
21
21
|
chgksuite/composer/stats.py,sha256=GbraSrjaZ8Mc2URs5aGAsI4ekboAKzlJJOqsbe96ELA,3995
|
|
22
|
-
chgksuite/composer/telegram.py,sha256=
|
|
22
|
+
chgksuite/composer/telegram.py,sha256=H65LS79JZ3aCcqeq_SrnUU4E4yro1f-EZxCM3IrIyyQ,46526
|
|
23
|
+
chgksuite/composer/telegram_bot.py,sha256=xT5D39m4zGmIbHV_ZfyQ9Rc8PAmG2V5FGUeDKpkgyTw,3767
|
|
23
24
|
chgksuite/composer/telegram_parser.py,sha256=50WqOuvzzdMJJm5wsSLS49oURAQRYToPnbPJjQbMYC4,8096
|
|
24
25
|
chgksuite/resources/cheader.tex,sha256=Jfe3LESk0VIV0HCObbajSQpEMljaIDAIEGSs6YY9rTk,3454
|
|
25
26
|
chgksuite/resources/fix-unnumbered-sections.sty,sha256=FN6ZSWC6MvoRoThPm5AxCF98DdgcxbxyBYG6YImM05s,1409
|
|
@@ -33,19 +34,19 @@ chgksuite/resources/labels_ua.toml,sha256=sUZdwwpkddb_56bmrZyO56cDrm68ft_JoMqR38
|
|
|
33
34
|
chgksuite/resources/labels_uz.toml,sha256=uRnf6tjBf1rYpWjt675ecB2MPn_Ohz-Hj6XDYNPpe3o,609
|
|
34
35
|
chgksuite/resources/labels_uz_cyr.toml,sha256=ztqHItwhJjfBTOIj_vA1hrneYo8s5gvZkkSr0k9S3rs,814
|
|
35
36
|
chgksuite/resources/pptx_config.toml,sha256=pbdQpZTBZajfXxf9Ej6jFQv8luA9_h2Lsihx9hs2jkI,570
|
|
36
|
-
chgksuite/resources/regexes_by.json,sha256=
|
|
37
|
-
chgksuite/resources/regexes_en.json,sha256=
|
|
38
|
-
chgksuite/resources/regexes_kz_cyr.json,sha256=
|
|
39
|
-
chgksuite/resources/regexes_ru.json,sha256=
|
|
40
|
-
chgksuite/resources/regexes_sr.json,sha256=
|
|
41
|
-
chgksuite/resources/regexes_ua.json,sha256=
|
|
42
|
-
chgksuite/resources/regexes_uz_cyr.json,sha256=
|
|
37
|
+
chgksuite/resources/regexes_by.json,sha256=43K_jjNocNrx75OcSlVxg2zHNJKoHwzceFbtfZgM0Vo,1296
|
|
38
|
+
chgksuite/resources/regexes_en.json,sha256=v1RPW8Oj0UiS_86ieYjpFOGm3qN5-OlM-qgAqa6oCy4,1003
|
|
39
|
+
chgksuite/resources/regexes_kz_cyr.json,sha256=QW6MxkPjSRNU-KPAAqh4jwFZ--ckJo9EOn_p30gihiQ,1679
|
|
40
|
+
chgksuite/resources/regexes_ru.json,sha256=_ZgSG31eV348eIYgmcEWvygKL3cWZeaauXsBWyrCWaM,1652
|
|
41
|
+
chgksuite/resources/regexes_sr.json,sha256=SiDDtxWND41XOBvHM4MgSXcogh7bRTqsY3JbJPT2wF4,925
|
|
42
|
+
chgksuite/resources/regexes_ua.json,sha256=IXtJtoUY15OoBu5Y5yW6adhJUhsDRkwfxWsPYIrbgPA,1330
|
|
43
|
+
chgksuite/resources/regexes_uz_cyr.json,sha256=mIvWjyZZXQ3lr_ntuC7-ybknnYJxSSQEKxqnGluTvow,1106
|
|
43
44
|
chgksuite/resources/template.docx,sha256=Do29TAsg3YbH0rRSaXhVzKEoh4pwXkklW_idWA34HVE,11189
|
|
44
45
|
chgksuite/resources/template.pptx,sha256=hEFWqE-yYpwZ8ejrMCJIPEyoMT3eDqaqtiEeQ7I4fyk,29777
|
|
45
46
|
chgksuite/resources/trello.json,sha256=M5Q9JR-AAJF1u16YtNAxDX-7c7VoVTXuq4POTqYvq8o,555
|
|
46
|
-
chgksuite-0.24.
|
|
47
|
-
chgksuite-0.24.
|
|
48
|
-
chgksuite-0.24.
|
|
49
|
-
chgksuite-0.24.
|
|
50
|
-
chgksuite-0.24.
|
|
51
|
-
chgksuite-0.24.
|
|
47
|
+
chgksuite-0.24.1.dist-info/licenses/LICENSE,sha256=_a1yfntuPmctLsuiE_08xMSORuCfGS8X5hQph2U_PUw,1081
|
|
48
|
+
chgksuite-0.24.1.dist-info/METADATA,sha256=lNdWAz-SnWg5kWZy7HIJT5XahbGZkfza4s-HIgKOXAI,1294
|
|
49
|
+
chgksuite-0.24.1.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
|
50
|
+
chgksuite-0.24.1.dist-info/entry_points.txt,sha256=lqjX6ULQZGDt0rgouTXBuwEPiwKkDQkSiNsT877A_Jg,54
|
|
51
|
+
chgksuite-0.24.1.dist-info/top_level.txt,sha256=cSWiRBOGZW9nIO6Rv1IrEfwPgV2ZWs87QV9wPXeBGqM,10
|
|
52
|
+
chgksuite-0.24.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|