- переименован input_md => data - добавление инфы о дате, версии и авторе изменений conf-страницы в индекс - вывод этой инфы в источниках - вывод статистики последнего ответа - указание имени коллекции для qdrant - мелочи по текстовкам
83 lines
2.9 KiB
Bash
Executable File
83 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# shellcheck disable=SC1091,SC2181,SC2000
|
||
|
||
command -v curl >/dev/null 2>&1 || { echo >&2 "Ошибка: curl не установлен"; exit 1; }
|
||
command -v jq >/dev/null 2>&1 || { echo >&2 "Ошибка: jq не установлен"; exit 1; }
|
||
|
||
if [ $# -lt 1 ]; then
|
||
echo >&2 "Ошибка: не указан ID страницы для загрузки"
|
||
echo "Использование: $0 <pageId1> [<pageId2>...]"
|
||
exit 1
|
||
fi
|
||
|
||
[ ! -f ../.env ] && cp ../.env.example ../.env
|
||
source ../.env
|
||
|
||
[ -z "$CONF_URL" ] && { echo >&2 "Ошибка: CONF_URL не указан в файле .env"; exit 1; }
|
||
[ -z "$CONF_USERNAME" ] && { echo >&2 "Ошибка: CONF_USERNAME не указан в файле .env"; exit 1; }
|
||
[ -z "$CONF_PASSWORD" ] && { echo >&2 "Ошибка: CONF_PASSWORD не указан в файле .env"; exit 1; }
|
||
|
||
OUTPUT_PATH="./input_html"
|
||
[ ! -d "$OUTPUT_PATH" ] && mkdir -p "$OUTPUT_PATH"
|
||
|
||
for PAGE_ID in "$@"; do
|
||
API_ENDPOINT="${CONF_URL}/rest/api/content/${PAGE_ID}?expand=body.view,children.page,version"
|
||
echo
|
||
echo "Загрузка: $API_ENDPOINT"
|
||
|
||
RESPONSE=$(curl -s -u "$CONF_USERNAME:$CONF_PASSWORD" -H "Accept: application/json" "${API_ENDPOINT}")
|
||
if [ $? -ne 0 ]; then
|
||
echo "$RESPONSE"
|
||
exit 1
|
||
fi
|
||
|
||
ERROR_MESSAGE=$(echo "$RESPONSE" | jq -r '.message' 2>/dev/null)
|
||
if [ -n "$ERROR_MESSAGE" ] && [ "$ERROR_MESSAGE" != "null" ]; then
|
||
echo "$RESPONSE"
|
||
exit 1
|
||
fi
|
||
|
||
CONTENT=$(echo "$RESPONSE" | jq -r .body.view.value)
|
||
if [ -z "$CONTENT" ]; then
|
||
echo "Пустая страница, пропущено"
|
||
exit
|
||
fi
|
||
|
||
TITLE=$(echo "$RESPONSE" | jq -r .title)
|
||
VERSION_NUM=$(echo "$RESPONSE" | jq -r .version.number)
|
||
VERSION_WHEN=$(date -d "$(echo "$RESPONSE" | jq -r .version.when)" +'%d.%m.%Y %H:%M:%S %Z')
|
||
VERSION_BY=$(echo "$RESPONSE" | jq -r .version.by.username)
|
||
|
||
TITLE_ESC="${TITLE//\//_}"
|
||
FILENAME="$TITLE_ESC.html"
|
||
if [ "$(echo "$FILENAME" | wc -c)" -gt 255 ]; then # измерение по байтам, а не длине
|
||
FILENAME="${TITLE_ESC:0:120}.html"
|
||
fi
|
||
HTML_FILEPATH="$OUTPUT_PATH/$FILENAME"
|
||
CONTENT=${CONTENT//href=\"\//href=\"$CONF_URL/}
|
||
CONTENT=${CONTENT//src=\"\//src=\"$CONF_URL/}
|
||
|
||
URL="$CONF_URL/pages/viewpage.action?pageId=$PAGE_ID"
|
||
|
||
cat > "$HTML_FILEPATH" <<EOF
|
||
<html><body>
|
||
<!-- разметка для эмбеддинга -->
|
||
@@ $URL @@
|
||
^^ $VERSION_NUM ^^
|
||
%% $VERSION_BY %%
|
||
== $VERSION_WHEN ==
|
||
<!-- / разметка для эмбеддинга -->
|
||
<h1>$TITLE</h1>
|
||
$CONTENT
|
||
</body></html>
|
||
EOF
|
||
echo "Сохранено: $OUTPUT_PATH/$TITLE.html"
|
||
|
||
CHILD_IDS=$(echo "$RESPONSE" | jq -r '.children.page.results[]?.id' 2>/dev/null)
|
||
for CHILD_ID in $CHILD_IDS; do
|
||
echo "Переход к дочерней странице: $PAGE_ID => $CHILD_ID"
|
||
$0 "$CHILD_ID"
|
||
done
|
||
|
||
done
|