summaryrefslogtreecommitdiff
path: root/ATRI/plugins/utils/data_source.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
committerKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
commitbe2747e4d4b820ca0f1f988d3b77a628da26fe7b (patch)
treee1a59dd79ecd973a7d704568dcdc018f1f1b651a /ATRI/plugins/utils/data_source.py
parenta4e1b9d1581d756ef79ad063d1c0bd6b2fd13c1d (diff)
downloadATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.gz
ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.bz2
ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.zip
🔖♻️🐛🔧🔥📝 更新版本:YHN-001-A03
🔖 更新版本至:YHN-001-A03 ✨ 新增插件: - 涩图 - 闲聊(文爱 ♻️ 重构: - Service - 所有插件 🐛 修复部分小bug 🔧 暂时移除部分设置 🔥 删除: - 插件:nsfw、wife。日后加回 - 插件 essential 中部分内容 📝 更新README
Diffstat (limited to 'ATRI/plugins/utils/data_source.py')
-rw-r--r--ATRI/plugins/utils/data_source.py200
1 files changed, 0 insertions, 200 deletions
diff --git a/ATRI/plugins/utils/data_source.py b/ATRI/plugins/utils/data_source.py
deleted file mode 100644
index 92ae930..0000000
--- a/ATRI/plugins/utils/data_source.py
+++ /dev/null
@@ -1,200 +0,0 @@
-import re
-from math import floor
-import jieba.posseg as pseg
-from typing import Union, Optional
-from random import random, choice, randint
-
-
-def roll_dice(par: str) -> str:
- result = 0
- proc = ""
- proc_list = []
- p = par.split("+")
-
- for i in p:
- args = re.findall(r"(\d{0,10})(?:(d)(\d{1,10}))", i)
- args = list(args[0])
-
- args[0] = args[0] or 1
- if int(args[0]) >= 5000 or int(args[2]) >= 5000:
- return "阿...好大......"
-
- for a in range(1, int(args[0]) + 1):
- rd = randint(1, int(args[2]))
- result = result + rd
-
- if len(proc_list) <= 10:
- proc_list.append(rd)
-
- if len(proc_list) <= 10:
- proc += "+".join(map(str, proc_list))
- elif len(proc_list) > 10:
- proc += "太长了不展示了就酱w"
- else:
- proc += str(result)
-
- result = f"{par}=({proc})={result}"
- return result
-
-
-class Encrypt:
- cr = "ĀāĂ㥹ÀÁÂÃÄÅ"
- cc = "ŢţŤťŦŧṪṫṬṭṮṯṰṱ"
- cn = "ŔŕŘřṘṙŖŗȐȑȒȓṚṛṜṝṞṟɌɍⱤɽᵲᶉɼɾᵳʀRr"
- cb = "ĨĩĪīĬĭĮįİı"
-
- sr = len(cr)
- sc = len(cc)
- sn = len(cn)
- sb = len(cb)
- src = sr * sc
- snb = sn * sb
- scnb = sc * snb
-
- def _div(self, a: int, b: int) -> int:
- return floor(a / b)
-
- def _encodeByte(self, i) -> Union[str, None]:
- if i > 0xFF:
- raise ValueError("ERROR! at/ri overflow")
-
- if i > 0x7F:
- i = i & 0x7F
- return self.cn[self._div(i, self.sb) + int(self.cb[i % self.sb])]
-
- return self.cr[self._div(i, self.sc) + int(self.cc[i % self.sc])]
-
- def _encodeShort(self, i) -> str:
- if i > 0xFFFF:
- raise ValueError("ERROR! atri overflow")
-
- reverse = False
- if i > 0x7FFF:
- reverse = True
- i = i & 0x7FFF
-
- char = [
- self._div(i, self.scnb),
- self._div(i % self.scnb, self.snb),
- self._div(i % self.snb, self.sb),
- i % self.sb,
- ]
- char = [self.cr[char[0]], self.cc[char[1]], self.cn[char[2]], self.cb[char[3]]]
-
- if reverse:
- return char[2] + char[3] + char[0] + char[1]
-
- return "".join(char)
-
- def _decodeByte(self, c) -> int:
- nb = False
- idx = [self.cr.index(c[0]), self.cc.index(c[1])]
- if idx[0] < 0 or idx[1] < 0:
- idx = [self.cn.index(c[0]), self.cb.index(c[1])]
- nb = True
- raise ValueError("ERROR! at/ri overflow")
-
- result = idx[0] * self.sb + idx[1] if nb else idx[0] * self.sc + idx[1]
- if result > 0x7F:
- raise ValueError("ERROR! at/ri overflow")
-
- return result | 0x80 if nb else 0
-
- def _decodeShort(self, c) -> int:
- reverse = c[0] not in self.cr
- if not reverse:
- idx = [
- self.cr.index(c[0]),
- self.cc.index(c[1]),
- self.cn.index(c[2]),
- self.cb.index(c[3]),
- ]
- else:
- idx = [
- self.cr.index(c[2]),
- self.cc.index(c[3]),
- self.cn.index(c[0]),
- self.cb.index(c[1]),
- ]
-
- if idx[0] < 0 or idx[1] < 0 or idx[2] < 0 or idx[3] < 0:
- raise ValueError("ERROR! not atri")
-
- result = idx[0] * self.scnb + idx[1] * self.snb + idx[2] * self.sb + idx[3]
- if result > 0x7FFF:
- raise ValueError("ERROR! atri overflow")
-
- result |= 0x8000 if reverse else 0
- return result
-
- def _encodeBytes(self, b) -> str:
- result = []
- for i in range(0, (len(b) >> 1)):
- result.append(self._encodeShort((b[i * 2] << 8 | b[i * 2 + 1])))
-
- if len(b) & 1 == 1:
- result.append(self._encodeByte(b[-1]))
-
- return "".join(result)
-
- def encode(self, s: str, encoding: str = "utf-8"):
- if not isinstance(s, str):
- raise ValueError("Please enter str instead of other")
-
- return self._encodeBytes(s.encode(encoding))
-
- def _decodeBytes(self, s: str):
- if not isinstance(s, str):
- raise ValueError("Please enter str instead of other")
-
- if len(s) & 1:
- raise ValueError("ERROR length")
-
- result = []
- for i in range(0, (len(s) >> 2)):
- result.append(bytes([self._decodeShort(s[i * 4 : i * 4 + 4]) >> 8]))
- result.append(bytes([self._decodeShort(s[i * 4 : i * 4 + 4]) & 0xFF]))
-
- if (len(s) & 2) == 2:
- result.append(bytes([self._decodeByte(s[-2:])]))
-
- return b"".join(result)
-
- def decode(self, s: str, encoding: str = "utf-8") -> str:
- if not isinstance(s, str):
- raise ValueError("Please enter str instead of other")
-
- try:
- return self._decodeBytes(s).decode(encoding)
- except UnicodeDecodeError:
- raise ValueError("Decoding failed")
-
-
-class Yinglish:
- @staticmethod
- def _to_ying(x, y, ying) -> str:
- if random() > ying:
- return x
- if x in [",", "。"]:
- return str(choice(["..", "...", "....", "......"]))
- if x in ["!", "!"]:
- return "❤"
- if len(x) > 1 and random() < 0.5:
- return str(
- choice(
- [
- f"{x[0]}..{x}",
- f"{x[0]}...{x}",
- f"{x[0]}....{x}",
- f"{x[0]}......{x}",
- ]
- )
- )
- else:
- if y == "n" and random() < 0.5:
- x = "〇" * len(x)
- return str(choice([f"...{x}", f"....{x}", f".....{x}", f"......{x}"]))
-
- @classmethod
- def deal(cls, text, ying: Optional[float] = 0.5) -> str:
- return "".join([cls._to_ying(x, y, ying) for x, y in pseg.cut(text)])