| #!/usr/bin/env bash |
| set -e |
|
|
| echo ">>> [Script 2] This script will handle Claude analysis and config update." |
|
|
| |
| |
| |
|
|
| echo ">>> [Script 2] Введите дополнительные комментарии по поводу арта (или нажмите Enter, чтобы пропустить):" |
| read USER_COMMENTS |
|
|
| |
| |
| |
| echo ">>> [Script 2] Unzipping all .zip in /workspace/MyLearningDataset/Images ..." |
| find /workspace/MyLearningDataset/Images -type f -name '*.zip' | while read zipf; do |
| unzip -o "$zipf" -d /workspace/MyLearningDataset/Images |
| rm -f "$zipf" |
| done |
|
|
| |
| |
| |
| echo ">>> [Script 2] Collecting up to 35 .txt files ..." |
| TXT_FILES=$(find /workspace/MyLearningDataset/Images -type f -name '*.txt' | head -n 35) |
|
|
| if [ -z "$TXT_FILES" ]; then |
| echo "[Script 2] WARNING: No .txt files found (up to 35)." |
| fi |
|
|
| |
| |
| |
| |
| echo ">>> [Script 2] Installing anthropic library (if needed) ..." |
| pip install anthropic |
|
|
| |
| ANTHROPIC_API_KEY="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" |
| export ANTHROPIC_API_KEY |
|
|
| |
| |
| |
| echo ">>> [Script 2] Sending request to Claude via claude_analysis.py ..." |
| |
| echo "$TXT_FILES" > /tmp/txt_files_list.txt |
|
|
| |
| export USER_COMMENTS="$USER_COMMENTS" |
|
|
| |
| PARSED_JSON=$(python /workspace/claude_analysis.py --files-list /tmp/txt_files_list.txt 2>/dev/null | grep -o '{"token".*}' || true) |
|
|
| |
| echo ">>> [Script 2] Raw response from claude_analysis.py:" |
| echo "$PARSED_JSON" |
| echo ">>> [Script 2] End of raw response" |
| echo |
|
|
| |
| rm -f /tmp/txt_files_list.txt |
|
|
| if [ -z "$PARSED_JSON" ]; then |
| echo "[Script 2] ERROR: Claude response is empty or not found." |
| exit 1 |
| fi |
|
|
| |
| if [[ "$PARSED_JSON" == *"error"* ]]; then |
| echo "[Script 2] ERROR: JSON parse problem. See logs." |
| echo "$PARSED_JSON" |
| exit 1 |
| fi |
|
|
| |
| |
| |
| |
| TMP_JSON="/tmp/claude_response.json" |
| echo "$PARSED_JSON" > "$TMP_JSON" |
|
|
| echo ">>> [Script 2] Сохранен файл с результатами анализа: $TMP_JSON" |
| echo ">>> [Script 2] Текущие значения:" |
| echo "----------------------------------------" |
| echo "token = $(echo "$PARSED_JSON" | python -c 'import sys, json; print(json.load(sys.stdin)["token"])')" |
| echo "art_type = $(echo "$PARSED_JSON" | python -c 'import sys, json; print(json.load(sys.stdin)["art_type"])')" |
| echo "style_name = $(echo "$PARSED_JSON" | python -c 'import sys, json; print(json.load(sys.stdin)["style_name"])')" |
| echo "model_name = $(echo "$PARSED_JSON" | python -c 'import sys, json; print(json.load(sys.stdin)["model_name"])')" |
| echo "prompts:" |
| echo "$PARSED_JSON" | python -c 'import sys, json; print("\n".join(json.load(sys.stdin)["prompts"]))' |
| echo "----------------------------------------" |
|
|
| echo ">>> [Script 2] Пожалуйста, проверьте и отредактируйте файл если нужно: $TMP_JSON" |
| echo ">>> [Script 2] После завершения редактирования нажмите Enter для продолжения..." |
| read |
|
|
| |
| PARSED_JSON=$(cat "$TMP_JSON") |
|
|
| |
| if ! echo "$PARSED_JSON" | python -c 'import sys,json; json.load(sys.stdin)' >/dev/null 2>&1; then |
| echo "[Script 2] ERROR: Файл содержит невалидный JSON. Пожалуйста, исправьте и попробуйте снова." |
| exit 1 |
| fi |
|
|
| |
| TOKEN=$(echo "$PARSED_JSON" | python -c 'import sys, json; d=json.load(sys.stdin); print(d["token"])') |
| ART_TYPE=$(echo "$PARSED_JSON" | python -c 'import sys, json; d=json.load(sys.stdin); print(d["art_type"])') |
| STYLE_NAME=$(echo "$PARSED_JSON" | python -c 'import sys, json; d=json.load(sys.stdin); print(d["style_name"])') |
| MODEL_NAME=$(echo "$PARSED_JSON" | python -c 'import sys, json; d=json.load(sys.stdin); print(d["model_name"])') |
|
|
| |
| PROMPTS=$(echo "$PARSED_JSON" | python -c ' |
| import sys, json |
| d=json.load(sys.stdin) |
| prompts = d.get("prompts", []) |
| print("\n".join(prompts)) |
| ') |
|
|
| echo ">>> [Script 2] Обновленные значения:" |
| echo "token = $TOKEN" |
| echo "art_type = $ART_TYPE" |
| echo "style_name = $STYLE_NAME" |
| echo "model_name = $MODEL_NAME" |
| echo "prompts:" |
| echo "$PROMPTS" |
| echo |
|
|
| echo ">>> [Script 2] Нажмите Enter для продолжения или Ctrl+C для отмены..." |
| read |
|
|
| |
| rm -f "$TMP_JSON" |
|
|
| |
| |
| |
| NEW_FOLDER="/workspace/MyLearningDataset/Images/1_${MODEL_NAME}_${STYLE_NAME}" |
| mkdir -p "$NEW_FOLDER" |
|
|
| echo ">>> [Script 2] Moving all .txt and .png files into $NEW_FOLDER ..." |
| find /workspace/MyLearningDataset/Images -type f \( -name '*.txt' -o -name '*.png' \) -exec mv -f {} "$NEW_FOLDER" \; 2>/dev/null || true |
|
|
| |
| |
| |
| FLUX_CONFIG_PATH=$(find /workspace -name "FluxDatasetConfig.json" | head -n 1) |
| if [ -z "$FLUX_CONFIG_PATH" ]; then |
| echo "[Script 2] ERROR: FluxDatasetConfig.json not found!" |
| exit 1 |
| fi |
|
|
| echo ">>> [Script 2] Updating FluxDatasetConfig.json at $FLUX_CONFIG_PATH ..." |
| cat <<EOF > /workspace/update_flux_config.py |
| import json |
| |
| path = r"${FLUX_CONFIG_PATH}" |
| with open(path, "r", encoding="utf-8") as f: |
| config = json.load(f) |
| |
| config["train_data_dir"] = "/workspace/MyLearningDataset/Images" |
| config["output_dir"] = "/workspace/MyLearningDataset/Models" |
| config["output_name"] = "${MODEL_NAME}" |
| config["huggingface_repo_id"] = "Gerchegg/${MODEL_NAME}" |
| config["logging_dir"] = "/workspace/MyLearningDataset/Logs" |
| |
| # Форматируем промпты с дополнительными параметрами |
| formatted_prompts = [] |
| negative_params = "--n low quality, worst quality, bad anatomy, bad composition, poor, low effort --w 1024 --h 1024 --d 1 --l 3 --s 20" |
| |
| for prompt in """${PROMPTS}""".split('\n'): |
| if prompt.strip(): |
| formatted_prompt = f"${TOKEN}, {prompt.strip()} {negative_params}" |
| formatted_prompts.append(formatted_prompt) |
| |
| # Объединяем промпты в строку с переносами строк |
| config["sample_prompts"] = "\n".join(formatted_prompts) |
| |
| with open(path, "w", encoding="utf-8") as f: |
| json.dump(config, f, ensure_ascii=False, indent=2) |
| EOF |
|
|
| python /workspace/update_flux_config.py |
|
|
| echo ">>> [Script 2] Done. Analysis complete!" |
|
|