more simple url processing
This commit is contained in:
@ -32,34 +32,23 @@ class TrackerRemovalMsgProcessor:
|
|||||||
# todo: вообще мы работаем с http и это юзкейс обскьюрный
|
# todo: вообще мы работаем с http и это юзкейс обскьюрный
|
||||||
# но ссылка может быть и без указания схемы, телега может распарсить
|
# но ссылка может быть и без указания схемы, телега может распарсить
|
||||||
# просто строку через точки и в конце какой то домен верхнего уровня как ссылку
|
# просто строку через точки и в конце какой то домен верхнего уровня как ссылку
|
||||||
|
def is_url(url: str) -> bool:
|
||||||
SCHEME = "http://"
|
SCHEME = "http://"
|
||||||
links_entries = find_all_string_entries(self.__msg.text, SCHEME)
|
return url.startswith(SCHEME)
|
||||||
|
|
||||||
# разобьем строку на просто текст и ссылки
|
lexems = self.__msg.text.split()
|
||||||
# с in-place преобразованием на норм ссылки
|
for i, l in enumerate(lexems):
|
||||||
splitted_by_urls: list[str] = []
|
if not is_url(l):
|
||||||
before_link_idx = 0
|
continue
|
||||||
for link_entry in links_entries:
|
|
||||||
# будем искать либо конец строки либо пробел
|
|
||||||
space_index = len(self.__msg.text)
|
|
||||||
try:
|
|
||||||
space_index = self.__msg.text.index(" ", link_entry)
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if link_entry - before_link_idx > 0:
|
removed_trackers_url = self.__remove_tracker(l)
|
||||||
splitted_by_urls.append(self.__msg.text[before_link_idx:link_entry])
|
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
|
trackers_extracted = True
|
||||||
splitted_by_urls.append(removed_trackers_url)
|
lexems[i] = removed_trackers_url
|
||||||
|
|
||||||
if len(self.__msg.text) - before_link_idx > 0:
|
self.__msg.text = " ".join(lexems)
|
||||||
splitted_by_urls.append(self.__msg.text[before_link_idx:])
|
|
||||||
|
|
||||||
self.__msg.text = "".join(splitted_by_urls)
|
|
||||||
return trackers_extracted
|
return trackers_extracted
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user