32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# Обновление 7 — Пропускать OOB если URL картинки содержит недопустимые символы
|
||
|
||
## Контекст
|
||
|
||
В update-5 была добавлена нормализация URL картинок: символ `:` в path кодировался как `%3A`.
|
||
Выяснилось, что CDN принимает закодированный URL (200 OK), но клиент Conversations
|
||
всё равно не отображает картинку — причина в hotlink protection на стороне CDN.
|
||
Таким образом, нормализация URL не решает проблему и бесполезна.
|
||
|
||
Практическое наблюдение: URL с `:` в path — признак CDN с hotlink protection.
|
||
Такие картинки не отобразятся в клиентах в любом случае.
|
||
Решение: не добавлять OOB для URL, содержащих `:` в path-части.
|
||
|
||
## Задача
|
||
|
||
1. В `adapters/sources/rss/fetcher.py`:
|
||
- Удалить функцию `_normalize_image_url` и импорты `urllib.parse`
|
||
- В `_extract_image_url` проверять raw URL: если path-часть содержит `:` — возвращать `None`
|
||
|
||
## Техническая реализация
|
||
|
||
Проверка выполняется через `urlparse`:
|
||
|
||
```python
|
||
from urllib.parse import urlparse
|
||
|
||
p = urlparse(url)
|
||
if ':' in p.path:
|
||
return None
|
||
return url
|
||
```
|