Implement media rule management and enhance proxy handling

- Added methods to `IMediaStore` for loading, saving, and removing media rules, allowing users to manage rules for media items effectively.
- Updated `MediaFetcher` to utilize the new rule management system, integrating rule checks into the fetching process to handle geo-blocks and previously ruled items.
- Enhanced `ProxyPool` to support exclusion of proxies from specific countries during acquisition, improving the handling of geo-blocked content.
- Adjusted `FetchOptions` to include rules instead of tombstones, streamlining the decision-making process during media fetching.
- Updated UI components to support rule editing, providing users with a more interactive experience when managing media rules.

These changes improve the overall media collection process by allowing users to define rules for handling media items and enhancing the proxy management system for better content accessibility.
This commit is contained in:
Leonid Pershin
2026-08-15 15:10:55 +03:00
parent f72f08a7bc
commit 0fa8fb89f6
26 changed files with 947 additions and 46 deletions
+7
View File
@@ -42,6 +42,13 @@
## Источники
- **Несколько расширений — это один кандидат с запасными адресами**, а не несколько кандидатов. У id
одна картинка: три кандидата на три суффикса скачали бы попадание и потом пошли искать его
несуществующих близнецов, а счётчики посчитали бы одну находку за три. Порядок — инструкция:
`MediaFetcher.FetchAddressesAsync` идёт по `MediaCandidate.Addresses` до первого ответа.
- **Дальше по списку двигает только «здесь ничего нет»**: `Gone`, `NotMedia`, `TooSmall`,
`Placeholder`. Тайм-аут или отказ прокси — это отсутствие вердикта, а не вердикт: сжечь на нём
остальные суффиксы значит объявить id отсутствующим везде по одному сломанному соединению.
- **Пустое расширение — это `.jpg`, а не «без суффикса».** В редакторе это плейсхолдер, и
`PatternSourceConfig.NormaliseExtension` подставляет его в домене, потому что через `TryCreate`
проходят и форма, и загрузка `sources.user.json`. Голый `/{id}` почти всегда опечатка, которая