[Bash] Kufar.by Unread Messages

Аналогичный клиент для Kufar.by только на bash.

Bash:
#!/bin/bash

TOKEN=""

URL="https://api.kufar.by/messaging-api/v3/conversations?limit=10&offset=0"

HEADERS=(
    -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0"
    -H "Authorization: Bearer $TOKEN"
    -H "X-App-Name: Web Kufar"
    -H "Content-Type: application/json"
    -H "Origin: https://www.kufar.by"
)

format_date() {
    date -d "${1/Z/+00:00}" "+%d.%m.%Y %H:%M" 2>/dev/null || echo "$1"
}

while true; do

    clear

    echo "[$(date '+%H:%M:%S')] Проверка непрочитанных сообщений..."

    response=$(curl -s "${HEADERS[@]}" "$URL")

    if [ -z "$response" ]; then
        echo "Ошибка: пустой ответ от сервера"
        sleep 60
        continue
    fi

    conversations=$(echo "$response" | jq -c '.conversations[] | select(.unseen > 0)')
    count=$(echo "$conversations" | jq -s length 2>/dev/null)

    if [ "$count" -gt 0 ]; then
        echo
        echo "НОВЫЕ НЕПРОЧИТАННЫЕ СООБЩЕНИЯ:"
        echo "================================"

        while IFS= read -r conv; do
            ad_subject=$(echo "$conv" | jq -r '.ad_info.subject')
            participant_name=$(echo "$conv" | jq -r '.participant_info.name')
            last_msg_preview=$(echo "$conv" | jq -r '.last_message.preview')
            last_msg_time_iso=$(echo "$conv" | jq -r '.last_message.timestamp')
            last_msg_time=$(format_date "$last_msg_time_iso")
            unseen_count=$(echo "$conv" | jq -r '.unseen')
            ad_link=$(echo "$conv" | jq -r '.ad_info.link')

            echo
            echo "Объявление: $ad_subject"
            echo "От: $participant_name"
            echo "Сообщение: $last_msg_preview"
            echo "Дата: $last_msg_time"
            echo "Непрочитанных: $unseen_count"
            echo "Ссылка: $ad_link"
            echo "--------------------------------"
        done <<< "$conversations"

    else
        echo
        echo "Нет новых непрочитанных сообщений."
    fi

    sleep 60
done
 
Назад
Сверху