more simple url processing

This commit is contained in:
Ghytro
2024-11-07 17:02:25 +03:00
parent 7e78811724
commit 9d90726813

View File

@ -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