1
0

Поддержка множества pageId в rag/download.sh

This commit is contained in:
2025-08-25 13:17:00 +08:00
parent b391de5d35
commit 1fa14207be

View File

@@ -1,11 +1,12 @@
#!/bin/bash #!/bin/bash
# shellcheck disable=SC1091,SC2181
command -v curl >/dev/null 2>&1 || { echo >&2 "Ошибка: curl не установлен"; exit 1; } command -v curl >/dev/null 2>&1 || { echo >&2 "Ошибка: curl не установлен"; exit 1; }
command -v jq >/dev/null 2>&1 || { echo >&2 "Ошибка: jq не установлен"; exit 1; } command -v jq >/dev/null 2>&1 || { echo >&2 "Ошибка: jq не установлен"; exit 1; }
if [ $# -lt 1 ]; then if [ $# -lt 1 ]; then
echo >&2 "Ошибка: не указан ID страницы для загрузки" echo >&2 "Ошибка: не указан ID страницы для загрузки"
echo "Использование: $0 <pageId>" echo "Использование: $0 <pageId1> [<pageId2>...]"
exit 1 exit 1
fi fi
@@ -16,45 +17,46 @@ source ../.env
[ -z "$CONF_USERNAME" ] && { echo >&2 "Ошибка: CONF_USERNAME не указан в файле .env"; exit 1; } [ -z "$CONF_USERNAME" ] && { echo >&2 "Ошибка: CONF_USERNAME не указан в файле .env"; exit 1; }
[ -z "$CONF_PASSWORD" ] && { echo >&2 "Ошибка: CONF_PASSWORD не указан в файле .env"; exit 1; } [ -z "$CONF_PASSWORD" ] && { echo >&2 "Ошибка: CONF_PASSWORD не указан в файле .env"; exit 1; }
PAGE_ID="$1"
API_ENDPOINT="${CONF_URL}/rest/api/content/${PAGE_ID}?expand=body.view,children.page"
OUTPUT_PATH="./input_html" OUTPUT_PATH="./input_html"
[ ! -d "$OUTPUT_PATH" ] && mkdir -p "$OUTPUT_PATH" [ ! -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"
echo echo
echo "Загрузка: $API_ENDPOINT" echo "Загрузка: $API_ENDPOINT"
response=$(curl -s -u "$CONF_USERNAME:$CONF_PASSWORD" -H "Accept: application/json" "${API_ENDPOINT}") RESPONSE=$(curl -s -u "$CONF_USERNAME:$CONF_PASSWORD" -H "Accept: application/json" "${API_ENDPOINT}")
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "$response" echo "$RESPONSE"
exit 1 exit 1
fi fi
error_message=$(echo "$response" | jq -r '.message' 2>/dev/null) ERROR_MESSAGE=$(echo "$RESPONSE" | jq -r '.message' 2>/dev/null)
if [ -n "$error_message" ] && [ "$error_message" != "null" ]; then if [ -n "$ERROR_MESSAGE" ] && [ "$ERROR_MESSAGE" != "null" ]; then
echo "$response" echo "$RESPONSE"
exit 1 exit 1
fi fi
title=$(echo "$response" | jq -r .title) TITLE=$(echo "$RESPONSE" | jq -r .title)
content=$(echo "$response" | jq -r .body.view.value) CONTENT=$(echo "$RESPONSE" | jq -r .body.view.value)
if [ -z "$content" ]; then if [ -z "$CONTENT" ]; then
echo "Пустая страница, пропущено" echo "Пустая страница, пропущено"
exit exit
fi fi
path="$output_path/${title//\//_}.html" HTML_FILEPATH="$OUTPUT_PATH/${TITLE//\//_}.html"
content=${content//href=\"\//href=\"$CONF_URL} CONTENT=${CONTENT//href=\"\//href=\"$CONF_URL}
content=${content//src=\"\//src=\"$CONF_URL} CONTENT=${CONTENT//src=\"\//src=\"$CONF_URL}
url="$CONF_URL/pages/viewpage.action?pageId=$PAGE_ID" URL="$CONF_URL/pages/viewpage.action?pageId=$PAGE_ID"
echo -e "@@$url@@\n<br><html><body>Исходная страница: <a href=$url>$url</a><br><br><h1>$title</h1>$content</body></html>" > "$path" echo -e "@@$URL@@\n<br><html><body>Исходная страница: <a href=$URL>$URL</a><br><br><h1>$TITLE</h1>$CONTENT</body></html>" > "$HTML_FILEPATH"
echo "Сохранено: $output_path/$title.html" 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
child_ids=$(echo "$response" | jq -r '.children.page.results[]?.id' 2>/dev/null)
for child_id in $child_ids; do
echo "Переход к дочерней странице: $child_id"
$0 "$child_id"
done done