Compare commits
5 commits
e82618a096
...
c3a30da18f
| Author | SHA1 | Date | |
|---|---|---|---|
| c3a30da18f | |||
| 01d6bf5cd8 | |||
| 884be83ff6 | |||
| d91dbf066b | |||
| cb804b1eec |
2 changed files with 35 additions and 2 deletions
|
|
@ -1,4 +1,7 @@
|
|||
ab.chatgpt.com
|
||||
chatgpt.com
|
||||
chat.openai.com
|
||||
searchgpt.com
|
||||
api.telegram.org
|
||||
api.themoviedb.org
|
||||
artifacts.elastic.co
|
||||
|
|
@ -169,4 +172,7 @@ www.youtube.com
|
|||
i.ytimg.com
|
||||
www.chess.com
|
||||
marketplace.visualstudio.com
|
||||
files.oaiusercontent.com
|
||||
files.oaiusercontent.com
|
||||
notebooklm.google
|
||||
notebooklm.google.com
|
||||
maps-cdn.zepp.com
|
||||
|
|
@ -250,15 +250,21 @@ declare -a ORDERED_DOMS=()
|
|||
|
||||
for dom in $(printf '%s\n' "${!EXPANDED[@]}" | sort -u); do
|
||||
[[ "${SOURCES[$dom]:-}" == "related" ]] && continue
|
||||
# Базовый домен мог быть добавлен как related другим базовым доменом раньше по
|
||||
# алфавиту — пропускаем, чтобы не дублировать запись в конфиге.
|
||||
[[ -n "${WRITTEN[$dom]:-}" ]] && continue
|
||||
|
||||
# Собираем ещё не записанные связанные домены.
|
||||
# while выполняется в subshell — читает снимок WRITTEN, что корректно исключает
|
||||
# домены, уже занятые предыдущим базовым доменом.
|
||||
# Базовые домены (SOURCES==base) пропускаем — у них будет своя секция.
|
||||
mapfile -t base_related < <(
|
||||
if [[ -n "${SITE_RELATED[$dom]:-}" ]]; then
|
||||
tr ' ' '\n' <<< "${SITE_RELATED[$dom]}" | grep -v '^$' | sort -u | \
|
||||
while IFS= read -r rd; do
|
||||
[[ -z "${WRITTEN[$rd]:-}" ]] && printf '%s\n' "$rd"
|
||||
[[ -n "${WRITTEN[$rd]:-}" ]] && continue
|
||||
[[ "${SOURCES[$rd]:-}" == "base" ]] && continue
|
||||
printf '%s\n' "$rd"
|
||||
done
|
||||
fi
|
||||
)
|
||||
|
|
@ -281,6 +287,27 @@ done
|
|||
|
||||
mapfile -t ALL_DOMAINS < <(printf "%s\n" "${!EXPANDED[@]}" | sort -u)
|
||||
|
||||
# ==============================
|
||||
# Проверка уникальности ORDERED_DOMS перед записью
|
||||
# ==============================
|
||||
declare -A _seen=()
|
||||
declare -a _dups=()
|
||||
for _d in "${ORDERED_DOMS[@]}"; do
|
||||
if [[ -n "${_seen[$_d]:-}" ]]; then
|
||||
_dups+=("$_d")
|
||||
fi
|
||||
_seen["$_d"]=1
|
||||
done
|
||||
unset _seen
|
||||
|
||||
if [[ ${#_dups[@]} -gt 0 ]]; then
|
||||
err "BUG: ${#_dups[@]} duplicate domain(s) found in output list — config NOT written"
|
||||
for _d in "${_dups[@]}"; do
|
||||
err " duplicate: $_d"
|
||||
done
|
||||
exit 5
|
||||
fi
|
||||
|
||||
# Записываем конфиги одним батчем (не по одной строке через >>)
|
||||
if ! $DRY_RUN; then
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue