more simple url processing
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user