81 lines
2.2 KiB
Bash
Executable File
81 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# === CONFIGURACIÓN: Tus credenciales ===
|
|
API_KEY="bg_28730a088b4b71c307ed5773b84d8267"
|
|
API_SECRET="f7e4872f828c99612df009c3641421fc41d9dfb9cfc56dce3311fdaae70f5b29"
|
|
PASSPHRASE="cQTVzepB6KuFWgWLgCpB6kW84iiqJr3u"
|
|
|
|
# === ENDPOINT ===
|
|
METHOD="GET"
|
|
BASE_URL="https://api.bitget.com"
|
|
ENDPOINT="/api/v2/tax/margin-record"
|
|
|
|
# === ARCHIVO SALIDA ===
|
|
OUTPUT_FILE="margin-record-2025.csv"
|
|
> "$OUTPUT_FILE"
|
|
|
|
# === CABECERA CSV ===
|
|
echo '"id","coin","marginTaxType","amount","fee","balance","ts","fecha_gmt1"' > "$OUTPUT_FILE"
|
|
|
|
# === FUNCIONES ===
|
|
function timestamp() {
|
|
date -u -j -f "%Y-%m-%d" "$1" +"%s"
|
|
}
|
|
|
|
function build_request() {
|
|
local START_TS_MS="$1"
|
|
local END_TS_MS="$2"
|
|
local LIMIT=500
|
|
local QUERY_STRING="startTime=${START_TS_MS}&endTime=${END_TS_MS}&limit=${LIMIT}"
|
|
local FULL_URL="${BASE_URL}${ENDPOINT}?${QUERY_STRING}"
|
|
|
|
local TIMESTAMP=$(curl -s https://api.bitget.com/api/v2/public/time | jq -r '.data.serverTime')
|
|
local PREHASH="${TIMESTAMP}${METHOD}${ENDPOINT}?${QUERY_STRING}"
|
|
local SIGNATURE=$(echo -n "${PREHASH}" | openssl dgst -sha256 -hmac "${API_SECRET}" -binary | base64)
|
|
|
|
curl -s "${FULL_URL}" \
|
|
-H "ACCESS-KEY: ${API_KEY}" \
|
|
-H "ACCESS-SIGN: ${SIGNATURE}" \
|
|
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
|
|
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
|
|
-H "Content-Type: application/json" \
|
|
-H "locale: en-US"
|
|
}
|
|
|
|
# === 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,
|
|
.marginTaxType,
|
|
.amount,
|
|
.fee,
|
|
.balance,
|
|
.ts,
|
|
(.ts|tonumber/1000 | strflocaltime("%Y-%m-%d %H:%M:%S +0100"))
|
|
] | @csv
|
|
else
|
|
empty
|
|
end
|
|
' >> "$OUTPUT_FILE"
|
|
|
|
sleep 2
|
|
CURRENT_DATE="$NEXT_DATE"
|
|
done
|
|
|
|
echo "✅ Exportado como $OUTPUT_FILE" |