diff --git a/bot/msgprocessor.py b/bot/msgprocessor.py index 068de6a..ecf6b99 100644 --- a/bot/msgprocessor.py +++ b/bot/msgprocessor.py @@ -32,34 +32,23 @@ class TrackerRemovalMsgProcessor: # todo: вообще мы работаем с http и это юзкейс обскьюрный # но ссылка может быть и без указания схемы, телега может распарсить # просто строку через точки и в конце какой то домен верхнего уровня как ссылку - SCHEME = "http://" - links_entries = find_all_string_entries(self.__msg.text, SCHEME) + def is_url(url: str) -> bool: + SCHEME = "http://" + return url.startswith(SCHEME) - # разобьем строку на просто текст и ссылки - # с in-place преобразованием на норм ссылки - splitted_by_urls: list[str] = [] - before_link_idx = 0 - for link_entry in links_entries: - # будем искать либо конец строки либо пробел - space_index = len(self.__msg.text) - try: - space_index = self.__msg.text.index(" ", link_entry) - except ValueError: - pass + lexems = self.__msg.text.split() + for i, l in enumerate(lexems): + if not is_url(l): + continue - if link_entry - before_link_idx > 0: - splitted_by_urls.append(self.__msg.text[before_link_idx:link_entry]) + removed_trackers_url = self.__remove_tracker(l) + if l == removed_trackers_url: # изменений урла не было + continue - url = self.__msg.text[link_entry:space_index] - removed_trackers_url = self.__remove_tracker(url) - if url != removed_trackers_url: - trackers_extracted = True - splitted_by_urls.append(removed_trackers_url) + trackers_extracted = True + lexems[i] = removed_trackers_url - if len(self.__msg.text) - before_link_idx > 0: - splitted_by_urls.append(self.__msg.text[before_link_idx:]) - - self.__msg.text = "".join(splitted_by_urls) + self.__msg.text = " ".join(lexems) return trackers_extracted @staticmethod