From 053fa623956209ab3fff81bfb799eb1a6e8fb4a5 Mon Sep 17 00:00:00 2001 From: mguschin Date: Mon, 2 Feb 2026 19:52:58 +0300 Subject: [PATCH] v1. --- .gitignore | 15 +++ 5393364294319597854.png | Bin 0 -> 154646 bytes CHANGELOG.md | 20 +++ Dockerfile | 23 ++++ README.md | 1 + cronjobs | 1 + evo/examples/products.json | 27 ++++ run/evo/clear.sh | 34 +++++ run/evo/constants.sh | 21 +++ run/evo/functions.sh | 45 +++++++ run/evo/get-groups.sh | 21 +++ run/evo/get-products.sh | 21 +++ run/evo/get-stores.sh | 21 +++ run/run.sh | 13 ++ run/test.sh | 5 + run/vk/clear.sh | 37 ++++++ run/vk/constants.sh | 30 +++++ run/vk/delete-products.sh | 92 +++++++++++++ run/vk/functions.sh | 52 ++++++++ run/vk/get-albums.sh | 24 ++++ run/vk/get-categories.sh | 24 ++++ run/vk/get-products.sh | 24 ++++ run/vk/send-albums.sh | 47 +++++++ run/vk/send-products.sh | 257 +++++++++++++++++++++++++++++++++++++ version | 1 + vk/whitelist-old | 10 ++ 26 files changed, 866 insertions(+) create mode 100644 .gitignore create mode 100644 5393364294319597854.png create mode 100644 CHANGELOG.md create mode 100644 Dockerfile create mode 100644 cronjobs create mode 100644 evo/examples/products.json create mode 100755 run/evo/clear.sh create mode 100755 run/evo/constants.sh create mode 100755 run/evo/functions.sh create mode 100755 run/evo/get-groups.sh create mode 100755 run/evo/get-products.sh create mode 100755 run/evo/get-stores.sh create mode 100755 run/run.sh create mode 100755 run/test.sh create mode 100755 run/vk/clear.sh create mode 100755 run/vk/constants.sh create mode 100755 run/vk/delete-products.sh create mode 100755 run/vk/functions.sh create mode 100755 run/vk/get-albums.sh create mode 100755 run/vk/get-categories.sh create mode 100755 run/vk/get-products.sh create mode 100755 run/vk/send-albums.sh create mode 100755 run/vk/send-products.sh create mode 100644 version create mode 100644 vk/whitelist-old diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cece179 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.*~$ +^#* +^.#* +*~$ +api.credentials* +evo/products/* +evo/groups/* +evo/stores/* +vk/categories/* +vk/albums/* +vk/products/* +run/test.log +vk/whitelist +logs/ +passwords.txt diff --git a/5393364294319597854.png b/5393364294319597854.png new file mode 100644 index 0000000000000000000000000000000000000000..82ddaeffa886e3daf65db9913904159228600c78 GIT binary patch literal 154646 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 literal 0 HcmV?d00001 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..806185d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.6.0] - 2025-06-15 + +### Added +- Initial changelog implementation +- Version tracking system + +### Changed +- Minor version bump from 1.5.2 to 1.6.0 + +## [1.5.2] - Previous Release + +### Notes +- Historical version before changelog implementation \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..26b6a1f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM alpine:latest + +RUN apk add --update \ + curl \ + git \ + openrc \ + bash \ + jq \ + yq + +RUN mkdir -p /var/www/ +RUN git config --system --add safe.directory '*' + +COPY ./cronjobs /etc/cron.d/cronjobs +RUN chmod 0644 /etc/cron.d/cronjobs +RUN /usr/bin/crontab /etc/cron.d/cronjobs + +WORKDIR /var/www/ +COPY ./ /var/www/ + +EXPOSE 80 + +CMD ["/usr/sbin/crond", "-f", "-l", "8"] diff --git a/README.md b/README.md index 453b95d..23f40f6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # evo-sync +evo-sync is a command-line synchronization tool that fetches product, group, and store data from the Evo platform and syncs it with VK (VKontakte). diff --git a/cronjobs b/cronjobs new file mode 100644 index 0000000..9e01049 --- /dev/null +++ b/cronjobs @@ -0,0 +1 @@ +0 * * * * /var/www/run/run.sh diff --git a/evo/examples/products.json b/evo/examples/products.json new file mode 100644 index 0000000..ae868b5 --- /dev/null +++ b/evo/examples/products.json @@ -0,0 +1,27 @@ +{ + "uuid": "0291602f-8de3-4df6-90d3-78917b51b6b5", + "group": true, + "hasVariants": null, + "type": null, + "name": "Чай с добавками", + "code": null, + "barCodes": null, + "price": null, + "costPrice": null, + "quantity": null, + "measureName": null, + "tax": null, + "allowToSell": null, + "description": null, + "articleNumber": null, + "parentUuid": null, + "alcoCodes": null, + "alcoholByVolume": null, + "alcoholProductKindCode": null, + "tareVolume": null, + "classificationCode": null, + "allowPartialSell": null, + "quantityInPackage": null, + "isExcisable": null, + "isAgeLimited": null +} diff --git a/run/evo/clear.sh b/run/evo/clear.sh new file mode 100755 index 0000000..a446206 --- /dev/null +++ b/run/evo/clear.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# This script cleans all EVO-related directories +# It removes all files from products, groups and stores directories + +# Get the directory where this script is located +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +# Load constants and functions +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Initialize logging system +setup_logging + +# Ensure we clean up properly even if script is interrupted +trap 'cleanup 1' HUP INT QUIT TERM + +# Begin cleanup process +echo "$(timestamp) [INFO] Starting EVO cleanup process" >> "$LOG_FILE" + +# Clean EVO content directories +echo "$(timestamp) [INFO] Cleaning EVO directories" >> "$LOG_FILE" +# Remove product files +echo "$(timestamp) [INFO] Removing product files" >> "$LOG_FILE" +echo "rm -f $EVO_PRODUCTS_PATH/*" && rm -rf $EVO_PRODUCTS_PATH/* +# Remove group files +echo "$(timestamp) [INFO] Removing group files" >> "$LOG_FILE" +echo "rm -f $EVO_GROUPS_PATH/*" && rm -rf $EVO_GROUPS_PATH/* +# Remove store files +echo "$(timestamp) [INFO] Removing store files" >> "$LOG_FILE" +echo "rm -rf $EVO_STORES_PATH/*" && rm -rf $EVO_STORES_PATH/* + +echo "$(timestamp) [INFO] EVO cleanup completed successfully" >> "$LOG_FILE" +cleanup 0 diff --git a/run/evo/constants.sh b/run/evo/constants.sh new file mode 100755 index 0000000..13580ec --- /dev/null +++ b/run/evo/constants.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +ROOT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ROOT_DIR+='/../..' + +EVO_STORE_PERIOD_HOURS=2 +EVO_STORE_PERIOD_MINUTES=$((EVO_STORE_PERIOD_HOURS * 60)) +EVO_PRODUCTS_PATH="$ROOT_DIR/evo/products" +EVO_GROUPS_PATH="$ROOT_DIR/evo/groups" +EVO_STORES_PATH="$ROOT_DIR/evo/stores" +EVO_EXAMPLE_PATH="$ROOT_DIR/evo/examples" +EVO_RESPONSE_FILE_NAME_FORMAT="%(%Y-%m-%d_%H:%M:%S)T" +EVO_RESPONSE_FILE_NAME_EXT="json" +EVO_API_HOST="https://api.evotor.ru" +EVO_API_TOKEN=`cat "$ROOT_DIR/evo/api.credentials.token"` +EVO_API_STORE_ID=`cat "$ROOT_DIR/evo/api.credentials.store_id"` +EVO_API_ACCEPT=`cat "$ROOT_DIR/evo/api.credentials.accept"` +EVO_API_CONTENT_TYPE=`cat "$ROOT_DIR/evo/api.credentials.content_type"` +EVO_API_GET_PRODUCTS="$EVO_API_HOST/stores/$EVO_API_STORE_ID/products" +EVO_API_GET_GROUPS="$EVO_API_HOST/stores/$EVO_API_STORE_ID/product-groups" +EVO_API_GET_STORES="$EVO_API_HOST/stores" diff --git a/run/evo/functions.sh b/run/evo/functions.sh new file mode 100755 index 0000000..3f2e218 --- /dev/null +++ b/run/evo/functions.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# Setup timestamp function +timestamp() { + date "+%Y-%m-%d %H:%M:%S" +} + +# Setup process cleanup +cleanup() { + # Kill all child processes of this script + pkill -P $$ + exit $1 +} + +# Function to handle API requests and save response +handle_request() { + local request_type=$1 + local api_endpoint=$2 + local path=$3 + local fileName=$4 + + echo "$(timestamp) [REQUEST] Getting $request_type" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Accept: $EVO_API_ACCEPT" \ + -H "Content-Type: $EVO_API_CONTENT_TYPE" \ + -H "Authorization: $EVO_API_TOKEN" \ + -X GET \ + $api_endpoint) + http_code=${response: -3} + response_body=${response:0:-3} + if [ "$http_code" = "200" ]; then + touch "$path/$fileName" + echo "$response_body" > "$path/$fileName" + fi + echo "$(timestamp) [RESPONSE] code=$http_code" >> "$LOG_FILE" + + # Delete old files (files older than configured period) + find $path ! -type d -mmin +$EVO_STORE_PERIOD_MINUTES -delete +} + +# Setup logging function +setup_logging() { + LOG_DIR="$ROOT_DIR/logs" + mkdir -p "$LOG_DIR" + LOG_FILE="$LOG_DIR/$(date +%Y%m%d).log" +} diff --git a/run/evo/get-groups.sh b/run/evo/get-groups.sh new file mode 100755 index 0000000..c53e9af --- /dev/null +++ b/run/evo/get-groups.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$EVO_GROUPS_PATH/$EVO_API_STORE_ID +printf -v fileName "$EVO_RESPONSE_FILE_NAME_FORMAT.$EVO_RESPONSE_FILE_NAME_EXT" -1 +mkdir -p $path + +# Handle request for groups +handle_request "groups" "$EVO_API_GET_GROUPS" "$path" "$fileName" + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/evo/get-products.sh b/run/evo/get-products.sh new file mode 100755 index 0000000..532446b --- /dev/null +++ b/run/evo/get-products.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$EVO_PRODUCTS_PATH/$EVO_API_STORE_ID +printf -v fileName "$EVO_RESPONSE_FILE_NAME_FORMAT.$EVO_RESPONSE_FILE_NAME_EXT" -1 +mkdir -p $path + +# Handle request for products +handle_request "products" "$EVO_API_GET_PRODUCTS" "$path" "$fileName" + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/evo/get-stores.sh b/run/evo/get-stores.sh new file mode 100755 index 0000000..c72d347 --- /dev/null +++ b/run/evo/get-stores.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$EVO_STORES_PATH/$EVO_API_STORE_ID +printf -v fileName "$EVO_RESPONSE_FILE_NAME_FORMAT.$EVO_RESPONSE_FILE_NAME_EXT" -1 +mkdir -p $path + +# Handle request for stores +handle_request "stores" "$EVO_API_GET_STORES" "$path" "$fileName" + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/run.sh b/run/run.sh new file mode 100755 index 0000000..7678036 --- /dev/null +++ b/run/run.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +$SCRIPT_DIR/evo/get-groups.sh +$SCRIPT_DIR/evo/get-products.sh +$SCRIPT_DIR/vk/get-albums.sh +$SCRIPT_DIR/vk/send-albums.sh +$SCRIPT_DIR/vk/get-albums.sh +$SCRIPT_DIR/vk/get-products.sh +$SCRIPT_DIR/vk/send-products.sh +$SCRIPT_DIR/vk/get-products.sh +$SCRIPT_DIR/vk/delete-products.sh diff --git a/run/test.sh b/run/test.sh new file mode 100755 index 0000000..93a9663 --- /dev/null +++ b/run/test.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +echo "Test [OK]." >> $SCRIPT_DIR/test.res diff --git a/run/vk/clear.sh b/run/vk/clear.sh new file mode 100755 index 0000000..0b73ce7 --- /dev/null +++ b/run/vk/clear.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# This script cleans all VK-related directories and logs +# It removes all files from categories, albums, products and logs directories + +# Get the directory where this script is located +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +# Load constants and functions +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Initialize logging system +setup_logging + +# Ensure we clean up properly even if script is interrupted +trap 'cleanup 1' HUP INT QUIT TERM + +# Begin cleanup process +echo "$(timestamp) [INFO] Starting cleanup process" >> "$LOG_FILE" + +# Clean VK content directories +echo "$(timestamp) [INFO] Cleaning VK directories" >> "$LOG_FILE" +# Remove category files +echo "$(timestamp) [INFO] Removing category files" >> "$LOG_FILE" +echo "rm -f $VK_CATEGORIES_PATH/*" && rm -rf $VK_CATEGORIES_PATH/* +# Remove album files +echo "$(timestamp) [INFO] Removing album files" >> "$LOG_FILE" +echo "rm -f $VK_ALBUMS_PATH/*" && rm -rf $VK_ALBUMS_PATH/* +# Remove product files +echo "$(timestamp) [INFO] Removing product files" >> "$LOG_FILE" +echo "rm -f $VK_PRODUCTS_PATH/*" && rm -rf $VK_PRODUCTS_PATH/* +# Clean logs directory +echo "$(timestamp) [INFO] Cleaning logs directory" >> "$LOG_FILE" +echo "rm -f $LOG_DIR/*" && rm -rf $LOG_DIR/* + +echo "$(timestamp) [INFO] Cleanup completed successfully" >> "$LOG_FILE" +cleanup 0 \ No newline at end of file diff --git a/run/vk/constants.sh b/run/vk/constants.sh new file mode 100755 index 0000000..9049cbe --- /dev/null +++ b/run/vk/constants.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +ROOT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +ROOT_DIR+='/../..' + +VK_STORE_PERIOD_MINUTES=120 +VK_API_CONTENT_TYPE_MULTIPART="multipart/form-data" +VK_API_HOST="https://api.vk.ru/method" +VK_API_USER_TOKEN=`cat "$ROOT_DIR/vk/api.credentials.user_token"` +VK_API_VERSION="5.199" +VK_API_ADD_PRODUCT="$VK_API_HOST/market.add?v=$VK_API_VERSION" +VK_API_EDIT_PRODUCT="$VK_API_HOST/market.edit?v=$VK_API_VERSION" +VK_API_ADD_PRODUCT_TO_ALBUM="$VK_API_HOST/market.addToAlbum?v=$VK_API_VERSION" +VK_API_ADD_ALBUM="$VK_API_HOST/market.addAlbum?v=$VK_API_VERSION" +VK_API_GET_CATEGORIES="$VK_API_HOST/market.getCategories?v=$VK_API_VERSION" +VK_API_GET_ALBUMS="$VK_API_HOST/market.getAlbums?v=$VK_API_VERSION" +VK_API_GET_PRODUCTS="$VK_API_HOST/market.get?v=$VK_API_VERSION" +VK_API_GROUP_ID=`cat "$ROOT_DIR/vk/api.credentials.group_id"` +VK_API_PARAM_OWNER_ID="-$VK_API_GROUP_ID" +VK_API_DELETE_PRODUCT="$VK_API_HOST/market.delete?v=$VK_API_VERSION" +VK_CATEGORIES_PATH="$ROOT_DIR/vk/categories" +VK_ALBUMS_PATH="$ROOT_DIR/vk/albums" +VK_PRODUCTS_PATH="$ROOT_DIR/vk/products" +VK_RESPONSE_FILE_NAME_FORMAT="%(%Y-%m-%d_%H:%M:%S)T" +VK_RESPONSE_FILE_NAME_EXT="json" +VK_API_CATEGORY_ID="40932" +VK_STOCK_AMOUNT=1000 +VK_API_GET_PHOTO_UPLOAD_URL="$VK_API_HOST/market.getProductPhotoUploadServer?v=$VK_API_VERSION" +VK_API_PHOTO_PATH="$ROOT_DIR/5393364294319597854.png" +VK_API_UPLOAD_PHOTO_URL="$VK_API_HOST/market.saveProductPhoto" diff --git a/run/vk/delete-products.sh b/run/vk/delete-products.sh new file mode 100755 index 0000000..03ebf90 --- /dev/null +++ b/run/vk/delete-products.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $ROOT_DIR/run/evo/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +# Delete products from vk which were deleted from evo. +# loop across vk products. + +vkPath=$VK_PRODUCTS_PATH/$VK_API_GROUP_ID +vkFileName=`ls $vkPath -Art | tail -1` +vkFilePath=$vkPath/$vkFileName + +evoPath=$EVO_PRODUCTS_PATH/$EVO_API_STORE_ID +evoFileName=`ls $evoPath -Art | tail -1` +evoFilePath=$evoPath/$evoFileName + +hasEvoItems=`yq '. | has("items")' $evoFilePath` +if ! $hasEvoItems; then + cleanup 1 +fi + +# Build associative array of EVO product names (transformed) +declare -A evoNames +while IFS= read -r line; do + if [[ -n "$line" ]]; then + item_name=$(echo "$line" | yq -r '.name') + if [[ -n "$item_name" && "$item_name" != "null" ]]; then + transformed_name=$(echo "$item_name" | xargs) + transformed_name="${transformed_name//;/,}" + evoNames["$transformed_name"]=1 + fi + fi +done < <(yq -o=j -I=0 '.items[]' $evoFilePath) + +# Build associative array of VK items by name (transformed) +declare -A vkItemsByName +readarray vkItems < <(yq -o=j -I=0 '.response.items[]' $vkFilePath ) +for vkItem in "${vkItems[@]}"; do + vkItemName=$(echo $vkItem | yq .title | xargs) + vkItemName="${vkItemName//;/,}" + vkItemId=$(echo $vkItem | yq .id) + # Store VK item IDs by name (append to comma-separated list) + if [[ -n "${vkItemsByName[$vkItemName]}" ]]; then + vkItemsByName[$vkItemName]="${vkItemsByName[$vkItemName]},$vkItemId" + else + vkItemsByName[$vkItemName]="$vkItemId" + fi +done + +# For each VK name, check if it exists in EVO +for vkName in "${!vkItemsByName[@]}"; do + IFS=',' read -ra ids <<< "${vkItemsByName[$vkName]}" + if [[ -n "${evoNames[$vkName]}" ]]; then + # If multiple VK items for this name, keep the oldest (first), delete the rest + if (( ${#ids[@]} > 1 )); then + for ((i=1; i<${#ids[@]}; i++)); do + vkItemId="${ids[$i]}" + echo "$(timestamp) [REQUEST] Deleting duplicate product: $vkName (id=$vkItemId)" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F owner_id=$VK_API_PARAM_OWNER_ID \ + -F item_id=$vkItemId \ + $VK_API_DELETE_PRODUCT) + http_code=${response: -3} + response_body=${response:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + done + fi + else + # If VK name not in EVO, delete all VK items for this name + for vkItemId in "${ids[@]}"; do + echo "$(timestamp) [REQUEST] Deleting product not in EVO: $vkName (id=$vkItemId)" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F owner_id=$VK_API_PARAM_OWNER_ID \ + -F item_id=$vkItemId \ + $VK_API_DELETE_PRODUCT) + http_code=${response: -3} + response_body=${response:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + done + fi +done + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/vk/functions.sh b/run/vk/functions.sh new file mode 100755 index 0000000..0189514 --- /dev/null +++ b/run/vk/functions.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# Setup logging +function setup_logging() { + LOG_DIR="$ROOT_DIR/logs" + mkdir -p "$LOG_DIR" + SCRIPT_NAME=$(basename "${BASH_SOURCE[0]}" .sh) + LOG_FILE="$LOG_DIR/$(date +%Y%m%d).log" +} + +function timestamp() { + date "+%Y-%m-%d %H:%M:%S" +} + +# Function to handle cleanup and exit +function cleanup() { + # Kill all child processes of this script + pkill -P $$ + exit $1 +} + +# Function to handle requests and responses +function handle_vk_request() { + local request_name=$1 + local request_url=$2 + local path=$3 + local fileName=$4 + local additional_params=$5 + local debug_response=${6:-true} + + echo "$(timestamp) [REQUEST] Getting $request_name" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -X GET \ + "$request_url$additional_params") + http_code=${response: -3} + response_body=${response:0:-3} + if [ "$http_code" = "200" ]; then + if ! echo "$response_body" | jq -e 'has("error")' > /dev/null; then + touch "$path/$fileName" + echo "$response_body" > "$path/$fileName" + else + error_msg=$(echo "$response_body" | jq -r '.error.error_msg') + echo "$(timestamp) [ERROR] $error_msg" >> "$LOG_FILE" + fi + fi + + if [ "$debug_response" = true ]; then + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + else + echo "$(timestamp) [RESPONSE] code=$http_code" >> "$LOG_FILE" + fi +} diff --git a/run/vk/get-albums.sh b/run/vk/get-albums.sh new file mode 100755 index 0000000..26ba1a5 --- /dev/null +++ b/run/vk/get-albums.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$VK_ALBUMS_PATH/$VK_API_GROUP_ID +mkdir -p $path +printf -v fileName "$VK_RESPONSE_FILE_NAME_FORMAT.$VK_RESPONSE_FILE_NAME_EXT" -1 + +# Handle request for albums +handle_vk_request "albums list" "$VK_API_GET_ALBUMS" "$path" "$fileName" "&owner_id=$VK_API_PARAM_OWNER_ID" false + +# Clean up old files +find $path ! -type d -mmin +$VK_STORE_PERIOD_MINUTES -delete + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/vk/get-categories.sh b/run/vk/get-categories.sh new file mode 100755 index 0000000..e6917bf --- /dev/null +++ b/run/vk/get-categories.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$VK_CATEGORIES_PATH/$VK_API_GROUP_ID +mkdir -p $path +printf -v fileName "$VK_RESPONSE_FILE_NAME_FORMAT.$VK_RESPONSE_FILE_NAME_EXT" -1 + +# Handle request for categories +handle_vk_request "categories list" "$VK_API_GET_CATEGORIES" "$path" "$fileName" "" false + +# Clean up old files +find $path ! -type d -mmin +$VK_STORE_PERIOD_MINUTES -delete + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/vk/get-products.sh b/run/vk/get-products.sh new file mode 100755 index 0000000..cf8dceb --- /dev/null +++ b/run/vk/get-products.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +path=$VK_PRODUCTS_PATH/$VK_API_GROUP_ID +mkdir -p $path +printf -v fileName "$VK_RESPONSE_FILE_NAME_FORMAT.$VK_RESPONSE_FILE_NAME_EXT" -1 + +# Handle request for products +handle_vk_request "products list" "$VK_API_GET_PRODUCTS" "$path" "$fileName" "&owner_id=$VK_API_PARAM_OWNER_ID&extended=1&with_disabled=1&count=200" false + +# Clean up old files +find $path ! -type d -mmin +$VK_STORE_PERIOD_MINUTES -delete + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/vk/send-albums.sh b/run/vk/send-albums.sh new file mode 100755 index 0000000..7771284 --- /dev/null +++ b/run/vk/send-albums.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $ROOT_DIR/run/evo/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +evoPath=$EVO_GROUPS_PATH/$EVO_API_STORE_ID +evoFileName=`ls $evoPath -Art | tail -1` +evoFilePath=$evoPath/$evoFileName +vkPath=$VK_ALBUMS_PATH/$VK_API_GROUP_ID +vkFileName=`ls $vkPath -Art | tail -1` +vkFilePath=$vkPath/$vkFileName + +# Load whitelist +readarray -t whitelist < "$ROOT_DIR/vk/whitelist" + +# Filter items by whitelist +readarray items < <(yq -o=j -I=0 ".items[]" $evoFilePath) + +for item in "${items[@]}"; do + evoTitle=`echo $item | yq .name` + # Check if group is whitelisted + if [[ ! " ${whitelist[@]} " =~ " ${evoTitle} " ]]; then + continue + fi + found=`evoTitle="$evoTitle" yq '.response.items[] | select(.title==strenv(evoTitle))' $vkFilePath` + if [[ ! -n "$found" ]]; then + echo "$(timestamp) [REQUEST] Creating album: $evoTitle" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F owner_id=$VK_API_PARAM_OWNER_ID \ + -F title="$evoTitle" \ + $VK_API_ADD_ALBUM) + http_code=${response: -3} + response_body=${response:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + fi +done + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/run/vk/send-products.sh b/run/vk/send-products.sh new file mode 100755 index 0000000..f89ea56 --- /dev/null +++ b/run/vk/send-products.sh @@ -0,0 +1,257 @@ +#!/usr/bin/env bash + +# Rename to better reflect purpose - only applied to weight measures (г, г., грамм, etc) +WEIGHT_PRICE_MULTIPLIER=${WEIGHT_PRICE_MULTIPLIER:-10} + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/constants.sh +source $ROOT_DIR/run/evo/constants.sh +source $SCRIPT_DIR/functions.sh + +# Setup logging +setup_logging + +# Trap signals to ensure proper cleanup +trap 'cleanup 1' HUP INT QUIT TERM + +# Function to check if a measure is a weight measure +is_weight_measure() { + local measure="$1" + # Convert to lowercase for case-insensitive comparison + local measure_lower=$(echo "$measure" | tr '[:upper:]' '[:lower:]') + + # Check for various weight measure formats + if [[ "$measure_lower" == "г" || + "$measure_lower" == "г." || + "$measure_lower" == "грамм" || + "$measure_lower" == "граммов" || + "$measure_lower" == "гр" || + "$measure_lower" == "гр." ]]; then + return 0 # True - it is a weight measure + else + return 1 # False - it is not a weight measure + fi +} + +function uploadPhoto() { + getUploadPhotoResp=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + "$VK_API_GET_PHOTO_UPLOAD_URL&group_id=$VK_API_GROUP_ID") + http_code=${getUploadPhotoResp: -3} + response_body=${getUploadPhotoResp:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + + # Check if the first request was successful + if [[ "$http_code" != "200" ]]; then + echo "$(timestamp) [ERROR] Failed to get photo upload URL" >> "$LOG_FILE" + return 1 + fi + + uploadPhotoUrl=`echo $response_body | yq -pj '.response.upload_url'` + uploadPhotoObj=`curl -s -X POST --header "Content-Type: $VK_API_CONTENT_TYPE_MULTIPART" $uploadPhotoUrl -F "file=@$VK_API_PHOTO_PATH"` + uploadPhotoResp=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F upload_response=$uploadPhotoObj \ + -F v=$VK_API_VERSION \ + $VK_API_UPLOAD_PHOTO_URL) + http_code=${uploadPhotoResp: -3} + response_body=${uploadPhotoResp:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + + # Check if the second request was successful + if [[ "$http_code" != "200" ]]; then + echo "$(timestamp) [ERROR] Failed to upload photo" >> "$LOG_FILE" + return 1 + fi + + # Extract and return the photo ID - update to use the correct JSON path + local photoId=$(echo "$response_body" | yq -pj '.response.photo_id') + echo "$(timestamp) [INFO] Uploaded photo with ID: $photoId" >> "$LOG_FILE" + echo $photoId +} + +evoPath=$EVO_PRODUCTS_PATH/$EVO_API_STORE_ID +evoFileName=`ls $evoPath -Art | tail -1` +evoFilePath=$evoPath/$evoFileName +evoGroupsPath=$EVO_GROUPS_PATH/$EVO_API_STORE_ID +evoGroupsFileName=`ls $evoGroupsPath -Art | tail -1` +evoGroupsFilePath=$evoGroupsPath/$evoGroupsFileName +vkPath=$VK_PRODUCTS_PATH/$VK_API_GROUP_ID +vkFileName=`ls $vkPath -Art | tail -1` +vkFilePath=$vkPath/$vkFileName +vkAlbumPath=$VK_ALBUMS_PATH/$VK_API_GROUP_ID +vkAlbumFileName=`ls $vkAlbumPath -Art | tail -1` +vkAlbumFilePath=$vkAlbumPath/$vkAlbumFileName + +# Load whitelist +readarray -t whitelist < "$ROOT_DIR/vk/whitelist" + +readarray items < <(yq -o=j -I=0 '.items[]' $evoFilePath ) +for item in "${items[@]}"; do + evoTitle=`echo $item | yq .name` + evoGroupId=`echo $item | yq .parent_id` + evoGroupName=`evoGroupId="$evoGroupId" yq -r '.items[] | select(.id==strenv(evoGroupId)) | .name' $evoGroupsFilePath` + # Check if group is whitelisted + if [[ ! " ${whitelist[@]} " =~ " ${evoGroupName} " ]]; then + continue + fi + vkAlbumId=`albumName="$evoGroupName" yq '.response.items[] | select(.title==strenv(albumName)) | .id' $vkAlbumFilePath` + name=`echo $item | yq .name | xargs` + + # Replace semicolons with commas for VK API compatibility + name_for_vk="${name//;/,}" + + measure=`echo $item | yq .measure_name` + + # Calculate price based on measure type + base_price=$(echo $item | yq .price) + if is_weight_measure "$measure"; then + # Apply multiplier for weight measures + price=$((base_price * WEIGHT_PRICE_MULTIPLIER)) + price_info="${WEIGHT_PRICE_MULTIPLIER}$measure" + else + # No multiplier for non-weight measures + price=$base_price + price_info="$measure" + fi + + quantity=`echo $item | yq .quantity` + allow_to_sell=`echo $item | yq .allow_to_sell` + + # Set stock amount based on allow_to_sell flag + if [[ "$allow_to_sell" = "true" ]]; then + stock_amount=$VK_STOCK_AMOUNT + else + stock_amount=0 + fi + + desc="$name (цена за ${price_info}.) + +" + description=$(echo $item | yq '.description // ""') + if [[ -n "$description" ]]; then + desc+="$description" + fi + article=`echo $item | yq .article_number` + found=0 + readarray vkItems < <(yq -o=j -I=0 '.response.items[]' $vkFilePath ) + for vkItem in "${vkItems[@]}"; do + vkTitle=`echo $vkItem | yq .title` + vkTitleTrimmed="$(echo "$vkTitle" | xargs)" + evoTitleTrimmed="$(echo "$evoTitle" | xargs)" + + # For comparison, transform EVO title the same way (replace ; with ,) + evoTitleForVk="${evoTitleTrimmed//;/,}" + + if [[ "$vkTitleTrimmed" = "$evoTitleForVk" ]]; then + found=1 + originalName=$(echo "$vkItem" | yq .title | xargs) + originalDesc=$(echo "$vkItem" | yq .description | xargs) + originalPrice=$(echo "$vkItem" | yq .price.amount) + originalPrice=$((originalPrice / 100)) + originalArticle=$(echo "$vkItem" | yq .sku | xargs) + originalStockAmount=$(echo "$vkItem" | yq .stock_amount) + + # Debug output to log file + echo "$(timestamp) [DEBUG] name='$name' originalName='$originalName'" >> "$LOG_FILE" + echo "$(timestamp) [DEBUG] desc='$desc' originalDesc='$originalDesc'" >> "$LOG_FILE" + echo "$(timestamp) [DEBUG] price='$price' originalPrice='$originalPrice'" >> "$LOG_FILE" + echo "$(timestamp) [DEBUG] stock_amount='$stock_amount' allow_to_sell='$allow_to_sell'" >> "$LOG_FILE" + + # Normalize descriptions more carefully to maintain proper spacing + # Replace newlines with spaces first, then normalize spaces and trim + normalized_desc=$(echo "$desc" | sed 's/\n/ /g' | tr -s ' ' | xargs) + normalized_orig_desc=$(echo "$originalDesc" | sed 's/\n/ /g' | tr -s ' ' | xargs) + + # Apply semicolon-to-comma transformation for consistent comparison + normalized_desc="${normalized_desc//;/,}" + normalized_orig_desc="${normalized_orig_desc//;/,}" + + # Check for changes + if [[ "$(echo "$name_for_vk" | xargs)" != "$originalName" ]]; then + name_changed="true" + else + name_changed="false" + fi + + if [[ "$price" != "$originalPrice" ]]; then + price_changed="true" + else + price_changed="false" + fi + + if [[ "$normalized_desc" != "$normalized_orig_desc" ]]; then + desc_changed="true" + else + desc_changed="false" + fi + + if [[ "$stock_amount" != "$originalStockAmount" ]]; then + stock_changed="true" + else + stock_changed="false" + fi + + # Check if update is needed + if [[ "$name_changed" == "true" || "$price_changed" == "true" || "$desc_changed" == "true" || "$stock_changed" == "true" ]]; then + productId=$(echo "$vkItem" | yq .id) + echo "$(timestamp) [REQUEST] Updating product: $name_for_vk (name_changed=$name_changed, price_changed=$price_changed, desc_changed=$desc_changed, stock_changed=$stock_changed)" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F owner_id="$VK_API_PARAM_OWNER_ID" \ + -F item_id=$productId \ + -F name="$name_for_vk" \ + -F description="$normalized_desc" \ + -F category_id=$VK_API_CATEGORY_ID \ + -F price="$price" \ + -F stock_amount="$stock_amount" \ + $VK_API_EDIT_PRODUCT) + http_code=${response: -3} + response_body=${response:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + fi + fi + done + if [[ "$found" = 0 ]] && [[ "$allow_to_sell" = "true" ]] ; then + photoId=$(uploadPhoto) + + # Check if photo upload was successful + if [[ -z "$photoId" || "$photoId" == "null" ]]; then + echo "$(timestamp) [ERROR] Failed to get valid photo ID, skipping product: $name" >> "$LOG_FILE" + continue + fi + + echo "$(timestamp) [REQUEST] Creating product: $name_for_vk" >> "$LOG_FILE" + response=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + -F owner_id=$VK_API_PARAM_OWNER_ID \ + -F name="$name_for_vk" \ + -F description="$desc" \ + -F category_id=$VK_API_CATEGORY_ID \ + -F price=$price \ + -F main_photo_id=$photoId \ + -F stock_amount="$stock_amount" \ + $VK_API_ADD_PRODUCT) + http_code=${response: -3} + response_body=${response:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + + # Check if product creation was successful + if [[ "$http_code" != "200" ]] || [[ $(echo $response_body | grep -c "error") -gt 0 ]]; then + echo "$(timestamp) [ERROR] Failed to create product: $name" >> "$LOG_FILE" + continue + fi + + productId=$(echo $response_body | yq .response.market_item_id) + + # Only proceed if we got a valid product ID + if [[ -n "$productId" && "$productId" != "null" ]]; then + resp=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $VK_API_USER_TOKEN" \ + "$VK_API_ADD_PRODUCT_TO_ALBUM&owner_id=$VK_API_PARAM_OWNER_ID&item_ids=$productId&album_ids=$vkAlbumId") + http_code=${resp: -3} + response_body=${resp:0:-3} + echo "$(timestamp) [RESPONSE] code=$http_code body=$response_body" >> "$LOG_FILE" + else + echo "$(timestamp) [ERROR] Invalid product ID, skipping album addition for: $name" >> "$LOG_FILE" + fi + fi +done + +# Use the cleanup function instead of directly exiting +cleanup 0 diff --git a/version b/version new file mode 100644 index 0000000..0a182f2 --- /dev/null +++ b/version @@ -0,0 +1 @@ +1.7.2 \ No newline at end of file diff --git a/vk/whitelist-old b/vk/whitelist-old new file mode 100644 index 0000000..f463ff2 --- /dev/null +++ b/vk/whitelist-old @@ -0,0 +1,10 @@ +Белый +Желтый +Зеленый +Красный +Улуны светлые +Улуны тёмные +Чай с добавками +Чёрный +Шупуэр +Шэнпуэр \ No newline at end of file