1.7 KiB
1.7 KiB
Обновление 5 — Нормализация URL картинок
Проблема
Клиент Conversations (и его форки) не отображает OOB-картинки, если URL содержит символ :
в path-части (например, …/1579780545_0:182:3048:1897_…jpg).
При парсинге OOB <url> клиент интерпретирует : как разделитель схемы или порта
и обрезает URL — ссылка становится невалидной, картинка не загружается.
URL без двоеточий в пути отображаются корректно.
Решение
URL-энкодировать path-часть URL картинки перед сохранением в NewsItem.
Символ : кодируется как %3A. Согласно RFC 3986, percent-encoded символы
эквивалентны оригинальным — CDN-серверы обязаны принимать такие URL.
Техническая реализация
- В
adapters/sources/rss/fetcher.pyдобавить функцию_normalize_image_url(url: str) -> str - Функция использует
urllib.parse(стандартная библиотека, без новых зависимостей):- разобрать URL через
urlparse - перекодировать path через
quote(path, safe='/')— слэши остаются,:кодируется - собрать обратно через
urlunparse
- разобрать URL через
- Вызывать
_normalize_image_urlв_extract_image_urlперед возвратом URL