mirror of
https://gist.github.com/6ba37e4d4084e858f917e271550ce5f6.git
synced 2024-09-19 16:24:21 +03:00
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
from dataclasses import dataclass, field
|
|
|
|
import fluentpy as _
|
|
|
|
|
|
@dataclass
|
|
class Tags:
|
|
general: str
|
|
copyrights: str
|
|
characters: str
|
|
artists: str
|
|
tags: list[str] = field(init=False)
|
|
tags_string: str = field(init=False)
|
|
|
|
def __post_init__(self):
|
|
self.tags = self.__union_tags()
|
|
self.tags_string = " ".join(self.tags)
|
|
|
|
# noinspection PyCallingNonCallable
|
|
# noinspection PyProtectedMember
|
|
def characters_sanitized(self) -> list:
|
|
if self.copyrights == "":
|
|
# No need to sanitize tags
|
|
return self.characters.split(" ")
|
|
copyrights = self.copyrights.split(" ")
|
|
return _(self.characters) \
|
|
.split(" ") \
|
|
.filter(lambda s: s != "") \
|
|
.map(lambda s: self.__rename(s, copyrights)) \
|
|
._
|
|
|
|
@staticmethod
|
|
def __rename(s: str, substrings: list[str]) -> str:
|
|
for substring in substrings:
|
|
s = s.replace("_("+substring+")", "") \
|
|
.replace("("+substring+")", "") \
|
|
.strip()
|
|
return s
|
|
|
|
def __union_tags(self) -> list[str]:
|
|
tags = self.general.split(" ")
|
|
tags += self.__prefix_tags(self.copyrights, 'copyright_')
|
|
tags += self.__prefix_tags(self.characters, 'character_')
|
|
tags += self.__prefix_tags(self.artists, 'artist_')
|
|
return tags
|
|
|
|
# noinspection PyCallingNonCallable
|
|
# noinspection PyProtectedMember
|
|
@staticmethod
|
|
def __prefix_tags(tags: str, prefix: str) -> list[str]:
|
|
return _(tags) \
|
|
.split(" ") \
|
|
.filter(lambda s: s != "") \
|
|
.map(lambda s: prefix + s.strip()) \
|
|
._
|