Versión con los movimientos de spot de 2005

Versión con todos los meses de 2025
This commit is contained in:
2025-06-15 14:37:36 +02:00
parent d40f1c7c93
commit 80ed619475

View File

@ -5,34 +5,79 @@ API_KEY="bg_28730a088b4b71c307ed5773b84d8267"
API_SECRET="f7e4872f828c99612df009c3641421fc41d9dfb9cfc56dce3311fdaae70f5b29" API_SECRET="f7e4872f828c99612df009c3641421fc41d9dfb9cfc56dce3311fdaae70f5b29"
PASSPHRASE="cQTVzepB6KuFWgWLgCpB6kW84iiqJr3u" PASSPHRASE="cQTVzepB6KuFWgWLgCpB6kW84iiqJr3u"
# === ENDPOINT Y PARÁMETROS === # === ENDPOINT ===
METHOD="GET" METHOD="GET"
BASE_URL="https://api.bitget.com" BASE_URL="https://api.bitget.com"
ENDPOINT="/api/v2/tax/spot-record" ENDPOINT="/api/v2/tax/spot-record"
# Rango de tiempo: del 1 al 30 de enero de 2025 (máx. permitido) # === ARCHIVO SALIDA ===
START_TIME="1735689600000" # 2025-01-01 00:00:00 UTC OUTPUT_FILE="spot-record-2025.csv"
END_TIME="1738272000000" # 2025-01-31 00:00:00 UTC > "$OUTPUT_FILE"
LIMIT="100"
QUERY_STRING="startTime=${START_TIME}&endTime=${END_TIME}&limit=${LIMIT}" # === CABECERA CSV ===
FULL_URL="${BASE_URL}${ENDPOINT}?${QUERY_STRING}" echo '"id","coin","spotTaxType","amount","fee","balance","ts","fecha_gmt1","bizOrderId"' > "$OUTPUT_FILE"
# === TIMESTAMP oficial desde Bitget === # === FUNCIONES ===
TIMESTAMP=$(curl -s https://api.bitget.com/api/v2/public/time | jq -r '.data.serverTime') function timestamp() {
date -u -j -f "%Y-%m-%d" "$1" +"%s"
}
# === STRING A FIRMAR === function build_request() {
PREHASH="${TIMESTAMP}${METHOD}${ENDPOINT}?${QUERY_STRING}" local START_TS_MS="$1"
local END_TS_MS="$2"
local LIMIT=100
local QUERY_STRING="startTime=${START_TS_MS}&endTime=${END_TS_MS}&limit=${LIMIT}"
local FULL_URL="${BASE_URL}${ENDPOINT}?${QUERY_STRING}"
# === FIRMA BASE64 === local TIMESTAMP=$(curl -s https://api.bitget.com/api/v2/public/time | jq -r '.data.serverTime')
SIGNATURE=$(echo -n "${PREHASH}" | openssl dgst -sha256 -hmac "${API_SECRET}" -binary | base64) local PREHASH="${TIMESTAMP}${METHOD}${ENDPOINT}?${QUERY_STRING}"
local SIGNATURE=$(echo -n "${PREHASH}" | openssl dgst -sha256 -hmac "${API_SECRET}" -binary | base64)
# === PETICIÓN FIRMADA === curl -s "${FULL_URL}" \
curl -s "${FULL_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-H "locale: en-US" \ -H "locale: en-US"
| jq . }
# === BUCLE POR BLOQUES DE 30 DÍAS ===
START_DATE="2025-01-01"
END_DATE="2026-01-01"
CURRENT_DATE="$START_DATE"
while [[ "$CURRENT_DATE" < "$END_DATE" ]]; do
NEXT_DATE=$(date -j -v+30d -f "%Y-%m-%d" "$CURRENT_DATE" +"%Y-%m-%d")
START_MS=$(($(timestamp "$CURRENT_DATE") * 1000))
END_MS=$(($(timestamp "$NEXT_DATE") * 1000))
echo "🔄 Consultando de $CURRENT_DATE a $NEXT_DATE..."
RESPONSE=$(build_request "$START_MS" "$END_MS")
echo "$RESPONSE" | jq -r '
if .code == "00000" and (.data | length > 0) then
.data[] | [
.id,
.coin,
.spotTaxType,
.amount,
.fee,
.balance,
.ts,
(.ts|tonumber/1000 | strflocaltime("%Y-%m-%d %H:%M:%S +0100")),
.bizOrderId
] | @csv
else
empty
end
' >> "$OUTPUT_FILE"
sleep 2
CURRENT_DATE="$NEXT_DATE"
done
echo "✅ Exportado como $OUTPUT_FILE"